Mengelola migrasi lanjutan

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 pglogical untuk 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 INSERT selama fase pengambilan data perubahan (CDC). Anda harus menangani pernyataan UPDATE dan DELETE secara 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 dengan pg_). 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

  1. Dari menu utama, pilih Database Service.
  2. Klik Create Migration.
  3. Di dialog Get started, tinjau persyaratan untuk sumber dan konektivitas.
  4. Di dialog Specify your source database, tentukan nama host atau alamat IP database sumber, nama pengguna, sandi, jenis enkripsi, dan sertifikat.
  5. 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.
  6. Klik Create. Pembuatan migrasi dan cluster database target dapat memerlukan waktu beberapa menit. Status akan berubah dari Reconciling menjadi Ready saat cluster siap. Status migrasi akan berubah menjadi Unsynced jika migrasi berhasil disiapkan. Gunakan opsi berikut untuk mengelola migrasi:
    1. Mulai: Ini memulai migrasi dan mengubah status migrasi menjadi Running.
    2. Stop: Menghentikan migrasi dan mengubah status migrasi menjadi Stopped.
    3. Promote: Mempromosikan cluster database target ke database mandiri.
    4. Delete: Menghapus migrasi dan cluster database target yang dibuat untuk migrasi ini.

Putar sandi pengguna replikasi database sumber secara berkala dengan langkah-langkah berikut:

  1. Buka Source database , lalu klik edit Edit.
  2. Buat perubahan untuk memutar sandi pengguna replikasi.
  3. Klik Save untuk menerapkan perubahan.

Setelah perubahan diterapkan, backend migrasi akan menggunakan sandi baru.

gdcloud

  1. Sebelum menggunakan Distributed Cloud CLI, instal dan lakukan inisialisasi it. Kemudian, lakukan autentikasi dengan organisasi Anda.

  2. 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_PASSWORD
    

    Ganti 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.
  3. Mulai migrasi:

    gdcloud database migrations start MIGRATION_NAME
    
  4. Hentikan migrasi:

    gdcloud database migrations stop MIGRATION_NAME
    
  5. Promosikan migrasi:

    gdcloud database migrations promote MIGRATION_NAME
    
  6. Cantumkan profil koneksi yang ada:

    gdcloud database connection-profiles list DB_ENGINE_TYPE
    
  7. Cantumkan 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 berupa start atau stop saat migrasi dibuat. Nilai ini harus berupa promote untuk mempromosikan cluster database target migrasi.