Transportasi database PostgreSQL antara dua instans Amazon RDS DB menggunakan pg_transport - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Transportasi database PostgreSQL antara dua instans Amazon RDS DB menggunakan pg_transport

Raunak Rishabh dan Jitender Kumar, Amazon Web Services

Ringkasan

Pola ini menjelaskan langkah-langkah untuk memigrasikan database yang sangat besar antara dua Amazon Relational Database Service (Amazon RDS) untuk instance PostgreSQL DB dengan menggunakan ekstensi pg_transport. Ekstensi ini memberikan mekanisme transportasi fisik untuk memindahkan setiap basis data. Dengan streaming file database dengan pemrosesan minimal, ini menyediakan metode yang sangat cepat untuk memigrasikan database besar antara instans DB dengan waktu henti minimal. Ekstensi ini menggunakan model tarik di mana instans DB target mengimpor database dari instance DB sumber.

Prasyarat dan batasan

Prasyarat

  • Kedua instans DB harus menjalankan versi utama PostgreSQL yang sama.

  • Database tidak boleh ada pada target. Jika tidak, transportasi gagal.

  • Tidak ada ekstensi selain pg_transport yang harus diaktifkan di database sumber.

  • Semua objek database sumber harus dalam default pg_default tablespace.

  • Grup keamanan instans DB sumber harus mengizinkan lalu lintas dari instans DB target.

  • Instal klien PostgreSQL seperti psql PgAdminatau untuk bekerja dengan instans Amazon RDS PostgreSQL DB. Anda dapat menginstal klien baik di sistem lokal Anda atau menggunakan instans Amazon Elastic Compute Cloud (Amazon EC2). Dalam pola ini, kita menggunakan psql pada sebuah EC2 instance.

Batasan

  • Anda tidak dapat mengangkut database antara berbagai versi utama Amazon RDS for PostgreSQL.

  • Hak akses dan kepemilikan dari database sumber tidak ditransfer ke database target.

  • Anda tidak dapat mengangkut database pada replika baca atau pada instance induk dari replika baca.

  • Anda tidak dapat menggunakan tipe data reg dalam tabel database apa pun yang Anda rencanakan untuk diangkut dengan metode ini.

  • Anda dapat menjalankan hingga 32 total transportasi (termasuk impor dan ekspor) secara bersamaan pada instans DB.

  • Anda tidak dapat mengganti nama atau include/exclude tabel. Semuanya bermigrasi apa adanya.

Perhatian

  • Buat cadangan sebelum menghapus ekstensi, karena menghapus ekstensi juga menghapus objek dependen dan beberapa data yang penting untuk pengoperasian database.

  • Pertimbangkan kelas instance dan proses yang berjalan pada database lain pada instance sumber saat Anda menentukan jumlah pekerja dan work_mem nilai untuk pg_transport.

  • Ketika transport dimulai, semua koneksi pada database sumber berakhir dan database dimasukkan ke dalam mode read-only.

catatan

Ketika transport berjalan pada satu database, itu tidak mempengaruhi database lain di server yang sama.

Versi produk

Arsitektur

Mengangkut database PostgreSQL antara instans Amazon RDS DB

Alat

  • pg_transport menyediakan mekanisme transportasi fisik untuk memindahkan setiap database. Dengan streaming file database dengan pemrosesan minimal, transportasi fisik memindahkan data jauh lebih cepat daripada proses dump dan load tradisional dan membutuhkan waktu henti minimal. Basis data PostgreSQL yang dapat diangkut menggunakan model tarik yaitu instans DB tujuan mengimpor basis data dari instans DB sumber. Anda menginstal ekstensi ini pada instans DB Anda ketika Anda menyiapkan sumber dan lingkungan target, seperti yang dijelaskan dalam pola ini.

  • psql memungkinkan Anda untuk terhubung ke, dan bekerja dengan, instans PostgreSQL DB Anda. Untuk menginstal psql pada sistem Anda, lihat halaman PostgreSQL Downloads.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat grup parameter untuk sistem target.

Tentukan nama grup yang mengidentifikasinya sebagai kelompok parameter target; misalnya,pgtarget-param-group. Untuk petunjuk, lihat dokumentasi Amazon RDS.

DBA

Ubah parameter untuk grup parameter.

Atur parameter berikut:

  1. Tambahkan pg_transport ke shared_preload_libraries parameter.

    shared_preload_libraries = pg_stat_statements, pg_transport
  2. Atur parameter pg_transport.num_workers. Pilih jumlah pekerja yang ingin Anda gunakan untuk menjalankan transportasi. Nilai yang Anda tetapkan menentukan jumlah transport.send_file pekerja yang akan dibuat di sumber.

  3. Tingkatkan nilai max_worker_processes menjadi lebih dari tiga kali nilaipg_transport.num_workers. Misalnya, jika Anda menetapkan nilai pg_transport.num_workers ke 4, max_worker_processes nilainya harus setidaknya 13. Jika ini gagal, pg_transport merekomendasikan nilai minimum. 

  4. Setel pg_transport.timing ke 1. Pengaturan ini memungkinkan pelaporan informasi waktu selama transportasi.

  5. Atur parameter pg_transport.work_mem. Parameter ini menentukan memori maksimum untuk mengalokasikan untuk setiap pekerja. Nilai default adalah 128 MB.

Untuk informasi selengkapnya tentang parameter ini, lihat dokumentasi Amazon RDS.

DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Buat grup parameter untuk sistem sumber.

Tentukan nama grup yang mengidentifikasinya sebagai grup parameter sumber; misalnya,pgsource-param-group. Untuk petunjuk, lihat dokumentasi Amazon RDS.

DBA

Ubah parameter untuk grup parameter.

Atur parameter berikut:

  1. Tambahkan pg_transport ke shared_preload_libraries parameter.

    shared_preload_libraries = pg_stat_statements, pg_transport
  2. Atur parameter pg_transport.num_workers. Nilai parameter ini yang ditentukan dalam target menentukan jumlah transport.send_file pekerja yang akan digunakan. Jika Anda memiliki impor yang berjalan pada instance ini, tingkatkan nilai ini, tetapi pertimbangkan jumlah pekerja yang sudah berjalan.

  3. Tingkatkan nilai max_worker_processes menjadi lebih dari tiga kali nilai pg_transport.num_workers pada target. Misalnya, jika Anda menetapkan nilai pg_transport.num_workers ke 4 pada target, max_worker_processes nilai pada sumber harus setidaknya 13. Jika ini gagal, pg_transport merekomendasikan nilai minimum. 

  4. Atur parameter pg_transport.work_mem. Parameter ini menentukan memori maksimum untuk mengalokasikan untuk setiap pekerja. Nilai default adalah 128 MB.

Untuk informasi selengkapnya tentang parameter ini, lihat dokumentasi Amazon RDS.

DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Buat instans Amazon RDS for PostgreSQL DB baru untuk mengangkut database sumber Anda.

Tentukan kelas instance dan versi PostgreSQL berdasarkan kebutuhan bisnis Anda.

DBA, Administrator sistem, Arsitek basis data

Ubah grup keamanan target untuk memungkinkan koneksi pada port instans DB dari EC2 instance.

Secara default, port untuk instance PostgreSQL adalah 5432. Jika Anda menggunakan port lain, koneksi ke port itu harus terbuka untuk EC2 instance tersebut.

DBA, Administrator sistem

Ubah instance, dan tetapkan grup parameter target baru.

Misalnya, pgtarget-param-group.

DBA

Mulai ulang instans DB Amazon RDS target.

Parameter shared_preload_libraries dan max_worker_processes parameter statis dan memerlukan reboot dari instance.

DBA, Administrator sistem

Connect ke database dari EC2 instance menggunakan psql.

Gunakan perintah: 

psql -h <rds_end_point> -p PORT -U username -d database -W
DBA

Buat ekstensi pg_transport.

Jalankan kueri berikut sebagai pengguna dengan rds_superuser peran:

create extension pg_transport;
DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Ubah grup keamanan sumber untuk mengizinkan koneksi pada port instans DB dari instans Amazon dan menargetkan EC2 instans DB

Secara default, port untuk instance PostgreSQL adalah 5432. Jika Anda menggunakan port lain, koneksi ke port itu harus terbuka untuk EC2 instance tersebut.

DBA, Administrator sistem

Ubah instance dan tetapkan grup parameter sumber baru.

Misalnya, pgsource-param-group.

DBA

Mulai ulang instans DB Amazon RDS sumber.

Parameter shared_preload_libraries dan max_worker_processes parameter statis dan memerlukan reboot dari instance.

DBA

Connect ke database dari EC2 instance menggunakan psql.

Gunakan perintah: 

psql -h <rds_end_point> -p PORT -U username -d database -W
DBA

Buat ekstensi pg_transport dan hapus semua ekstensi lain dari database yang akan diangkut.

Transport akan gagal jika ada ekstensi selain pg_transport yang diinstal pada database sumber. Perintah ini harus dijalankan oleh pengguna dengan rds_superuser peran.

DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Lakukan lari kering.

Gunakan transport.import_from_server fungsi untuk melakukan dry run terlebih dahulu:

SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', 'true');

Parameter terakhir dari fungsi ini (diatur ketrue) mendefinisikan dry run.

Fungsi ini menampilkan kesalahan apa pun yang akan Anda lihat ketika Anda menjalankan transportasi utama. Selesaikan kesalahan sebelum Anda menjalankan transportasi utama.

DBA

Jika dry run berhasil, memulai transportasi database.

Jalankan transport.import_from_server fungsi untuk melakukan transportasi. Ini terhubung ke sumber dan mengimpor data. 

SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);

Parameter terakhir dari fungsi ini (set tofalse) menunjukkan bahwa ini bukan dry run.

DBA

Lakukan langkah pasca-transportasi.

Setelah transportasi database selesai:

  • Validasi data di lingkungan target.

  • Tambahkan semua peran dan izin ke target.

  • Aktifkan semua ekstensi yang diperlukan di target dan sumber, jika diperlukan.

  • Kembalikan nilai max_worker_processes parameter.

DBA

Sumber daya terkait