Ringkasan
Database Migration Service mendukung migrasi berkelanjutan dari database sumber ke database tujuan AlloyDB.
Database sumber yang didukung untuk PostgreSQL meliputi:
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15
- PostgreSQL yang dikelola sendiri (di lokasi atau di VM cloud apa pun yang Anda kontrol sepenuhnya) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15
Mengonfigurasi sumber memerlukan konfigurasi instance sumber dan database sumber yang mendasarinya.
Mengonfigurasi instance sumber
Untuk mengonfigurasi instance sumber, ikuti langkah-langkah di bawah:
- Instance sumber Anda harus menyertakan database
postgres
. Jika Anda tidak memiliki database ini, buat database. - Instal paket
pglogical
di instance sumber dan pastikan paket tersebut disertakan dalam variabelshared_preload_libraries
.- Lihat Menginstal paket
pglogical
di instance sumber untuk lingkungan Anda.
- Lihat Menginstal paket
Mengonfigurasi database sumber
Database Migration Service memigrasikan semua database pada instance sumber Anda, kecuali database berikut:
- Untuk sumber lokal: database template
template0
dantemplate1
- Untuk sumber Amazon RDS:
template0
,template1
, danrdsadmin
- Untuk sumber Cloud SQL: database template
template0
dantemplate1
Lakukan hal berikut pada setiap database dalam instance sumber yang tidak disebutkan di atas:
Khusus untuk sumber PostgreSQL versi 9.4, instal ekstensi
pglogical
berikut di setiap database di instance sumber Anda:CREATE EXTENSION IF NOT EXISTS pglogical;
CREATE EXTENSION IF NOT EXISTS pglogical_origin;
Untuk semua versi lainnya, hanya instal ekstensi
pglogical
di setiap database di instance sumber Anda:CREATE EXTENSION IF NOT EXISTS pglogical
.Untuk tabel yang tidak memiliki kunci utama, Database Migration Service mendukung migrasi snapshot awal dan pernyataan
INSERT
selama fase CDC. Anda harus memigrasikan pernyataanUPDATE
danDELETE
secara manual.USER yang Anda gunakan untuk terhubung ke instance sumber (yang akan dikonfigurasi sebagai pengguna di halaman Connection Profiles) harus memiliki hak istimewa tertentu di setiap database yang dimigrasikan, serta database
postgres
default. Anda dapat membuat pengguna baru atau menggunakan kembali pengguna yang sudah ada. Untuk menetapkan hak istimewa ini, hubungkan ke instance dan jalankan perintah berikut:GRANT USAGE on SCHEMA SCHEMA to USER
di semua skema (selain skema informasi dan skema yang dimulai dengan "pg_") di setiap database yang akan dimigrasikan.GRANT USAGE on SCHEMA pglogical to PUBLIC;
di setiap database yang akan dimigrasikan.GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER
di semua database untuk mendapatkan informasi replikasi dari database sumber.GRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USER
di semua skema (selain skema informasi dan skema yang dimulai dengan "pg_") di setiap database yang akan dimigrasikan.GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USER
di semua skema (selain skema informasi dan skema yang dimulai dengan "pg_") di setiap database yang akan dimigrasikan.- Jika sumber Anda adalah Amazon RDS, jalankan perintah berikut:
GRANT rds_replication to USER
- Jika sumber Anda bukan Amazon RDS, jalankan perintah berikut:
- Peran
ALTER USER USER with REPLICATION
- Peran
Menginstal paket pglogical
di instance sumber
Bagian ini menjelaskan cara mengonfigurasi paket pglogical
,
termasuk konfigurasi untuk parameter max_replication_slots
,
max_wal_senders
, dan max_worker_processes
.
Anda juga bisa mendapatkan nilai yang benar untuk parameter ini dengan
menjalankan pengujian tugas migrasi saat membuat tugas migrasi.
Selama pengujian ini, Layanan Migrasi Database dapat memverifikasi setelan Anda dan menyarankan
nilai yang benar.
PostgreSQL di lokasi atau yang dikelola sendiri
- Instal paket pglogical di server.
- Hubungkan ke instance dan tetapkan parameter berikut, sesuai kebutuhan:
shared_preload_libraries
harus menyertakanpglogical
.Untuk menetapkan parameter ini, jalankan perintah
ALTER SYSTEM SET shared_preload_libraries = 'pglogical,[any other libraries in your instance]';
.Tetapkan
wal_level
kelogical
.Untuk menetapkan parameter ini, jalankan perintah
ALTER SYSTEM SET wal_level = 'logical';
.Tetapkan
wal_sender_timeout
ke0
.Untuk menetapkan parameter ini, jalankan perintah
ALTER SYSTEM SET wal_sender_timeout = 0;
, dengan0
menonaktifkan mekanisme waktu tunggu yang digunakan untuk menghentikan koneksi replikasi tidak aktif.max_replication_slots menentukan jumlah maksimum slot replikasi yang dapat didukung instance sumber. Nilai ini harus disetel setidaknya ke jumlah langganan yang diharapkan akan terhubung, ditambah beberapa cadangan untuk sinkronisasi tabel.
Database Migration Service memerlukan satu slot untuk setiap database yang dimigrasikan (yaitu semua database dalam instance sumber).
Misalnya, jika ada 5 database di instance sumber dan jika ada 2 tugas migrasi yang dibuat untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah Anda gunakan. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.
Untuk menetapkan parameter ini, jalankan perintah
ALTER SYSTEM SET max_replication_slots = #;
, dengan # mewakili jumlah maksimum slot replikasi.max_wal_senders harus disetel minimal ke jumlah yang sama dengan
max_replication_slots
, ditambah jumlah pengirim yang sudah digunakan di instance Anda.Misalnya, jika parameter
Untuk menetapkan parameter ini, jalankan perintahmax_replication_slots
ditetapkan ke10
, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan verifikasi konfigurasi Anda dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.ALTER SYSTEM SET max_wal_senders = #;
, dengan # mewakili jumlah proses pengirim WAL yang berjalan secara bersamaan.max_worker_processes harus disetel minimal ke jumlah database yang sama dengan yang akan dimigrasikan oleh Database Migration Service (yaitu semua database dalam instance sumber), ditambah jumlah
max_worker_processes
yang sudah digunakan di instance Anda.Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah proses pekerja dan verifikasi konfigurasi Anda dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.
Untuk menetapkan parameter ini, jalankan perintah
ALTER SYSTEM SET max_worker_processes = #;
, dengan # mewakili jumlah database yang akan dimigrasikan.
- Untuk menerapkan perubahan konfigurasi, mulai ulang instance sumber.
Amazon RDS PostgreSQL
- Instal ekstensi
pglogical
di database sumber Anda. Untuk informasi selengkapnya, lihat Menggunakan ekstensi PostgreSQL dengan Amazon RDS for PostgreSQL dalam dokumentasi Amazon RDS. Konfigurasikan instance sumber menggunakan grup parameter.
- Buat grup parameter baru. Di grup parameter:
- Pastikan parameter
shared_preload_libraries
menyertakanpglogical
. - Tetapkan parameter
rds.logical_replication
ke1
. Tindakan ini akan mengaktifkan log WAL di tingkat logis. - Tetapkan parameter
wal_sender_timeout
ke 0. Tindakan ini akan menonaktifkan mekanisme waktu tunggu yang digunakan untuk menghentikan koneksi replikasi tidak aktif. Tetapkan parameter max_replication_slots. Parameter ini menentukan jumlah maksimum slot replikasi yang dapat didukung instance sumber. Nilai ini harus disetel setidaknya ke jumlah langganan yang diharapkan akan terhubung, ditambah beberapa cadangan untuk sinkronisasi tabel.
Database Migration Service memerlukan satu slot untuk setiap database yang dimigrasikan (yaitu semua database dalam instance sumber).
Misalnya, jika ada 5 database di instance sumber dan jika akan ada 2 tugas migrasi yang dibuat untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah Anda gunakan. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat Anda membuat tugas migrasi.
Nilai default untuk parameter ini adalah 10.
Tetapkan parameter max_wal_senders setidaknya sama dengan
max_replication_slots
, ditambah jumlah pengirim yang sudah digunakan di instance Anda.Misalnya, jika parameter
max_replication_slots
ditetapkan ke10
, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.Nilai default untuk parameter ini adalah 10.
Tetapkan parameter sumber max_worker_processes setidaknya ke jumlah database yang sama dengan yang akan dimigrasikan oleh Database Migration Service (yaitu semua database dalam instance sumber), ditambah jumlah
max_worker_processes
yang sudah digunakan di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah proses pekerja dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.Nilai default untuk parameter ini adalah 8.
Lampirkan grup parameter ke instance. Jika membuat instance baru, Anda dapat menemukan opsi ini di bagian Konfigurasi Tambahan. Jika tidak, ubah instance untuk melampirkan grup parameter.
Untuk menerapkan perubahan konfigurasi, mulai ulang instance sumber.
Cloud SQL untuk PostgreSQL
Aktifkan replikasi dan decoding logis untuk database sumber dengan mengonfigurasi flag berikut.
- Tetapkan flag
cloudsql.logical_decoding
dancloudsql.enable_pglogical
keon
. Tetapkan flag max_replication_slots. Flag ini menentukan jumlah maksimum slot replikasi yang dapat didukung instance sumber. Nilai ini harus disetel setidaknya ke jumlah langganan yang diharapkan akan terhubung, ditambah beberapa cadangan untuk sinkronisasi tabel.
Database Migration Service memerlukan satu slot untuk setiap database yang dimigrasikan (yaitu semua database dalam instance sumber).
Misalnya, jika ada 5 database di instance sumber dan jika akan ada 2 tugas migrasi yang dibuat untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah Anda gunakan. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.
Nilai default untuk flag ini adalah 10.
Tetapkan flag max_wal_senders agar setidaknya sama dengan
max_replication_slots
, ditambah jumlah pengirim yang sudah digunakan di instance Anda.Misalnya, jika flag
max_replication_slots
ditetapkan ke10
, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan secara bersamaan adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi dengan menjalankan pengujian tugas migrasi saat membuat tugas migrasi.Nilai default untuk flag ini adalah 10.
Tetapkan flag sumber max_worker_processes ke setidaknya jumlah database yang sama dengan yang akan dimigrasikan oleh Database Migration Service (yaitu semua database dalam instance sumber), ditambah jumlah
max_worker_processes
yang sudah digunakan di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pertimbangkan dua proses pekerja tambahan per koneksi (maksimal 20 pekerja).Nilai default untuk flag ini adalah 8.
- Mulai ulang instance sumber sehingga perubahan konfigurasi yang Anda buat pada flag dapat diterapkan.
Mengaktifkan pemantauan penundaan replikasi untuk versi PostgreSQL di bawah 9.6
Jika Anda bermigrasi dari versi PostgreSQL yang lebih lama dari 9.6, metrik penundaan replikasi tidak tersedia secara default. Ada tiga alternatif yang dapat Anda gunakan untuk melacak metrik ini guna memastikan periode nonaktif minimal saat Anda mempromosikan database:
Opsi 1: Aktifkan Database Migration Service untuk melacak penundaan replikasi dengan memberikan akses ke kueri tertentu. Dengan menggunakan pengguna dengan hak istimewa
SUPERUSER
, lakukan hal berikut:Tentukan fungsi berikut untuk memungkinkan Database Migration Service mengkueri penundaan replikasi.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Berikan izin
EXECUTE
ke USER dengan menjalankan perintah berikut:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Opsi 2: Berikan hak istimewa
SUPERUSER
secara langsung ke USER yang digunakan untuk terhubung ke instance sumber. Tindakan ini akan memungkinkan Database Migration Service membaca penundaan replikasi secara langsung.Opsi 3: Lacak penundaan replikasi secara independen menggunakan kueri berikut:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
Dalam opsi ini, Layanan Migrasi Database tidak akan mencerminkan metrik penundaan replikasi dalam grafik atau respons API.