Menggunakan replikasi SQL logis Postgre dengan Aurora - Amazon Aurora

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

Menggunakan replikasi SQL logis Postgre dengan Aurora

Dengan menggunakan fitur replikasi logis Postgre SQL dengan cluster SQL DB Aurora Postgre Anda, Anda dapat mereplikasi dan menyinkronkan tabel individual daripada seluruh instance database. Replikasi logis menggunakan model penerbit dan berlangganan untuk mereplikasi perubahan dari sumber ke satu atau lebih penerima. Ia bekerja dengan menggunakan catatan perubahan dari Postgre SQL write-ahead log (). WAL Sumber, atau penerbit, mengirimkan WAL data untuk tabel yang ditentukan ke satu atau lebih penerima (pelanggan), sehingga mereplikasi perubahan dan menjaga tabel pelanggan disinkronkan dengan tabel penerbit. Kumpulan perubahan dari penerbit diidentifikasi menggunakan publikasi. Pelanggan mendapatkan perubahan dengan membuat langganan yang mendefinisikan koneksi ke basis data penerbit dan publikasinya. Slot replikasi adalah mekanisme yang digunakan dalam skema ini untuk melacak progres langganan.

Untuk cluster Aurora Postgre SQL DB, catatan WAL disimpan di penyimpanan Aurora. Cluster Aurora Postgre SQL DB yang bertindak sebagai penerbit dalam skenario replikasi logis membaca data WAL dari penyimpanan Aurora, menerjemahkannya, dan mengirimkannya ke pelanggan sehingga perubahan dapat diterapkan ke tabel pada instance itu. Penerbit menggunakan decoder logis untuk memecahkan kode data untuk digunakan oleh pelanggan. Secara default, cluster Aurora Postgre SQL DB menggunakan plugin SQL pgoutput Postgre asli saat mengirim data. Decoder logis lainnya tersedia. Sebagai contoh, Aurora Postgre SQL juga mendukung wal2json plugin yang mengkonversi data ke. WAL JSON

Pada Aurora Postgre SQL versi 14.5, 13.8, 12.12, dan 11.17, Aurora SQL Postgre menambah proses replikasi logis Postgre dengan cache write-through untuk meningkatkan kinerja. SQL Log WAL transaksi di-cache secara lokal, dalam buffer, untuk mengurangi jumlah disk I/O, yaitu membaca dari penyimpanan Aurora selama decoding logis. Cache write-through digunakan secara default setiap kali Anda menggunakan replikasi logis untuk cluster Aurora Postgre DB Anda. SQL Aurora menyediakan beberapa fungsi yang dapat Anda gunakan untuk mengelola cache. Untuk informasi selengkapnya, lihat Mengelola cache penulisan replikasi logis Aurora Postgre SQL.

Replikasi logis didukung oleh semua versi Aurora SQL Postgre yang tersedia saat ini. Untuk informasi lebih lanjut, Amazon Aurora Postgre SQL memperbarui di Catatan Rilis untuk Aurora Postgre. SQL

Replikasi logis didukung oleh Babelfish untuk Aurora SQL Postgre dari versi berikut:

  • 15.7 dan versi yang lebih tinggi

  • 16.3 dan versi yang lebih tinggi

catatan

Selain fitur replikasi SQL logis Postgre asli yang diperkenalkan di Postgre SQL 10, Aurora SQL Postgre juga mendukung ekstensi. pglogical Untuk informasi selengkapnya, lihat Menggunakan pglogical untuk menyinkronkan data di seluruh instans.

Untuk informasi lebih lanjut tentang replikasi SQL logis Postgre, lihat Replikasi logis dan konsep decoding logis dalam dokumentasi Postgre. SQL

Dalam topik berikut, Anda dapat menemukan informasi tentang cara mengatur replikasi logis antara cluster Aurora SQL Postgre DB Anda.

Menyiapkan replikasi logis untuk cluster DB Aurora Postgre SQL Anda

Menyiapkan replikasi logis membutuhkan rds_superuser hak istimewa. Cluster Aurora Postgre SQL DB Anda harus dikonfigurasi untuk menggunakan grup parameter cluster DB kustom sehingga Anda dapat mengatur parameter yang diperlukan sebagaimana dirinci dalam prosedur berikut. Untuk informasi selengkapnya, lihat Grup parameter cluster DB untuk cluster Amazon Aurora DB.

Untuk mengatur replikasi SQL logis Postgre untuk cluster DB Aurora Postgre SQL
  1. Masuk ke AWS Management Console dan buka RDS konsol Amazon di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih cluster Aurora SQL Postgre DB Anda.

  3. Buka tab Konfigurasi. Di antara detail Instans, temukan tautan Grup parameter dengan Grup parameter klaster DB untuk Jenis.

  4. Pilih tautan untuk membuka parameter khusus yang terkait dengan cluster Aurora SQL Postgre DB Anda.

  5. Di bidang pencarian Parameter, ketik rds untuk menemukan parameter rds.logical_replication. Nilai default untuk parameter ini adalah 0, artinya fitur dinonaktifkan secara default.

  6. Pilih Edit parameter untuk mengakses nilai properti, lalu pilih 1 dari pemilih untuk mengaktifkan fitur tersebut. Tergantung penggunaan yang Anda harapkan, Anda mungkin juga perlu mengubah pengaturan parameter berikut. Namun, dalam banyak kasus, nilai default sudah cukup.

    • max_replication_slots – Tetapkan parameter ini ke nilai yang setidaknya sama dengan jumlah total publikasi dan langganan replikasi logis yang Anda rencanakan. Jika Anda menggunakan AWS DMS, parameter ini harus sama setidaknya dengan tugas pengambilan data perubahan yang direncanakan dari cluster, ditambah publikasi replikasi logis dan langganan.

    • max_wal_sendersdan max_logical_replication_workers — Tetapkan parameter ini ke nilai yang setidaknya sama dengan jumlah slot replikasi logis yang ingin Anda aktif, atau jumlah AWS DMS tugas aktif untuk pengambilan data perubahan. Membiarkan slot replikasi logis tidak aktif mencegah vakum menghilangkan tuple usang dari tabel, jadi kami sarankan Anda memantau slot replikasi dan menghapus slot yang tidak aktif sesuai kebutuhan.

    • max_worker_processes – Tetapkan parameter ini ke nilai yang setidaknya sama dengan total nilai max_logical_replication_workers, autovacuum_max_workers, dan max_parallel_workers. Pada kelas instans DB kecil, proses pekerja latar belakang dapat memengaruhi beban kerja aplikasi, jadi pantau performa basis data jika Anda menetapkan max_worker_processes lebih tinggi dari nilai default. (Nilai default adalah hasil dariGREATEST(${DBInstanceVCPU*2},8}, yang berarti bahwa, secara default, ini adalah 8 atau dua kali CPU setara dengan kelas instans DB, mana yang lebih besar).

    catatan

    Anda dapat mengubah nilai parameter dalam grup parameter DB buatan pelanggan; Anda tidak dapat mengubah nilai parameter dalam grup parameter DB default.

  7. Pilih Simpan perubahan.

  8. Reboot instance penulis cluster Aurora Postgre SQL DB Anda sehingga perubahan Anda berlaku. Di RDS konsol Amazon, pilih instans DB utama cluster dan pilih Reboot dari menu Tindakan.

  9. Ketika instans tersedia, Anda dapat memverifikasi bahwa replikasi logis diaktifkan sebagai berikut.

    1. Gunakan psql untuk terhubung ke instance penulis cluster Aurora SQL Postgre DB Anda.

      psql --host=your-db-cluster-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
    2. Verifikasi bahwa replikasi logis telah diaktifkan dengan menggunakan perintah berikut.

      labdb=> SHOW rds.logical_replication; rds.logical_replication ------------------------- on (1 row)
    3. Verifikasi bahwa wal_level diatur ke logical.

      labdb=> SHOW wal_level; wal_level ----------- logical (1 row)

Untuk contoh menggunakan replikasi logis untuk menjaga tabel database disinkronkan dengan perubahan dari sumber Aurora SQL Postgre DB cluster, lihat. Contoh: Menggunakan replikasi logis dengan cluster Aurora Postgre DB SQL

Menggunakan replikasi logis

Setelah Anda menyelesaikan tugas replikasi, hentikan proses replikasi, letakkan slot replikasi, dan nonaktifkan replikasi logis. Sebelum meletakkan slot, pastikan bahwa slot tidak diperlukan lagi. Slot replikasi aktif tidak dapat diletakkan.

Untuk menonaktifkan replikasi logis
  1. Letakkan semua slot replikasi.

    Untuk menjatuhkan semua slot replikasi, sambungkan ke penerbit dan jalankan perintah berikutSQL.

    SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_name IN (SELECT slot_name FROM pg_replication_slots);

    Slot replikasi tidak dapat aktif saat Anda menjalankan perintah ini.

  2. Ubah grup parameter klaster DB kustom yang terkait dengan penerbit seperti yang dijelaskan dalamMenyiapkan replikasi logis untuk cluster DB Aurora Postgre SQL Anda, tetapi atur parameter rds.logical_replication ke 0.

    Untuk informasi selengkapnya tentang grup parameter kustom, lihat Memodifikasi parameter dalam grup parameter cluster DB di Amazon Aurora.

  3. Mulai ulang klaster DB Aurora SQL Postgre penerbit agar perubahan parameter diterapkanrds.logical_replication.

Mengelola cache penulisan replikasi logis Aurora Postgre SQL

Secara default, Aurora Postgre SQL versi 14.5, 13.8, 12.12, dan 11.17 dan yang lebih tinggi menggunakan cache write-through untuk meningkatkan kinerja replikasi logis. Tanpa cache write-through, Aurora Postgre SQL menggunakan lapisan penyimpanan Aurora dalam implementasi proses replikasi logis Postgre asli. SQL Ia melakukannya dengan menulis WAL data ke penyimpanan dan kemudian membaca data kembali dari penyimpanan untuk memecahkan kode dan mengirim (mereplikasi) ke targetnya (pelanggan). Hal ini dapat mengakibatkan kemacetan selama replikasi logis untuk cluster DB Aurora Postgre. SQL

Cache write-through mengurangi kebutuhan untuk menggunakan lapisan penyimpanan Aurora. Alih-alih selalu menulis dan membaca dari lapisan penyimpanan Aurora, Aurora Postgre SQL menggunakan buffer untuk menyimpan WAL aliran logis sehingga dapat digunakan selama proses replikasi, daripada selalu menarik dari disk. Buffer ini adalah cache SQL asli Postgre yang digunakan oleh replikasi logis, diidentifikasi dalam parameter cluster Aurora Postgre DB sebagai. SQL rds.logical_wal_cache Secara default, cache ini menggunakan 1/32 dari pengaturan cache buffer cluster Aurora SQL Postgre DB shared_buffers () tetapi tidak kurang dari 64kB atau lebih dari ukuran satu segmen, biasanya 16MB. WAL

Saat Anda menggunakan replikasi logis dengan cluster Aurora SQL Postgre DB Anda (untuk versi yang mendukung cache write-through), Anda dapat memantau rasio hit cache untuk melihat seberapa baik kerjanya untuk kasus penggunaan Anda. Untuk melakukannya, sambungkan ke instance tulis cluster Aurora Postgre SQL DB Anda menggunakan psql dan kemudian gunakan fungsi Auroraaurora_stat_logical_wal_cache, seperti yang ditunjukkan pada contoh berikut.

SELECT * FROM aurora_stat_logical_wal_cache();

Fungsi mengembalikan output seperti berikut ini.

name | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp -----------+------------+-----------+------------+-----------+----------+-------------- test_slot1 | 79183 | 24 | 0 | 24 | 100.00% | 2022-08-05 17:39... test_slot2 | | 1 | 0 | 1 | 100.00% | 2022-08-05 17:34... (2 rows)

Nilai-nilai last_reset_timestamp telah dipersingkat untuk keterbacaan. Untuk informasi selengkapnya tentang fungsi ini, lihat aurora_stat_logical_wal_cache.

Aurora Postgre SQL menyediakan dua fungsi berikut untuk memantau cache write-through.

Jika Anda menemukan bahwa ukuran WAL cache yang disesuaikan secara otomatis tidak cukup untuk beban kerja Anda, Anda dapat mengubah nilai rds.logical_wal_cache secara manual, dengan memodifikasi parameter dalam grup parameter cluster DB kustom Anda. Perhatikan bahwa setiap nilai positif kurang dari 32 kB diperlakukan sebagai 32 kB. Untuk informasi selengkapnya tentangwal_buffers, lihat Menulis Ke Depan Log di dokumentasi PostgreSQL.

Mengelola slot logis untuk Aurora Postgre SQL

Aktivitas streaming ditangkap dalam tampilan pg_replication_origin_status. Untuk melihat konten tampilan ini, Anda dapat menggunakan fungsi pg_show_replication_origin_status(), seperti yang ditunjukkan berikut:

SELECT * FROM pg_show_replication_origin_status();

Anda bisa mendapatkan daftar slot logis Anda dengan menggunakan SQL kueri berikut.

SELECT * FROM pg_replication_slots;

Untuk meletakkan slot logis, gunakan pg_drop_replication_slot dengan nama slot, seperti yang ditunjukkan dalam perintah berikut.

SELECT pg_drop_replication_slot('test_slot');

Contoh: Menggunakan replikasi logis dengan cluster Aurora Postgre DB SQL

Prosedur berikut menunjukkan kepada Anda bagaimana memulai replikasi logis antara dua cluster Aurora SQL Postgre DB. Baik penerbit dan pelanggan harus dikonfigurasi untuk replikasi logis seperti yang dijelaskan dalam Menyiapkan replikasi logis untuk cluster DB Aurora Postgre SQL Anda.

Cluster Aurora Postgre SQL DB yang merupakan penerbit yang ditunjuk juga harus mengizinkan akses ke slot replikasi. Untuk melakukannya, ubah grup keamanan yang terkait dengan cloud publik virtual klaster Aurora Postgre SQL DB (VPC) berdasarkan layanan Amazon. VPC Izinkan akses masuk dengan menambahkan grup keamanan yang terkait dengan pelanggan VPC ke grup keamanan penerbit. Untuk informasi selengkapnya, lihat Mengontrol lalu lintas ke sumber daya menggunakan grup keamanan di Panduan VPC Pengguna Amazon.

Dengan langkah-langkah awal ini selesai, Anda dapat menggunakan SQL perintah Postgre CREATE PUBLICATION pada penerbit dan CREATE SUBSCRIPTION pada pelanggan, sebagaimana dirinci dalam prosedur berikut.

Untuk memulai proses replikasi logis antara dua cluster Aurora Postgre SQL DB

Langkah-langkah ini mengasumsikan bahwa cluster Aurora Postgre SQL DB Anda memiliki instance penulis dengan database untuk membuat tabel contoh.

  1. Pada klaster Aurora Postgre DB SQL penerbit

    1. Buat tabel menggunakan SQL pernyataan berikut.

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. Masukkan data ke dalam database penerbit dengan menggunakan SQL pernyataan berikut.

      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
    3. Verifikasi bahwa data ada dalam tabel dengan menggunakan SQL pernyataan berikut.

      SELECT count(*) FROM LogicalReplicationTest;
    4. Buat publikasi untuk tabel ini dengan menggunakan pernyataan CREATE PUBLICATION, sebagai berikut.

      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
  2. Pada pelanggan Aurora SQL Postgre DB cluster

    1. Buat tabel LogicalReplicationTest yang sama pada pelanggan yang Anda buat di penerbit, sebagai berikut.

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. Verifikasi bahwa tabel ini kosong.

      SELECT count(*) FROM LogicalReplicationTest;
    3. Buat langganan untuk mendapatkan perubahan dari penerbit. Anda perlu menggunakan detail berikut tentang klaster DB Aurora SQL Postgre penerbit.

      • host - Instans DB penulis klaster Aurora SQL Postgre DB penerbit.

      • port – Port tempat instans DB penulis mendengarkan. Default untuk Postgre SQL adalah 5432.

      • dbname – Nama basis data.

      CREATE SUBSCRIPTION testsub CONNECTION 'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' PUBLICATION testpub;
      catatan

      Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik keamanan terbaik.

      Setelah langganan dibuat, slot replikasi logis dibuat di penerbit.

    4. Untuk memverifikasi contoh ini bahwa data awal direplikasi pada pelanggan, gunakan SQL pernyataan berikut pada database pelanggan.

      SELECT count(*) FROM LogicalReplicationTest;

Setiap perubahan lebih lanjut pada penerbit direplikasi ke pelanggan.

Replikasi logis memengaruhi performa. Kami menyarankan Anda menonaktifkan replikasi logis setelah tugas replikasi Anda selesai.

Contoh: Replikasi logis menggunakan SQL Aurora Postgre dan AWS Database Migration Service

Anda dapat menggunakan AWS Database Migration Service (AWS DMS) untuk mereplikasi database atau sebagian dari database. Gunakan AWS DMS untuk memigrasikan data Anda dari database Aurora SQL Postgre ke database open source atau komersial lainnya. Untuk informasi selengkapnya AWS DMS, lihat Panduan AWS Database Migration Service Pengguna.

Contoh berikut menunjukkan cara mengatur replikasi logis dari database Aurora SQL Postgre sebagai penerbit dan kemudian digunakan untuk migrasi. AWS DMS Contoh ini menggunakan penerbit dan pelanggan sama yang dibuat di Contoh: Menggunakan replikasi logis dengan cluster Aurora Postgre DB SQL.

Untuk mengatur replikasi logis dengan AWS DMS, Anda memerlukan detail tentang penerbit dan pelanggan Anda dari Amazon. RDS Secara khusus, Anda perlu detail tentang instans DB penulis penerbit dan instans DB pelanggan.

Dapatkan informasi berikut untuk instans DB penulis dari penerbit:

  • Pengidentifikasi cloud pribadi virtual (VPC)

  • Grup subnet

  • Zona Ketersediaan (AZ)

  • Kelompok VPC keamanan

  • ID instans DB

Dapatkan informasi berikut untuk instans DB pelanggan:

  • ID instans DB

  • Mesin sumber

Untuk digunakan AWS DMS untuk replikasi logis dengan Aurora Postgre SQL
  1. Siapkan database penerbit untuk AWS DMS dikerjakan.

    Untuk melakukan ini, Postgre SQL 10.x dan database yang lebih baru mengharuskan Anda menerapkan fungsi AWS DMS pembungkus ke database penerbit. Untuk detail tentang langkah ini dan yang lebih baru, lihat petunjuk di Menggunakan Postgre SQL versi 10.x dan yang lebih baru sebagai sumber AWS DMS di Panduan Pengguna.AWS Database Migration Service

  2. Masuk ke AWS Management Console dan buka AWS DMS konsol dihttps://console.aws.amazon.com/dms/v2. Di kanan atas, pilih AWS Wilayah yang sama di mana penerbit dan pelanggan berada.

  3. Buat contoh AWS DMS replikasi.

    Pilih nilai yang sama seperti nilai instans DB penulis dari penerbit Anda. Hal ini termasuk pengaturan berikut:

    • Untuk VPC, pilih yang sama VPC seperti untuk instance DB penulis.

    • Untuk Grup Subnet Replikasi, pilih grup subnet dengan nilai yang sama dengan instans DB penulis. Buat yang baru jika perlu.

    • Untuk Zona ketersediaan, pilih zona yang sama seperti untuk instans DB penulis.

    • Untuk Grup VPC Keamanan, pilih grup yang sama dengan instans DB penulis.

  4. Buat AWS DMS titik akhir untuk sumbernya.

    Tentukan penerbit sebagai titik akhir sumber dengan menggunakan pengaturan berikut:

    • Untuk Jenis titik akhir, pilih Titik akhir sumber.

    • Pilih Pilih Instans RDS DB.

    • RDSMisalnya, pilih pengenal DB dari instans DB penulis penerbit.

    • Untuk Mesin sumber, pilih postgres.

  5. Buat AWS DMS titik akhir untuk target.

    Tentukan pelanggan sebagai titik akhir target dengan menggunakan pengaturan berikut:

    • Untuk Jenis titik akhir, pilih Titik akhir target.

    • Pilih Pilih Instans RDS DB.

    • RDSMisalnya, pilih pengenal DB dari instans DB pelanggan.

    • Pilih nilai untuk Mesin sumber. Misalnya, jika pelanggan adalah SQL database RDS Postgre, pilih postgres. Jika pelanggan adalah database Aurora SQL Postgre, pilih aurora-postgresql.

  6. Buat tugas migrasi AWS DMS database.

    Gunakan tugas migrasi basis data untuk menentukan tabel basis data yang akan dimigrasi, memetakan data menggunakan skema target, dan membuat tabel baru pada basis data target. Setidaknya, gunakan pengaturan berikut untuk Konfigurasi tugas:

    • Untuk Instans replikasi, pilih instans replikasi yang Anda buat pada langkah sebelumnya.

    • Untuk Titik akhir basis data sumber, pilih sumber penerbit yang Anda buat pada langkah sebelumnya.

    • Untuk Titik akhir basis data target, pilih target pelanggan yang Anda buat pada langkah sebelumnya.

    Detail tugas lainnya tergantung pada proyek migrasi Anda. Untuk informasi selengkapnya tentang menentukan semua detail DMS tugas, lihat Bekerja dengan AWS DMS tugas di Panduan AWS Database Migration Service Pengguna.

Setelah AWS DMS membuat tugas, itu mulai memigrasikan data dari penerbit ke pelanggan.