Mengonfigurasi Cloud SQL dan server eksternal untuk replikasi

Halaman ini menjelaskan cara mengonfigurasi server eksternal Anda untuk melakukan replikasi ke Cloud SQL, membuat instance representasi sumber di Cloud SQL, dan mereplikasi data ke Cloud SQL. Anda harus melalui semua langkah di halaman ini sebelum melanjutkan ke langkah-langkah replikasi.

Alternatif untuk langkah-langkah yang dijelaskan di halaman ini adalah Database Migration Service, yang menawarkan replikasi berkelanjutan atau migrasi database satu kali dari server eksternal ke Cloud SQL.

Sebelum memulai

Terminologi

  • Server eksternal. Server PostgreSQL di luar Cloud SQL tempat Anda ingin mereplikasi data. Database ini juga disebut sebagai database sumber atau server database eksternal. Dapat berupa instance Cloud SQL lain atau server database lain, seperti lokal, Amazon Relational Database Service (RDS), dan sebagainya.

  • Instance representasi sumber. Tiruan instance Cloud SQL yang mewakili server eksternal untuk replika Cloud SQL. Instance ini terlihat di konsol Google Cloud dan tampak seperti instance Cloud SQL biasa, tetapi tidak berisi data, tidak memerlukan konfigurasi atau pemeliharaan, ataupun memengaruhi penagihan.

  • Replika Cloud SQL. Instance Cloud SQL yang mereplikasi dari server eksternal. Juga dikenal sebagai replika baca utama eksternal.

  • Akun pengguna replika. Akun pengguna PostgreSQL di server eksternal dengan izin yang memadai untuk memungkinkan replikasi antara server eksternal dan replika Cloud SQL.

  • Impor terkelola. Proses impor data langsung dari server eksternal ke replika Cloud SQL. Dalam situasi ini, Cloud SQL terhubung ke server eksternal menggunakan akun pengguna replikasi dan menjalankan data dump secara langsung di server eksternal untuk mengimpor data ke replika Cloud SQL.

Menyiapkan project Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. Pastikan Anda memiliki peran Cloud SQL Admin, Storage Admin, dan Compute Viewer di akun pengguna.

    Buka halaman IAM.

Instal Google Cloud SDK.

Untuk mengonfigurasi replikasi, instal Google Cloud SDK untuk server eksternal Anda. Anda dapat menginstal SDK di server eksternal, apabila belum diinstal di tempat lain.

Menyiapkan server eksternal untuk replikasi

Cloud SQL mendukung migrasi berkelanjutan dari database sumber ke database tujuan Cloud SQL.

Database sumber yang didukung untuk PostgreSQL meliputi:

  • 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, 16, dan 17
  • Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16, dan 17
  • Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15, 16, dan 17
  • Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16, dan 17

Mengonfigurasi sumber memerlukan konfigurasi instance sumber dan database sumber yang mendasarinya.

Checklist server eksternal

Jika replika Cloud SQL diaktifkan dengan alamat IP pribadi karena alamat IP pribadi yang keluar tidak statis, konfigurasikan firewall server eksternalnya untuk mengizinkan rentang rentang IP internal yang dialokasikan untuk lapisan pribadi akses layanan jaringan VPC yang digunakan replika Cloud SQL sebagai jaringan pribadinya.

Firewall server database sumber harus dikonfigurasi untuk mengizinkan seluruh rentang IP internal yang dialokasikan untuk koneksi layanan pribadi jaringan VPC yang menjadi tujuan Cloud SQL digunakan sebagai kolom privateNetwork dari setelan ipConfiguration-nya.

Untuk menemukan rentang IP internal:

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

    Buka halaman Jaringan VPC

  2. Pilih jaringan VPC yang ingin Anda gunakan.

  3. Klik tab Private service connection.

Mengonfigurasi instance sumber

Untuk mengonfigurasi instance sumber, ikuti langkah-langkah berikut:

  1. Jika instance sumber tidak menyertakan database postgres, buat instance tersebut.
  2. Instal paket pglogical pada instance sumber.
  3. Tetapkan parameter berikut sesuai kebutuhan.

    Jika instance PostgreSQL sumber adalah Amazon RDS, sertakan parameter ini dalam grup parameter baru dan lampirkan grup parameter ke instance.

    • Jika sumbernya adalah Cloud SQL, tetapkan tanda cloudsql.logical_decoding dan cloudsql.enable_pglogical ke on.

      Untuk mengaktifkan flag di Cloud SQL, lihat Mengonfigurasi flag database.

    • Tetapkan shared_preload_libraries untuk menyertakan pglogical menggunakan perintah berikut:

      ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
            
    • Tetapkan wal_level ke logical menggunakan perintah berikut:

          ALTER SYSTEM SET wal_level = 'logical';
          

      Jika instance PostgreSQL sumber adalah Amazon RDS, untuk mengaktifkan log WAL di level logical, tetapkan parameter rds.logical_replication ke 1.

    • Tetapkan wal_sender_timeout ke 0 menggunakan perintah berikut:

      ALTER SYSTEM SET wal_sender_timeout = 0;

      Nilai 0 menonaktifkan mekanisme waktu tunggu yang digunakan untuk menghentikan koneksi replikasi tidak aktif.

    • Tetapkan max_reverification_slots ke jumlah maksimum slot replikasi yang dapat didukung oleh instance sumber. Gunakan perintah berikut, setelah mengganti # dengan nomor:

      ALTER SYSTEM SET max_replication_slots = #;

      Cloud SQL memerlukan satu slot untuk setiap database yang dimigrasikan. Tentukan setidaknya jumlah langganan yang diharapkan akan terhubung, dengan beberapa cadangan untuk sinkronisasi tabel.

      Misalnya, jika instance sumber memiliki 5 database dan 2 tugas migrasi dibuat untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, selain jumlah slot replikasi yang sudah Anda gunakan.

    • Tetapkan max_wal_senders agar setidaknya sama dengan max_replication_slots, selain jumlah pengirim yang sudah digunakan di instance Anda. Gunakan perintah berikut, dengan mengganti # dengan jumlah total proses pengirim WAL yang berjalan secara bersamaan:

      ALTER SYSTEM SET max_wal_senders = #;

      Misalnya, jika parameter max_replication_slots ditetapkan ke 10, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12.

    • Tetapkan max_worker_processes ke setidaknya jumlah database dalam instance sumber, selain jumlah proses pekerja yang sudah digunakan di instance Anda. Gunakan perintah berikut, setelah mengganti # dengan jumlah total:

      ALTER SYSTEM SET max_worker_processes = #;
  4. Parameter yang Anda tetapkan pada langkah ini berlaku untuk server database PostgreSQL yang sedang berjalan. Anda juga dapat membuat perubahan ini persisten dengan menyertakannya dalam file postgresql.conf.

  5. Jika replika Cloud SQL akan menggunakan IP pribadi, konfigurasikan firewall server eksternal Anda untuk mengizinkan rentang IP internal yang dialokasikan untuk akses layanan pribadi jaringan VPC replika.
  6. Untuk menerapkan perubahan konfigurasi, mulai ulang instance sumber.

Mengaktifkan pemantauan penundaan replikasi untuk versi PostgreSQL sebelum 9.6

Jika Anda bermigrasi dari versi PostgreSQL yang lebih rendah dari 9.6, metrik penundaan replikasi tidak tersedia secara default. Anda dapat menggunakan salah satu dari tiga alternatif untuk melacak metrik ini dan memastikan periode nonaktif minimal saat mempromosikan database:

  • Opsi 1: Aktifkan server eksternal Cloud SQL untuk melacak penundaan replikasi dengan memberikan akses ke kueri tertentu. Dengan menggunakan pengguna dengan hak istimewa SUPERUSER, lakukan hal berikut:

    1. Tentukan fungsi berikut untuk memungkinkan server eksternal 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;
      $$;
      
    2. Berikan izin EXECUTE kepada pengguna dengan menjalankan perintah berikut:

      1. REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
      2. GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
  • Opsi 2: Memberikan hak istimewa SUPERUSER secara langsung kepada pengguna yang digunakan untuk terhubung ke instance sumber. Ini memungkinkan server eksternal untuk 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, Cloud SQL tidak mencerminkan metrik penundaan replikasi dalam grafik atau respons API.

Mengonfigurasi database sumber

Server eksternal Cloud SQL akan memigrasikan semua database pada instance sumber Anda selain yang berikut ini:

  • Untuk sumber lokal: database temllate template0 dan template1
  • Untuk sumber Amazon RDS: template0, template1, dan rdsadmin
  • Untuk sumber Cloud SQL: database template template0 dan template1

Lakukan hal berikut pada setiap database dalam instance sumber yang tidak disertakan dalam daftar sebelumnya:

  1. Untuk menginstal ekstensi pglogical, jalankan perintah berikut pada setiap database di instance sumber Anda:

    CREATE EXTENSION IF NOT EXISTS pglogical

    Untuk tabel yang tidak memiliki kunci utama, Cloud SQL mendukung migrasi snapshot awal dan pernyataan INSERT selama fase perubahan pengambilan data (CDC). Migrasikan pernyataan UPDATE dan DELETE secara manual.

  2. Hubungkan ke instance dan jalankan perintah berikut untuk menetapkan hak istimewa bagi pengguna di setiap database yang dimigrasikan, serta database postgres default.

    Pengguna yang Anda gunakan untuk terhubung ke instance sumber dikonfigurasi sebagai pengguna di halaman Connection Profiles. Anda dapat membuat pengguna baru atau menggunakan kembali pengguna yang sudah ada.

    • Jalankan perintah berikut di semua skema di setiap database yang akan dimigrasikan, kecuali untuk skema dan skema informasi yang dimulai dengan pg_:

      GRANT USAGE on SCHEMA schema to username;
      GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username;
      GRANT SELECT on ALL TABLES in SCHEMA schema to username;
    • Di setiap database yang akan dimigrasikan, jalankan perintah berikut:

      GRANT USAGE on SCHEMA pglogical to PUBLIC;
    • Untuk mendapatkan informasi replikasi dari database sumber,di semua database, jalankan perintah berikut:

      GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
    • Jika sumber Anda adalah Amazon RDS, jalankan perintah berikut:

      GRANT rds_replication to username;

      Jika tidak, jalankan perintah berikut:

      ALTER USER username with REPLICATION;

Menyiapkan instance representasi sumber

Instance representasi sumber mereferensikan server eksternal. Properti ini hanya berisi data permintaan dari server eksternal Buat data permintaan dan gunakan dalam perintah curl yang membuat instance representasi sumber di Cloud SQL.

Membuat data permintaan

Data permintaan berisi informasi dasar tentang server eksternal Anda dalam format JSON. Data permintaan dapat dikonfigurasi untuk replika Cloud SQL di jaringan publik atau pribadi, dan harus berisi informasi berikut:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST",
        "username": "USERNAME",
        "password": "PASSWORD",
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }

contoh impor terkelola

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "POSTGRES_9_6",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Properti Properti
SOURCE_NAME Nama instance representasi sumber yang akan dibuat.
REGION Region tempat Anda ingin tempatkan instance representasi sumber.
DATABASE_VERSION Versi database yang berjalan di server eksternal Anda. Opsinya adalah POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15, POSTGRES_16, atau POSTGRES_17.
SOURCE HOST Alamat dan port IPv4 untuk server eksternal, atau alamat DNS untuk server eksternal. Jika server eksternal dihosting di Cloud SQL, port-nya adalah 5432.
USERNAME Akun pengguna replikasi di server eksternal.
PASSWORD Sandi untuk akun pengguna replikasi.
BUCKET Nama bucket yang berisi file dump. Hanya sertakan jika Anda menyiapkan replikasi dengan file dump yang ada di bucket Cloud Storage.
DUMP_FILE File dalam bucket yang berisi data dari server eksternal.
CLIENT_CA_CERT Sertifikat CA di server eksternal. Hanya sertakan jika SSL/TLS digunakan di server eksternal.
CLIENT_CERT Sertifikat klien pada server eksternal. Hanya diperlukan untuk autentikasi server-klien. Hanya sertakan jika SSL/TLS digunakan di server eksternal.
CLIENT_KEY File kunci pribadi untuk sertifikat klien pada server eksternal. Hanya diperlukan untuk autentikasi server-klien. Hanya sertakan jika SSL/TLS digunakan di server eksternal.

Membuat instance representasi sumber

Sebelum memulai langkah ini, buat file JSON yang berisi data permintaan sumber.

Kemudian, untuk membuat instance representasi sumber di Cloud SQL, buka terminal dan jalankan perintah berikut:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

contoh

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X POST \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Properti Properti
PROJECT_ID ID untuk project Anda di Google Cloud.
JSON_PATH Jalur ke file JSON yang berisi data permintaan untuk server eksternal.

Mengupdate instance representasi sumber

Jika memperbarui data permintaan dari server eksternal, Anda dapat memperbarui instance representasi sumber yang ada untuk menggunakan nilai yang diubah.

Mengubah data permintaan

Perbarui data permintaan agar menyertakan kolom yang telah diubah. Hal ini mencakup kolom hostPort, username, password, caCertificate, clientCertificate, dan clientKey. Setelah memperbarui data permintaan, gunakan data tersebut dalam perintah curl untuk memperbarui instance di Cloud SQL.

Contoh berikut menunjukkan pembaruan kolom username dan password dengan nama pengguna dan sandi yang berbeda:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "username": "NEW_USERNAME",
        "password": "NEW_PASSWORD"
      }
    }

contoh impor terkelola

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "POSTGRES_9_6",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}
Properti Properti
SOURCE_NAME Nama instance representasi sumber.
REGION Region tempat instance representasi sumber berada.
DATABASE_VERSION Versi database yang berjalan di server eksternal Anda. Opsinya adalah POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15, POSTGRES_16, atau POSTGRES_17.
NEW_USERNAME Akun pengguna replikasi baru di server eksternal.
NEW_PASSWORD Sandi untuk akun baru.

Mengubah instance representasi sumber

Sebelum memulai langkah ini, buat file JSON yang berisi data permintaan yang telah diubah.

Kemudian, untuk mengubah instance representasi sumber di Cloud SQL, buka terminal dan jalankan perintah berikut:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

contoh

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X PATCH \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Properti Properti
PROJECT_ID ID untuk project Anda di Google Cloud.
JSON_PATH Jalur ke file JSON yang berisi data permintaan untuk server eksternal.
SOURCE_NAME Nama instance representasi sumber.

Menyiapkan replika Cloud SQL

Replika Cloud SQL nantinya berisi data dari server eksternal. Pada langkah ini, Anda akan membuat data permintaan dan menggunakannya dalam perintah curl yang akan membuat replika Cloud SQL di Cloud SQL.

Membuat data permintaan

Data permintaan berisi informasi dasar tentang server eksternal Anda dan replika Cloud SQL dalam format JSON. Data permintaan dapat dikonfigurasi untuk replika Cloud SQL di jaringan publik atau pribadi dan harus berisi informasi berikut:

replica.json

    {
        "settings": {
            "tier": "TIER",
            "dataDiskSizeGb": "DISK_SIZE",
            "ipConfiguration": {
                "ipv4Enabled": "PUBLIC_IP_STATUS",
                "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
             },
             "availabilityType": "AVAILABILITY_TYPE"
        },
        "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
        "region": "SOURCE_REGION",
        "databaseVersion": "DATABASE_VERSION",
        "name": "REPLICA_NAME"
    }

contoh

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "POSTGRES_16",
        "name": "replica-instance"
    }
Properti Properti
TIER Jenis mesin untuk menghosting instance replika Anda. Jika Anda tidak mengetahui jenis mesin yang akan digunakan, mulai dengan db-custom-2-7680. Anda dapat mengubah ukuran dan nilai lainnya yang didukung nanti jika diperlukan.
DISK_SIZE Ukuran penyimpanan untuk replika Cloud SQL, dalam GB.
PUBLIC_IP_STATUS Menentukan apakah instance diberi alamat IP publik. Secara default, nilai properti ini adalah true. Untuk menonaktifkan penetapan alamat IP publik untuk replika, tetapkan nilai ke false. Jika project Anda telah mengaktifkan kebijakan organisasi constraints/sql.restrictPublicIp, untuk membuat replika Cloud SQL, Anda harus menetapkan nilai properti ipv4Enabled ke false. Untuk mengetahui informasi selengkapnya tentang menonaktifkan penetapan alamat IP publik, lihat Menonaktifkan IP publik.
PROJECT_ID Jika replika Cloud SQL berada di jaringan pribadi, sertakan properti privateNetwork dalam file replica.json. Untuk PROJECT_ID, tentukan ID project Anda di Google Cloud.
NETWORK_NAME Nama jaringan pribadi yang akan digunakan dengan replika Cloud SQL.
AVAILABILITY_TYPE Jenis ketersediaan replika Cloud SQL. Secara default, nilainya adalah ZONAL. Untuk membuat replika dengan ketersediaan tinggi (HA), tetapkan nilai ke REGIONAL. Untuk mempelajari nilai yang diizinkan, lihat SqlAvailabilityType.
Setelah membuat replika HA server eksternal, Anda tidak dapat mengubahnya menjadi replika non-HA. Hal ini juga berlaku sebaliknya. Anda tidak dapat mengubah replika non-HA server eksternal menjadi replika dengan HA.
Failover manual dapat menyebabkan migrasi tidak dapat dipulihkan jika dicoba saat instance masih memuat data awal, atau menyebabkan periode nonaktif sementara jika instance sudah direplikasi dari sumber. Periksa status replika.
SOURCE_REPRESENTATION_INSTANCE_NAME Nama instance representasi sumber.
SOURCE_REGION Region yang ditetapkan ke instance representasi sumber.
DATABASE_VERSION Versi database yang akan digunakan dengan replika Cloud SQL. Opsi untuk versi ini adalah POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15, POSTGRES_16, atau POSTGRES_17. Cocokkan versi database yang berjalan di server eksternal Anda, atau tetapkan nilai ke tidak lebih dari satu versi nanti.
REPLICA_NAME Nama replika Cloud SQL yang akan dibuat.

Membuat replika Cloud SQL

Sebelum memulai langkah ini, buat file JSON yang berisi data permintaan replika. Kemudian, untuk membuat replika Cloud SQL, buka terminal Cloud Shell dan jalankan perintah berikut:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

contoh

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./replica.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Properti Properti
PROJECT_ID ID project Anda di Google Cloud, yang harus sama dengan ID instance sumber.
JSON_PATH Jalur ke file JSON yang berisi data permintaan untuk replika Cloud SQL.

Memverifikasi penyiapan Anda

Untuk memastikan instance Anda disiapkan dengan benar, buka halaman Instance Cloud SQL.

Anda akan melihat instance representasi sumber dan replika Cloud SQL, dalam listingan tampak seperti berikut ini:

ID instance Jenis IP Publik
(-) source-representation-instance Primer eksternal database 10.68.48.3:5432
     Instance replika Replika baca database 34.66.48.59

Pastikan juga Anda memiliki izin cloudsql.instances.migrate pada replika Cloud SQL. Izin ini disertakan dalam peran IAM cloudsql.admin atau cloudsql.editor.

Menambahkan pengguna ke replika Cloud SQL

Anda tidak dapat mengimpor akun pengguna database dari server eksternal, tetapi Anda dapat membuatnya di replika Cloud SQL. Lakukan langkah ini sebelum Anda mereplikasi dari server eksternal.

Mendapatkan alamat IP keluar replika Cloud SQL

Anda dapat menggunakan alamat IP keluar dari replika Cloud SQL untuk membuat koneksi aman antara server eksternal dan replika Cloud SQL. Anda tidak akan dikenai biaya untuk alamat IP ini.

Konsol

Guna mendapatkan alamat IP keluar untuk replika, lakukan langkah berikut:

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Di samping alamat IP publik replika Cloud SQL, arahkan kursor ke tooltip Info selengkapnya dan ambil alamat IP keluar.

    Perlu diperhatikan bahwa alamat IP keluar bukanlah alamat IP yang ditampilkan di listingan utama untuk replika di konsol Google Cloud.

gcloud

Untuk mendapatkan alamat IP keluar untuk replika, jalankan perintah berikut:

gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Deskripsi Properti
REPLICA_NAME Nama replika Cloud SQL yang alamat IP publik keluarnya ingin Anda ambil.

Mengizinkan koneksi masuk di server eksternal

Replika Cloud SQL harus terhubung ke server eksternal agar replikasi berhasil. Anda harus mengonfigurasi firewall jaringan untuk server eksternal Anda agar dapat menerima koneksi dari alamat IP keluar replika Cloud SQL apabila kondisi berikut berlaku:

  • Server eksternal berada di belakang firewall atau beberapa pembatasan jaringan lainnya.
  • Replika Cloud SQL Anda menggunakan IP publik.

Untuk terhubung ke replika Cloud SQL, Anda menggunakan alamat IP utama replika. Alamat IP ini ditampilkan di konsol Google Cloud.

Mengupdate instance representasi sumber untuk mengizinkan replikasi ke replika Cloud SQL

Setelah menyiapkan instance representasi sumber untuk replika Cloud SQL, Anda mungkin perlu mengupdate instance representasi sumber. Misalnya, skenario berikut memerlukan update pada konfigurasi Anda:

  • Host, port, atau IP server eksternal berubah.
  • Anda ingin menggunakan pengguna replikasi PostgreSQL yang berbeda.
  • Sandi pengguna replikasi PostgreSQL berubah.
  • Sertifikat SSL yang digunakan untuk terhubung ke perubahan server eksternal dengan aman.

Membuat seed replika Cloud SQL

Untuk pemuatan awal data dari server eksternal ke replika Cloud SQL, gunakan impor terkelola. Library ini menggunakan layanan yang mengekstrak data dari server eksternal dan mengimpornya secara langsung ke instance Cloud SQL. Untuk mengetahui informasi selengkapnya, lihat Menggunakan impor terkelola untuk menyiapkan replikasi dari database eksternal.

Pantau replikasi

Setelah menyelesaikan pemuatan data awal, replika Cloud SQL terhubung ke server eksternal dan menerapkan semua update yang dilakukan setelah operasi ekspor. Konfirmasi status replikasi Anda.

Penting untuk memeriksa status replikasi sebelum mempromosikan replika ke instance mandiri. Jika proses replikasi tidak berhasil diselesaikan, replika yang dipromosikan tidak mendapatkan semua perubahan dari server eksternal Anda.

Jika penundaan replikasi tidak mengarah 0, ambil tindakan untuk mengatasinya. Anda mungkin perlu memeriksa metrik ini: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag, dan database/replication/state. Lihat daftar Metrik Cloud SQL.

Setelah replika Cloud SQL terhubung dengan server eksternal dan tidak ada penundaan replikasi pada replika Cloud SQL, hubungkan ke database Anda. Jalankan perintah database yang sesuai untuk memastikan bahwa konten sesuai harapan jika dibandingkan dengan server eksternal. Pertahankan server eksternal Anda hingga validasi yang diperlukan selesai.

Menyiapkan replika yang bertingkat

Setelah migrasi, Anda dapat membuat replika baca bertingkat di bawah replika Cloud SQL sebelum mempromosikan replika Cloud SQL.

Untuk membuat replika bertingkat, jalankan perintah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik tab Replicas untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
  3. Klik Buat replika.
  4. Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
  5. Klik Buat.

    Cloud SQL akan membuat replika. Anda akan dikembalikan ke halaman instance untuk replika induk.

  6. Ikuti langkah 4-6 untuk setiap replika bertingkat baru yang ingin Anda buat.

gcloud

  1. Buat replika baru dengan menentukan replika Cloud SQL Anda sebagai instance utama menggunakan flag --master-instance-name:
  2. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Ganti kode berikut:
    • REPLICA_NAME: ID unik untuk replika yang Anda buat
    • PARENT_REPLICA_NAME: nama replika Cloud SQL
  3. Setelah replika dibuat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.

curl

  1. Untuk membuat replika di bawah replika induk, edit contoh kode JSON berikut dan simpan ke file bernama request.json:

    {
      "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  2. Jalankan perintah berikut:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

Mempromosikan replika

Promosikan replika dengan mengikuti langkah-langkah berikut:

  1. Promosikan replika menjadi instance utama.
  2. Tambahkan replika baca ke instance Anda.
  3. Opsional: Konfigurasikan instance Anda untuk ketersediaan tinggi (HA). Untuk mencegah periode nonaktif tambahan, Anda dapat mengaktifkan HA saat menyiapkan replika dengan menetapkan AVAILABILITY_TYPE ke REGIONAL.

Batasan

  • Jika Anda menginstal ekstensi di database sumber eksternal yang tidak didukung Cloud SQL, saat Anda memigrasikan database ke instance tujuan, Cloud SQL tidak akan memigrasikan ekstensi ini. Untuk memastikan migrasi berjalan lancar, pastikan tidak ada objek atau aplikasi yang mereferensikan ekstensi. Sebelum melanjutkan migrasi, sebaiknya hapus ekstensi beserta referensi apa pun dari database sumber.

    Untuk mengetahui informasi selengkapnya tentang ekstensi yang didukung Cloud SQL, lihat Mengonfigurasi ekstensi PostgreSQL.

  • Jika Anda menginstal ekstensi pg_cron di database sumber eksternal, saat Anda memigrasikan database ke instance tujuan, Cloud SQL tidak akan memigrasikan ekstensi atau setelan cron apa pun yang terkait dengan ekstensi. Setelah memigrasikan database dan mempromosikan replika, Google merekomendasikan agar Anda mengaktifkan kembali ekstensi pg_cron di setiap database yang dimigrasikan.

Langkah selanjutnya