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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Pastikan Anda memiliki peran Cloud SQL Admin, Storage Admin, dan Compute Viewer di akun pengguna.
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:
- Logging biner berbasis baris digunakan.
- Log biner dipertahankan untuk jangka waktu yang cukup lama guna mendukung migrasi database. Satu minggu umumnya cukup.
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:
Di konsol Google Cloud, buka halaman jaringan VPC.
Pilih jaringan VPC yang ingin Anda gunakan.
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 penggunaanDEFINER
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.
MySQL 5.5 - 5.7:
expire_logs_days
MySQL 8.0.x:
expire_logs_days
,binlog_expire_logs_seconds
MySQL 8.4:
binlog_expire_logs_seconds
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:
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
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?
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
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk MySQL 5.7 atau yang lebih baru, aktifkan replikasi.
- Klik tab Replika untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
- Klik Buat replika.
- Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
- Klik Buat.
Cloud SQL akan membuat replika. Anda akan dikembalikan ke halaman instance untuk replika induk.
- Ikuti langkah 4-6 untuk setiap replika bertingkat baru yang ingin Anda buat.
gcloud
- Jika Anda menggunakan MySQL versi 5.7 atau yang lebih baru, aktifkan binlog untuk versi utama replika baru:
Ganti PARENT_REPLICA_NAME dengan nama replika induk.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- Buat replika baru dengan menentukan replika Cloud SQL Anda sebagai instance utama menggunakan flag
--master-instance-name
: - REPLICA_NAME: ID unik untuk replika yang Anda buat
- PARENT_REPLICA_NAME: nama replika Cloud SQL
Setelah replika dibuat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- 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 } } }
- 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", } }
- 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:
- Promosikan replika menjadi instance utama. Perhatikan bahwa GTID dan log biner sedang diaktifkan dan pencadangan terjadwal diaktifkan pada replika yang dipromosikan.
- Tambahkan replika baca ke instance Anda.
- Opsional: Konfigurasikan instance Anda untuk ketersediaan tinggi (HA).
Untuk mencegah periode nonaktif tambahan, Anda dapat mengaktifkan HA saat menyiapkan replika dengan menetapkan
AVAILABILITY_TYPE
keREGIONAL
.
Langkah berikutnya
- Pelajari cara menggunakan impor kustom untuk menyiapkan replikasi dari database eksternal yang besar.
- Pelajari cara menggunakan file dump untuk menyiapkan replikasi dari database eksternal.
- Pelajari cara menggunakan impor terkelola untuk menyiapkan replikasi dari database eksternal.