Halaman ini menjelaskan proses untuk menyiapkan replikasi jika Anda memiliki file dump yang dibuat dari server eksternal.
Anda harus menyelesaikan semua langkah di halaman ini. Setelah selesai, Anda dapat mengelola dan memantau instance representasi sumber dengan cara yang sama seperti yang Anda lakukan pada instance Cloud SQL lainnya.
Sebelum memulai
Sebelum memulai, Anda harus mengonfigurasi server eksternal, membuat instance representasi sumber, dan menyiapkan replika Cloud SQL.
Memperbarui izin untuk pengguna replikasi
Pengguna replikasi di server eksternal dikonfigurasi
untuk menerima koneksi dari host mana pun (%
). Anda harus memperbarui akun pengguna ini
agar akun ini hanya dapat digunakan dengan replika Cloud SQL.
Buka terminal di server eksternal, lalu masukkan perintah ini:
Klien mysql
UPDATE mysql.user SET Host='NEW_HOST' WHERE Host='OLD_HOST' AND User='USERNAME'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'GCP_USERNAME'@'HOST'; FLUSH PRIVILEGES;
contoh
UPDATE mysql.user SET Host='192.0.2.0' WHERE Host='%' AND User='replicationUser'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'gcp_user'@'gmail.com'; FLUSH PRIVILEGES;
Properti | Deskripsi |
---|---|
NEW_HOST | Menentukan IP keluar dari replika Cloud SQL. |
OLD_HOST | Nilai saat ini yang ditetapkan ke Host yang ingin Anda
ubah. |
USERNAME | Akun pengguna replikasi di server eksternal. |
GCP_USERNAME | Nama pengguna untuk akun pengguna Google Cloud Platform (GCP). |
HOST | Nama host untuk akun pengguna Google Cloud Platform (GCP). |
Memverifikasi setelan replikasi Anda
Setelah penyiapan selesai, pastikan replika Cloud SQL dapat direplikasi dari server eksternal.
Pertama, pastikan setelan sinkronisasi eksternal Anda sudah benar. Untuk melakukannya, gunakan perintah di bawah ini untuk memverifikasi:
- Konektivitas replika Cloud SQL dengan server eksternal
- Hak istimewa pengguna replikasi
- Kompatibilitas versi
- Replika Cloud SQL belum direplikasi
- Binlog diaktifkan di server eksternal
- ID transaksi global (GTID) diaktifkan
Buka terminal, lalu masukkan perintah ini untuk memverifikasi bahwa setelan sinkronisasi eksternal sudah benar:
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/verifyExternalSyncSettings
contoh
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Properti | Deskripsi |
---|---|
SYNC_MODE | verifyExternalSyncSettings memverifikasi bahwa Anda
dapat menjaga replika Cloud SQL dan
server eksternal
tetap sinkron setelah replikasi disiapkan. Mode sinkronisasi
mencakup EXTERNAL_SYNC_MODE_UNSPECIFIED ,
ONLINE , dan OFFLINE . |
SKIP_VERIFICATION | Jika Anda akan melewati langkah verifikasi bawaan sebelum menyinkronkan data. Hanya direkomendasikan jika Anda sudah memverifikasi setelan replikasi. |
PROJECT_ID | ID project Anda di Google Cloud. |
REPLICA_INSTANCE | ID replika Cloud SQL Anda. |
Mengekspor database ke bucket Cloud Storage
Anda dapat mengisi replika Cloud SQL dengan file mysqldump
yang berada di
bucket Cloud Storage. Ketentuan berikut berlaku:
- Anda harus menggunakan utilitas
mysqldump
yang dipaketkan dengan MySQL. - Saat
mysqldump
sedang berjalan, jangan jalankan operasi DDL apa pun di server eksternal. Jika Anda melakukannya, file ekspor akan mengalami inkonsistensi.
Untuk mengekspor database ke bucket Cloud Storage, ikuti langkah-langkah berikut:
- Di Google Cloud, buat bucket Cloud Storage.
- Buka terminal menggunakan klien yang terhubung ke server database eksternal, lalu jalankan perintah berikut.
mysqldump
mysqldump \ --host=EXTERNAL_HOST \ --port=EXTERNAL_PORT \ --user=USERNAME\ --password=PASSWORD \ --databases=DATABASE_LIST \ --hex-blob \ SOURCE_DATA \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --set-gtid-purged=on \ ADD_DROP_TABLE \ ROUTINES \ COMPRESS \ GZIP \ | gcloud storage cp - gs://BUCKET/DUMP_FILENAME
contoh
mysqldump \ --host=192.0.2.1 \ --port=3306 \ --user=replicationUser \ --password \ --databases guestbook journal \ --hex-blob \ --master-data=1 \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --compress \ | gzip \ | gcloud storage cp - gs://replica-bucket/external-database.sql.gz
Properti | Deskripsi |
---|---|
EXTERNAL_HOST | Alamat IPv4 atau DNS untuk server eksternal. |
EXTERNAL_PORT | Port untuk server eksternal.
Jika server eksternal dihosting di Cloud SQL,
maka ini adalah 3306 . |
USERNAME | Nama akun pengguna replikasi atau akun pengguna di server eksternal yang memiliki izin baca database. |
PASSWORD | Sandi pengguna replikasi. |
DATABASE_LIST | Daftar yang dipisahkan spasi dari semua database di server
eksternal, kecuali untuk database sistem (sys ,
mysql , performance_schema , dan
information_schema ). Gunakan perintah MySQL SHOW DATABASES
untuk menampilkan database. |
SOURCE_DATA | Jika Anda menggunakan versi MySQL yang lebih lama dari versi 8.0.26,
gunakan --master-data sebagai nilai untuk parameter ini.
Untuk versi MySQL 8.0.26 atau versi yang lebih tinggi,
tetapkan nilai parameter ini ke --source-data . |
ADD_DROP_TABLE | Jika Anda ingin menambahkan pernyataan DROP TABLE sebelum
setiap pernyataan CREATE TABLE , sertakan --add-drop-table . |
ROUTINES | Jika Anda ingin menampilkan rutinitas yang tersimpan, seperti
prosedur dan fungsi dalam output untuk database
yang dibuang, sertakan --routines . |
COMPRESS | Jika Anda ingin mengompresi semua informasi yang dikirim antara
replika Cloud SQL dan server eksternal,
gunakan --compress . |
GZIP | Jika ingin mengompresi file dump lebih banyak lagi, gunakan
| gzip . Jika database Anda berisi data yang tidak
dikompresi dengan baik, seperti data biner yang tidak dapat dikompresi
atau gambar JPG, jangan gunakan perintah ini. |
BUCKET | Nama bucket yang dibuat di Langkah 1 agar berisi file dump. |
DUMP_FILENAME | File dengan nama ini dibuat di bucket Anda. File ini berisi konten database di server eksternal Anda. |
Mengupdate instance representasi sumber dengan jalur file bucket Cloud Storage
Instance representasi sumber adalah instance Cloud SQL yang merepresentasikan server database sumber ke replika Cloud SQL. Instance ini terlihat di konsol Google Cloud dan tampak sama seperti instance Cloud SQL biasa, tetapi tidak berisi data, tidak memerlukan konfigurasi atau pemeliharaan, serta tidak memengaruhi penagihan.
File source.json
berisi informasi tentang instance
representasi sumber.
REST
{ "name": "PRIMARY_INSTANCE_NAME", "region": "REGION_NAME", "databaseVersion": "DB_NAME_AND_VERSION", "onPremisesConfiguration": { "hostPort": "IP_ADDRESS_AND_PORT", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
contoh
{ "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" }
Properti | Deskripsi |
---|---|
PRIMARY_INSTANCE_NAME | Nama instance Cloud SQL yang terkait dengan instance representasi sumber. |
REGION_NAME | Nama region yang ditetapkan ke instance representasi sumber. |
DB_NAME_AND_VERSION | Nama dan nomor versi database yang terkait dengan instance representasi sumber. |
IP_ADDRESS_AND_PORT | Alamat IP dan nomor port yang dicadangkan untuk instance representasi sumber. |
USERNAME | Nama pengguna dari instance representasi sumber. |
PASSWORD | Sandi instance representasi sumber. |
DUMP_FILE_PATH | Jalur file dump yang berisi konten database di server eksternal. |
Setelah menyiapkan replika Cloud SQL, Anda perlu mengupdate instance representasi sumber dengan jalur file bucket Cloud Storage.
REST
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_REPRESENTATION_INSTANCE
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 | Deskripsi |
---|---|
JSON_PATH | Jalur file JSON yang disimpan di bucket Cloud Storage.
File ini berisi data tentang instance representasi
sumber. |
PROJECT_ID | ID project Anda di Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Nama instance representasi sumber. |
Memulai replikasi di server eksternal
Setelah memverifikasi bahwa Anda dapat melakukan replikasi dari server eksternal, Anda siap untuk melakukan replikasi.
Selama proses impor awal, jangan jalankan operasi DDL apa pun di server eksternal. Hal tersebut dapat menyebabkan inkonsistensi selama proses impor. Setelah proses impor selesai, replika menggunakan log biner di server eksternal untuk mengikuti status server eksternal saat ini.
Buka terminal, login menggunakan gcloud
, lalu masukkan perintah curl
untuk
melakukan replikasi dari server eksternal.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/startExternalSync
contoh
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online", "skipVerification": false }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Properti | Deskripsi |
---|---|
SYNC_MODE | Memverifikasi bahwa Anda dapat menjaga replika Cloud SQL dan server eksternal tetap sinkron setelah replikasi disiapkan. |
SKIP_VERIFICATION | Apakah Anda akan melewati langkah verifikasi bawaan atau tidak sebelum menyinkronkan data. Hanya direkomendasikan jika Anda sudah memverifikasi setelan replikasi. |
PROJECT_ID | ID project Anda di Google Cloud. |
REPLICA_INSTANCE | ID replika Cloud SQL Anda. |
Mengosongkan ruang penyimpanan
Jika Anda melakukan replikasi file dalam bucket, Anda dapat menghapus file dan bucket ini. Lihat dokumentasi Cloud Storage untuk Menghapus Objek dan Menghapus Bucket.
Melanjutkan dengan replikasi
Setelah memulai replikasi dari server eksternal, Anda harus memantau replikasi, lalu menyelesaikan migrasi. Untuk mempelajari lebih lanjut, lihat Memantau replikasi.
Memecahkan masalah
Masalah | Pemecahan masalah |
---|---|
Lost connection to MySQL server during query when dumping table . |
Sumbernya mungkin tidak tersedia, atau file dump berisi paket
yang terlalu besar.
Pastikan kabel primer eksternal tersedia untuk terhubung. Anda juga dapat mengubah nilai tanda net_read_timeout dan net_write_timeout pada instance sumber untuk menghentikan error. Untuk informasi selengkapnya tentang nilai yang diizinkan untuk tanda ini, lihat Mengonfigurasi tanda database. Untuk mempelajari lebih lanjut cara menggunakan tanda |
Migrasi data awal berhasil, tetapi tidak ada data yang direplikasi. | Salah satu kemungkinan penyebabnya adalah database sumber Anda telah menentukan
flag replikasi yang menyebabkan beberapa atau semua perubahan database
tidak direplikasi.
Pastikan tanda replikasi seperti Jalankan perintah |
Migrasi data awal berhasil tetapi replikasi data berhenti berfungsi setelah beberapa saat. | Hal-hal yang sebaiknya dicoba:
|
mysqld check failed: data disk is full . |
Disk data instance replika penuh.
Tingkatkan ukuran disk instance replika. Anda dapat meningkatkan ukuran disk secara manual atau mengaktifkan peningkatan penyimpanan otomatis. |
Meninjau log replikasi Anda
Saat Anda memverifikasi setelan replikasi, log akan dihasilkan.
Anda dapat melihat log ini dengan mengikuti langkah-langkah berikut:
Buka Logs Viewer di konsol Google Cloud.
- Pilih replika Cloud SQL dari dropdown Instance.
- Pilih file log
replication-setup.log
.
Jika replika Cloud SQL tidak dapat terhubung ke server eksternal, konfirmasi hal berikut:
- Setiap firewall di server eksternal akan dikonfigurasi untuk mengizinkan koneksi dari alamat IP keluar replika Cloud SQL.
- Konfigurasi SSL/TLS Anda sudah benar.
- Pengguna, host, dan sandi replikasi Anda sudah benar.
Langkah berikutnya
- Pelajari cara mengupdate instance.
- Pelajari cara mengelola replika.
- Pelajari cara memantau instance.
- Pelajari cara mempromosikan replika Cloud SQL untuk mempromosikan replika ke instance mandiri dan berhenti melakukan replikasi dari server eksternal.