Untuk mengetahui informasi selengkapnya tentang konfigurasi replika eksternal, lihat Tentang replikasi eksternal.
Menyiapkan konfigurasi replika eksternal
Sebelum memulai
Sebelum memulai tugas ini, Anda harus memiliki instance Cloud SQL dan instance MySQL eksternal yang memenuhi persyaratan untuk replika eksternal.
Mengonfigurasi instance utama
- Buka halaman Instance Cloud SQL di konsol Google Cloud.
- Aktifkan akses pada instance utama untuk alamat IP replika eksternal.
Untuk informasi tentang cara mengaktifkan akses IP, lihat Mengonfigurasi akses untuk koneksi IP.
- Catat alamat IP publik dan alamat IP publik keluar dari instance utama untuk digunakan nanti. Anda dapat menemukan nilai ini di halaman Overview instance.
- Klik ikon Cloud Shell di sudut kanan atas.
- Pada layar perintah Cloud Shell, gunakan klien MySQL bawaan untuk
terhubung ke instance utama Anda:
gcloud sql connect PRIMARY_INSTANCE_NAME \ --user=root
- Masukkan sandi root Anda. Anda kemudian akan melihat perintah mysql.
- Membuat pengguna khusus untuk replikasi dan memberikan hak istimewa replikasi:
CREATE USER 'REPLICATION_USER'@'%' IDENTIFIED BY 'REPLICATION_USER_PASSWORD'; GRANT REPLICATION SLAVE ON *.* TO 'REPLICATION_USER'@'%';
- Jika Anda memulai dengan database baru, buat database dan tabel
yang sama pada instance utama dan replika. Contoh:
CREATE DATABASE test; USE test; CREATE TABLE replica_test (id SERIAL PRIMARY KEY, data text); INSERT INTO replica_test (data) VALUES ('apple'), ('banana'), ('cherry');
- Jika sudah memiliki database pada instance utama, Anda harus membuat database yang sama pada replika. Untuk melakukannya, ekspor database dari instance utama ke bucket Cloud Storage dan impor ke dalam replika. Pelajari cara Mengekspor data dari Cloud SQL ke file dump SQL di Cloud Storage.
Mengonfigurasi replika eksternal
Peringatan: Prosedur ini menimpa data apa pun yang dihosting di database MySQL pada replika, termasuk pengguna dan sandi, dengan setelan dan data dari instance utama.-
Di mesin yang menghosting replika, tambahkan instance MySQL eksternal baru Anda
bersama file ekspor yang dibuat dari instance utama.
Misalnya, perintah berikut memuat file yang diekspor bernama
mydump.sql
:mysql --user=root --password < mydump.sql
- Tentukan ID server untuk pasangan replika-utama ini.
ID server adalah nilai numerik (misalnya, "3") yang harus unik di seluruh konfigurasi replika eksternal (setiap replika harus memiliki ID server yang unik).
- Tambahkan opsi berikut ke opsi file
my.cnf
replika:[mysqld] server-id=[SERVER_ID] gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON replicate-ignore-db=mysql binlog-format=ROW log_bin=mysql-bin expire_logs_days=1 read_only=ON
Untuk mengetahui informasi lebih lanjut mengenai opsi replikasi MySQL, lihat Opsi Replikasi dan Logging Biner.
- Mulai ulang proses
mysqld
agar file konfigurasi terbaca. - Di klien
mysql
pada replika, masukkan perintah berikut:CHANGE MASTER TO MASTER_HOST='MASTER_IP_ADDRESS', MASTER_USER='REPLICATION_USER', MASTER_PASSWORD='REPLICATION_PASSWORD', MASTER_AUTO_POSITION=1;
- Mulai mereplikasi pada replika:
START SLAVE;
Konfirmasi status replikasi:
SHOW SLAVE STATUS\G;
Jika Anda melihat "Menunggu master untuk mengirim acara", replikasi berfungsi.
Mendemosikan instance utama replika eksternal
Jika Anda memiliki instance Cloud SQL dengan replika eksternal, Anda dapat membalik konfigurasi, yang menyebabkan perubahan ini terjadi:
- Replika eksternal menjadi instance utama baru.
- Instance Cloud SQL menjadi replika baca, yang mereplikasi dari server yang sebelumnya merupakan replika eksternal (sekarang disebut server database sumber).
Untuk membalik konfigurasi replika eksternal:
-
Buat instance representasi sumber.
Instance ini akan mewakili server database sumber ke replika Cloud SQL setelah operasi demosi selesai.
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "name": "SOURCE_REPRESENTATION_NAME", "region": "REGION", "databaseVersion": "EXTERNAL_SERVER_DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "EXTERNAL_SERVER_IP:EXTERNAL_SERVER_PORT" } }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Gunakan region tempat Anda ingin menyimpan replika Cloud SQL.
Memulai proses demosi.
Karena panggilan API ini mengharuskan Anda memberikan informasi sensitif, Anda harus menggunakan file JSON untuk memberikan data ke cURL, bukan pada command line.
Membuat file data:
{ "demoteMasterContext": { "replicaConfiguration": { "mysqlReplicaConfiguration": { "username": "REPLICATION_USERNAME", "password": "PASSWORD", "caCertificate": "EXTERNAL_SERVER_CA", "clientCertificate": "CLIENT_CERT", "clientKey": "PRIVATE_KEY" } }, "masterInstanceName": "SOURCE_REPRESENTATION_NAME", }, }
Kemudian, panggil API.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @PATH_TO_DATA_FILE \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/demoteMaster
Untuk informasi selengkapnya tentang opsi Anda untuk SSL/TLS, lihat opsi SSL/TLS. Untuk mengetahui informasi selengkapnya tentang properti yang digunakan oleh objek
replicaConfiguration
, lihat Mereplikasi dari Server Eksternal.-
Tunggu replika eksternal menyelesaikan semua transaksi yang tertunda dari instance utama.
Setelah replika tercapai, perintah
SHOW SLAVE STATUS
akan menampilkanSeconds Behind Master
sebagai 0, dan nilaiExecuted_Gtid_Set
akan sama antara replika eksternal dan Cloud SQL utama. Gunakan klien
mysql
untuk menghentikan replikasi pada replika eksternal:STOP SLAVE RESET SLAVE ALL
Tunggu hingga instance Cloud SQL mulai mereplikasi dari server eksternal, yang sekarang menjadi server database sumber.
Menjalankan perintah
SHOW SLAVE STATUS
pada instance Cloud SQL akan memberikan status replikasi.-
Setelah instance Cloud SQL berhasil direplikasi dari
server database sumber, tetapkan flag
read_only
pada server database sumber keoff
dan update aplikasi Anda agar mengarah ke database sumber server web.
Memecahkan masalah
Masalah | Pemecahan masalah |
---|---|
Pesan error: The slave is connecting ... master has purged
binary logs containing GTIDs that the slave requires . |
Instance Cloud SQL utama memiliki pencadangan otomatis dan log biner,
serta pemulihan point-in-time diaktifkan, sehingga harus memiliki cukup log
agar replika dapat mengejar ketertinggalan. Namun, dalam kasus ini, meskipun
log biner ada, replika tidak tahu dari baris mana harus mulai membaca.
Buat file dump baru menggunakan setelan flag yang benar, dan konfigurasi replika eksternal menggunakan file tersebut
|
Langkah selanjutnya
- Pelajari cara mengelola replika.
- Pelajari persyaratan dan praktik terbaik untuk mengonfigurasi replika eksternal.
- Pelajari lebih lanjut.tentang replikasi MySQL
- Pelajari lebih lanjut. tentang opsi replikasi.
- Pelajari lebih lanjut tentang memeriksa status replikasi.
- Pelajari lebih lanjut tentang mereplikasi dari server eksternal.