Migrasi lanjutan adalah solusi untuk memigrasikan data untuk database berukuran besar dengan waktu nonaktif yang lebih singkat. Fitur ini hanya tersedia untuk PostgreSQL.
Persyaratan sumber migrasi
Mengonfigurasi sumber migrasi memerlukan konfigurasi instance sumber dan database sumber yang mendasarinya.
Versi yang didukung
Versi PostgreSQL terkelola mandiri yang didukung adalah:
- PostgreSQL: 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, dan 15
- AlloyDB Omni: 15
Konfigurasi instance sumber
Instance sumber Anda harus menyertakan database postgres default. Jika tidak ada, Anda harus membuatnya.
Library pglogical harus diinstal di sumber dan disertakan dalam variabel konfigurasi shared_preload_libraries.
Konfigurasi database sumber
Migrasi akan memigrasikan semua database di instance sumber, kecuali database template (template0 dan template1 untuk sumber lokal). Untuk setiap database yang akan dimigrasikan, Anda harus memenuhi langkah-langkah berikut:
- Menginstal ekstensi: Anda harus menjalankan
CREATE EXTENSION IF NOT EXISTS pglogicaluntuk menginstal ekstensi ke dalam database. - Batasan kunci utama: Data hanya dimigrasikan untuk tabel dengan kunci utama. Untuk tabel tanpa kunci utama, migrasi hanya menyalin skema tabel, bukan data. Selain itu, untuk tabel tanpa kunci utama, migrasi ini hanya mendukung snapshot awal dan pernyataan
INSERTselama fase pengambilan data perubahan (CDC). Anda harus menangani pernyataanUPDATEdanDELETEsecara manual. Hak istimewa pengguna: Pengguna database yang Anda gunakan untuk terhubung ke instance sumber harus memiliki hak istimewa yang memadai pada database postgres default, skema
pglogical, dan semua skema migrasi (kecuali skema informasi dan skema yang dimulai denganpg_). Khususnya untuk PostgreSQL, Anda harus memberikan hak istimewa berikut:GRANT USAGE on SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL TABLES in SCHEMA pglogical to <USER>; GRANT SELECT on ALL TABLES in SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL SEQUENCES in SCHEMA <SCHEMA> to <USER>; ALTER USER <USER> with REPLICATION role;
Dukungan DDL
Hanya perubahan Bahasa Manipulasi Data (DML) yang disinkronkan secara otomatis selama migrasi. Bahasa Definisi Data (DDL) harus dikelola secara manual untuk memastikan database sumber dan tujuan tetap kompatibel selama migrasi. Sebaiknya gunakan pglogical.replicate_ddl_command untuk menjalankan DDL di sumber dan tujuan pada titik yang konsisten.
Konektivitas dan otorisasi
Anda harus membuka firewall jaringan dan mengonfigurasi file pg_hba.conf untuk menerima koneksi masuk dari alamat IP keluar Tujuan (endpoint migrasi), yang disediakan di konsol GDC.
Mengelola migrasi
Pengguna dengan peran Admin DB Project harus melakukan langkah-langkah berikut. Gunakan konsol GDC atau Distributed Cloud CLI untuk mengelola migrasi:
Konsol
- Dari menu utama, pilih Database Service.
- Klik Create Migration.
- Di dialog Get started, tinjau persyaratan untuk sumber dan konektivitas.
- Di dialog Specify your source database, tentukan nama host atau alamat IP database sumber, nama pengguna, sandi, jenis enkripsi, dan sertifikat.
- Di dialog Configure your cluster, tentukan ID Cluster, sandi, versi database, CPU, memori, dan kapasitas penyimpanan cluster database target. Pastikan Anda memilih memori yang cukup untuk menyimpan tabel terbesar.
- Klik Create. Pembuatan migrasi dan cluster database target dapat memerlukan waktu beberapa menit.
Status akan berubah dari
ReconcilingmenjadiReadysaat cluster siap. Status migrasi akan berubah menjadiUnsyncedjika migrasi berhasil disiapkan. Gunakan opsi berikut untuk mengelola migrasi:- Mulai: Ini memulai migrasi dan mengubah status migrasi menjadi
Running. - Stop: Menghentikan migrasi dan mengubah status migrasi menjadi
Stopped. - Promote: Mempromosikan cluster database target ke database mandiri.
- Delete: Menghapus migrasi dan cluster database target yang dibuat untuk migrasi ini.
- Mulai: Ini memulai migrasi dan mengubah status migrasi menjadi
Putar sandi pengguna replikasi database sumber secara berkala dengan langkah-langkah berikut:
- Buka Source database , lalu klik edit Edit.
- Buat perubahan untuk memutar sandi pengguna replikasi.
- Klik Save untuk menerapkan perubahan.
Setelah perubahan diterapkan, backend migrasi akan menggunakan sandi baru.
gdcloud
Sebelum menggunakan Distributed Cloud CLI, instal dan lakukan inisialisasi it. Kemudian, lakukan autentikasi dengan organisasi Anda.
Buat migrasi:
gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \ --username REPLICATION_USERNAME \ --password REPLICATION_PASSWORD \ --ca-certificate CA_CERT_FILE_PATH gdcloud database migrations create MIGRATION_NAME \ --source SOURCE_CONNECTION_PROFILE \ --destination DESTINATION_DBCLUSTER gdcloud database clusters create DESTINATION_DBCLUSTER \ --database-version DB_VERSION \ --admin-password ADMIN_PASSWORDGanti variabel berikut:
DB_ENGINE_TYPE, jenis mesin database untuk migrasi. Nilai yang didukung adalah:postgresql.SOURCE_CONNECTION_PROFILE, nama untuk profil koneksi baru.REPLICATION_USERNAME, nama untuk pengguna replikasi database sumber.REPLICATION_PASSWORD, sandi untuk pengguna replikasi database sumber.CA_CERT_FILE_PATH, jalur untuk sertifikat CA database sumber.MIGRATION_NAME, nama untuk migrasi baru.DESTINATION_DBCLUSTER, nama untuk cluster database target.DB_VERSION, string versi untuk cluster baru. Contohnya,POSTGRESQL_13.ADMIN_PASSWORD, sandi pengguna administrator untuk cluster baru.
Mulai migrasi:
gdcloud database migrations start MIGRATION_NAMEHentikan migrasi:
gdcloud database migrations stop MIGRATION_NAMEPromosikan migrasi:
gdcloud database migrations promote MIGRATION_NAMECantumkan profil koneksi yang ada:
gdcloud database connection-profiles list DB_ENGINE_TYPECantumkan migrasi yang ada:
gdcloud database migrations list --destination DESTINATION_DBCLUSTER
API
Untuk database sumber PostgreSQL:
Buat secret untuk menyimpan sertifikat CA database sumber:
apiVersion: v1
data:
ca.crt: SOURCE_DB_CA_CERT
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Buat secret untuk menyimpan sandi pengguna migrasi database sumber:
apiVersion: v1
data:
password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Buat externalserver:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
name: EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
spec:
host: SOURCE_DB_HOST
port: 5432
username: SOURCE_DB_USERNAME
password:
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
certRef:
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
Buat migrasi:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
name: MIGRATION_NAME
namespace: USER_PROJECT
spec:
source:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
name: EXTERNAL_SERVER_NAME
target:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: DBCluster
name: DBCLUSTER_NAME
control: MIGRATION_CONTROL
Ganti variabel berikut:
EXTERNAL_SERVER_NAME: nama externalserver yang mewakili database sumber.USER_PROJECT: nama project pengguna tempat externalserver dibuat.DBENGINE_NAME: nama mesin database. Nilai yang didukung adalah:postgresql.SOURCE_DB_CA_CERT: sertifikat CA database sumber.SOURCE_DB_USER_PASSWORD: sandi pengguna migrasi database sumber.SOURCE_DB_USERNAME: nama pengguna migrasi database sumber.SOURCE_DB_HOST: alamat host migrasi database sumber.MIGRATION_NAME: nama operasi migrasi.DBCLUSTER_NAME: nama cluster database target migrasi.MIGRATION_CONTROL: kontrol operasi migrasi. Nilai ini harus berupastartataustopsaat migrasi dibuat. Nilai ini harus berupapromoteuntuk mempromosikan cluster database target migrasi.