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
- 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
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:
Di konsol Google Cloud, buka halaman jaringan VPC.
Pilih jaringan VPC yang ingin Anda gunakan.
Klik tab Private service connection.
Mengonfigurasi instance sumber
Untuk mengonfigurasi instance sumber, ikuti langkah-langkah berikut:
- Jika instance sumber tidak menyertakan database
postgres
, buat instance tersebut. - Instal paket pglogical pada instance sumber.
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
dancloudsql.enable_pglogical
keon
.Untuk mengaktifkan flag di Cloud SQL, lihat Mengonfigurasi flag database.
Tetapkan
shared_preload_libraries
untuk menyertakanpglogical
menggunakan perintah berikut:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Tetapkan
wal_level
kelogical
menggunakan perintah berikut:ALTER SYSTEM SET wal_level = 'logical';
Jika instance PostgreSQL sumber adalah Amazon RDS, untuk mengaktifkan log WAL di level
logical
, tetapkan parameterrds.logical_replication
ke1
.Tetapkan
wal_sender_timeout
ke0
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 ke10
, 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 = #;
- 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.
- Untuk menerapkan perubahan konfigurasi, mulai ulang instance sumber.
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
.
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: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; $$;
Berikan izin
EXECUTE
kepada pengguna dengan menjalankan perintah berikut:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
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
dantemplate1
- Untuk sumber Amazon RDS:
template0
,template1
, danrdsadmin
- Untuk sumber Cloud SQL: database template
template0
dantemplate1
Lakukan hal berikut pada setiap database dalam instance sumber yang tidak disertakan dalam daftar sebelumnya:
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 pernyataanUPDATE
danDELETE
secara manual.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:
-
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 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
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Klik tab Replicas 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
- 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
- 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", } }
- 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.
- 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
.
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 setelancron
apa pun yang terkait dengan ekstensi. Setelah memigrasikan database dan mempromosikan replika, Google merekomendasikan agar Anda mengaktifkan kembali ekstensipg_cron
di setiap database yang dimigrasikan.
Langkah selanjutnya
- Pelajari cara menggunakan impor terkelola untuk menyiapkan replikasi dari database eksternal.