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 MySQL 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 replikasi. Akun pengguna MySQL 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

Checklist server eksternal

  • Pastikan MySQL 5.5, 5.6, 5.7, 8.0, atau 8.4 diinstal di server eksternal Anda. MySQL Community Edition, Cloud SQL untuk MySQL, Amazon Aurora, dan MySQL di Amazon RDS didukung.

    • Anda harus menggunakan versi utama MySQL di replika Cloud SQL yang sama dengan atau lebih baru dari versi MySQL yang berjalan di server eksternal Anda.
    • Jika MySQL 5.5 diinstal di server eksternal, maka GTID tidak didukung.
  • Pastikan log biner diaktifkan dan:

  • Perhatikan apakah server eksternal Anda telah mengaktifkan GTID. Hal ini memengaruhi langkah apa yang perlu Anda ambil untuk menyiapkan replikasi.

  • Perhatikan apakah server eksternal Anda memiliki izin kunci baca global. Hal ini memengaruhi langkah-langkah yang perlu Anda ambil untuk menyiapkan replikasi.

  • Jika replika Cloud SQL diaktifkan dengan alamat IP pribadi karena alamat IP pribadi yang keluar tidak statis, maka konfigurasikan firewall server eksternalnya untuk mengizinkan rentang IP internal yang dialokasikan untuk akses layanan pribadi 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. Koneksi ini milik jaringan VPC yang digunakan oleh instance tujuan Cloud SQL 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 Koneksi layanan pribadi.

  • Jika server eksternal Anda berisi klausa DEFINER (pada tampilan, peristiwa, pemicu, atau prosedur tersimpannya), bergantung pada urutan kapan pernyataan ini dijalankan, proses replikasi kemungkinan akan mengalami kegagalan. Pelajari selengkapnya tentang penggunaan DEFINER dan kemungkinan solusi di Cloud SQL.

  • InnoDB adalah satu-satunya mesin penyimpanan yang didukung di Cloud SQL. Bermigrasi dengan MyISAM dapat menyebabkan inkonsistensi data dan validasi data perlu dilakukan. Untuk mengetahui informasi selengkapnya, baca Mengonversi tabel dari MyISAM ke InnoDB dalam dokumentasi MySQL.

Konfigurasikan retensi log biner

Anda harus mengonfigurasi server eksternal untuk menyimpan log biner setidaknya selama 24 jam.

Komunitas MySQL

Jika server eksternal Anda menggunakan MySQL Community Edition, Anda dapat menggunakan perintah MySQL ini untuk memperbarui setelan retensi log biner Anda.

Cloud SQL untuk MySQL

Jika server eksternal Anda menggunakan Cloud SQL untuk MySQL, secara default, log biner Anda akan disimpan selama tujuh hari. Anda dapat mengubah setelan ini.

Amazon RDS & Aurora

Jika server eksternal Anda adalah instance Amazon RDS, Anda dapat menggunakan perintah ini untuk memperbarui setelan retensi log biner:

call mysql.rds_set_configuration('binlog retention ', HOURS);
Deskripsi Properti
HOURS Total jumlah jam log biner yang akan dipertahankan oleh instance Amazon RDS.

Untuk mengetahui informasi selengkapnya, lihat mysql.rds_set_configuration.

Membuat akun pengguna replikasi

Akun pengguna MySQL yang dikhususkan untuk mengelola replikasi ke replika Cloud SQL harus ada di server eksternal Anda. Akun pengguna ini hanya boleh digunakan untuk mengelola replikasi. Bergantung pada pendekatan migrasi yang digunakan, Anda mungkin perlu memberikan izin kepada pengguna di lain waktu.

Untuk menambahkan akun pengguna replikasi, buka terminal di server eksternal dan masukkan perintah MySQL berikut:

MySQL

      CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
      GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
      FLUSH PRIVILEGES;

contoh

CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Properti Properti
USERNAME Akun pengguna replikasi di server eksternal.
PASSWORD Sandi untuk akun pengguna replikasi.
HOST Tetapkan parameter ini ke % untuk menerima semua koneksi dari host mana pun. Pada langkah berikutnya, konfigurasi ini diubah menjadi hanya menerima koneksi dari replika Cloud SQL.

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": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}

contoh file dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:"3306",
    "username": "replicationUser",
    "password": "486#@%*@",
    "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
    "caCertificate": "content of your certificate",
    "clientCertificate": "content of your certificate",
    "clientKey": "content of your client key"
  }
}

contoh impor khusus

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

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Deskripsi 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 MYSQL_5_6, MYSQL_5_7, MYSQL_8_0, atau MYSQL_8_4. .
SOURCE HOST Alamat dan port IPv4 untuk server eksternal, atau alamat DNS untuk server eksternal. Jika Anda menggunakan alamat DNS, alamat tersebut dapat berisi hingga 60 karakter. Jika server eksternal dihosting di Cloud SQL, port-nya adalah 3306 .
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": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}

contoh file dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}

contoh impor khusus

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

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}
Deskripsi 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 MYSQL_5_6, MYSQL_5_7, MYSQL_8_0, atau MYSQL_8_4.
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": "MYSQL_8_0",
        "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. Opsinya untuk versi ini adalah MYSQL_5_6, MYSQL_5_7, MYSQL_8_0, atau MYSQL_8_4. 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:3306
     replica-instance 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 MySQL yang berbeda.
  • Sandi pengguna replikasi MySQL berubah.
  • Sertifikat SSL yang digunakan untuk terhubung dengan aman ke server eksternal berubah.

Membuat seed replika Cloud SQL

Ada tiga opsi untuk melakukan pemuatan data awal dari server eksternal ke dalam replika Cloud SQL:

  • Impor terkelola menggunakan layanan yang mengekstrak data dari server eksternal dan mengimpornya secara langsung ke instance Cloud SQL. Cloud SQL merekomendasikan opsi ini. Anda harus menggunakan opsi ini jika server eksternal Anda tidak menggunakan replikasi ID transaksi global (GTID). Untuk mengetahui informasi selengkapnya, lihat Menggunakan impor terkelola untuk menyiapkan replikasi dari database eksternal.
  • File dump mengharuskan Anda membuat file dump server eksternal, memindahkannya ke bucket Cloud Storage, lalu mengimpornya ke Cloud SQL. Anda hanya dapat menggunakan opsi ini jika server eksternal Anda menggunakan replikasi GTID. Untuk mengetahui informasi selengkapnya, baca artikel Menggunakan file dump untuk menyiapkan replikasi dari database eksternal.
  • Impor kustom mengharuskan Anda membuat instance utama Cloud SQL, melakukan impor data kustom menggunakan alat pilihan Anda, mendemosikannya ke replika Cloud SQL, lalu menyiapkan replikasi server eksternal. Cara ini berfungsi paling baik untuk memigrasi database multi-TB; namun, Anda harus menggunakan replikasi GTID. Untuk informasi selengkapnya, lihat Menggunakan impor kustom untuk menyiapkan replikasi dari database eksternal besar.

Opsi mana yang tepat untuk Anda?

Diagram alur pengguna Cloud SQL

Memantau 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.

Anda dapat membuat replika bertingkat untuk instance Cloud SQL hanya jika menggunakan replikasi GTID.

Untuk membuat replika bertingkat, jalankan perintah berikut:

Konsol

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

    Buka Instance Cloud SQL

  2. Untuk MySQL 5.7 atau yang lebih baru, aktifkan replikasi.
  3. Klik tab Replika untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
  4. Klik Buat replika.
  5. Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
  6. Klik Buat.

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

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

gcloud

  1. Jika Anda menggunakan MySQL versi 5.7 atau yang lebih baru, aktifkan binlog untuk versi utama replika baru:
    gcloud sql instances patch --enable-bin-log
          --project=cascade-replica PARENT_REPLICA_NAME
    Ganti PARENT_REPLICA_NAME dengan nama replika induk.
  2. Buat replika baru dengan menentukan replika Cloud SQL Anda sebagai instance utama menggunakan flag --master-instance-name:
  3. 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
  4. Setelah replika dibuat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.

curl

  1. Jika Anda menggunakan MySQL versi 5.7 atau yang lebih baru, aktifkan logging biner:

    Untuk mengaktifkan logging biner, simpan JSON berikut dalam file dengan nama request.JSON, lalu panggil perintah curl untuk mengaktifkan logging biner.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }

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

    {
      "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. 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. Perhatikan bahwa GTID dan log biner sedang diaktifkan dan pencadangan terjadwal diaktifkan pada replika yang dipromosikan.
  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.

Langkah berikutnya