Topik ini menjelaskan cara memigrasikan data dari database PostgreSQL yang dikelola sendiri ke kluster PolarDB for PostgreSQL menggunakan perintah pg_dumpall, pg_dump, dan pg_restore.
Untuk migrasi data dari instance ApsaraDB RDS for PostgreSQL ke kluster PolarDB for PostgreSQL, lihat Migrasi Data dari Instance ApsaraDB RDS for PostgreSQL ke Kluster PolarDB for PostgreSQL.
Prasyarat
Ruang penyimpanan yang tersedia di kluster PolarDB for PostgreSQL harus lebih besar daripada ruang penyimpanan pada database PostgreSQL yang dikelola sendiri.
Catatan penggunaan
Seluruh data dipindahkan dalam prosedur ini. Untuk mencegah ketidaksesuaian data sebelum dan sesudah migrasi, hentikan aktivitas bisnis dan jangan menulis data ke database PostgreSQL yang dikelola sendiri selama proses migrasi.
Persiapan
Buat instance Elastic Compute Service (ECS) Linux. Contoh ini menggunakan instance ECS dengan Ubuntu 16.04 64-bit. Untuk informasi lebih lanjut, lihat Membuat Instance ECS.
CatatanInstance ECS dan tujuan kluster PolarDB for PostgreSQL harus berada dalam virtual private cloud (VPC) yang sama.
Anda dapat membuat instance ECS dengan model bayar sesuai pemakaian dan melepaskannya setelah migrasi selesai.
Instal klien PostgreSQL pada instance Linux ECS untuk menjalankan perintah restorasi data. Untuk informasi lebih lanjut, lihat Dokumentasi Resmi PostgreSQL.
CatatanPastikan versi klien PostgreSQL yang diinstal sesuai dengan versi database PostgreSQL sumber.
Langkah 1: Cadangkan database PostgreSQL yang dikelola sendiri
Seluruh data dipindahkan dalam prosedur ini. Untuk mencegah ketidaksesuaian data sebelum dan sesudah migrasi, hentikan aktivitas bisnis dan jangan menulis data ke database PostgreSQL yang dikelola sendiri selama proses migrasi.
Jalankan perintah berikut pada server tempat database yang dikelola sendiri berada untuk mencadangkan semua informasi peran di dalam database.
pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>Parameter:
<username>: akun yang digunakan untuk masuk ke database PostgreSQL yang dikelola sendiri.
<hostname>: titik akhir database PostgreSQL yang dikelola sendiri. Jika database berada di server tempat Anda menjalankan perintah, gunakan localhost.
<port>: nomor port layanan database.
<filename>: nama file cadangan yang dihasilkan.
Contoh:
pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sqlKetika prompt
Password:ditampilkan, masukkan kata sandi database untuk memulai proses pencadangan.Jalankan perintah
vimuntuk menggantiSUPERUSERdi dalam file cadangan informasi peran denganpolar_superuser.CatatanJika file cadangan informasi peran tidak berisi informasi
SUPERUSER, Anda dapat melewati langkah ini.
Jalankan perintah berikut pada server tempat database yang dikelola sendiri berada untuk mencadangkan data dari database PostgreSQL yang dikelola sendiri.
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>Parameter:
<username>: akun yang digunakan untuk masuk ke database PostgreSQL yang dikelola sendiri.
<hostname>: titik akhir database PostgreSQL yang dikelola sendiri. Jika database berada di server tempat Anda menjalankan perintah, gunakan localhost.
<port>: nomor port layanan database.
<dbname>: nama database yang ingin Anda cadangkan datanya.
<njobs>: jumlah pekerjaan pencadangan bersamaan.
CatatanPekerjaan pencadangan bersamaan dapat mengurangi waktu yang dibutuhkan untuk mencadangkan data tetapi meningkatkan beban pada server database.
Jika database PostgreSQL yang dikelola sendiri lebih awal dari versi 9.2, Anda harus menentukan parameter
--no-synchronized-snapshots.
<dumpdir>: direktori file cadangan yang dihasilkan.
Contoh:
pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdumpKetika prompt
Password:ditampilkan, masukkan kata sandi database untuk memulai proses pencadangan.Data di dalam instance PostgreSQL yang dikelola sendiri dicadangkan ke direktori yang ditentukan. Dalam contoh ini, data disimpan di direktori postgresdump.
Langkah 2: Migrasikan data ke kluster PolarDB for PostgreSQL
Unggah direktori yang berisi file cadangan ke instance ECS.
CatatanFile cadangan mencakup file cadangan informasi peran dan file cadangan database.
Jalankan perintah berikut pada instance ECS untuk memigrasikan informasi peran di dalam file cadangan informasi peran ke kluster PolarDB for PostgreSQL:
psql -U <username> -h <hostname> -p <port> -d <dbname> -f <filename>Parameter:
<username>: akun yang digunakan untuk masuk ke kluster PolarDB for PostgreSQL.
<hostname>: titik akhir privat utama kluster PolarDB for PostgreSQL.
<port>: nomor port layanan database. Untuk informasi lebih lanjut, lihat Lihat Titik Akhir dan Nomor Port.
<dbname>: nama database ke mana Anda ingin merestorasi data.
<filename>: nama file cadangan informasi peran.
psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sqlKetika prompt
Password:ditampilkan, masukkan kata sandi database untuk memulai migrasi data.Jalankan perintah berikut pada instance ECS untuk memigrasikan data dari database sumber ke kluster PolarDB for PostgreSQL.
pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>Parameter:
<username>: akun yang digunakan untuk masuk ke kluster PolarDB for PostgreSQL.
<hostname>: titik akhir privat utama kluster PolarDB for PostgreSQL. Untuk informasi lebih lanjut, lihat Lihat atau Ajukan Permintaan Titik Akhir.
<port>: nomor port layanan database. Untuk informasi lebih lanjut, lihat Lihat Titik Akhir dan Nomor Port.
<dbname>: nama database tujuan ke mana Anda ingin merestorasi data.
CatatanDatabase tujuan harus tersedia. Jika tidak tersedia, buat database di kluster tujuan.
<njobs>: jumlah pekerjaan restorasi data bersamaan.
CatatanPekerjaan restorasi data bersamaan dapat mengurangi waktu yang dibutuhkan untuk merestorasi data tetapi meningkatkan beban pada server database.
<dumpdir>: direktori tempat file cadangan berada.
Contoh:
pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d mytestdata -j 6 postgresdumpKetika prompt
Password:ditampilkan, masukkan kata sandi untuk memulai migrasi data.CatatanJika Anda lupa kata sandi database, lihat Kelola Akun Database.
Tunggu hingga migrasi data selesai.