Untuk mengetahui ringkasan konseptual replikasi lintas pusat data, lihat Tentang replikasi lintas pusat data.
Sebelum memulai
- Instal Operator AlloyDB Omni versi 1.1.0 atau yang lebih tinggi untuk men-deploy AlloyDB Omni di cluster Kubernetes di pusat data utama dan cluster Kubernetes di pusat data sekunder.
- Buat cluster database AlloyDB Omni di cluster Kubernetes di pusat data utama.
Membuat cluster database sekunder
Untuk membuat cluster database sekunder AlloyDB Omni dan mengaktifkan replikasi dari cluster database utama, ikuti langkah-langkah berikut:
Kubernetes
Pastikan konektivitas eksternal diaktifkan pada cluster database utama AlloyDB Omni Anda. Jika konektivitas eksternal tidak diaktifkan, tambahkan yang berikut ke bagian spec dari manifes cluster database:
kind: DBCluster spec: allowExternalIncomingTraffic: true
Untuk mengaktifkan replikasi di cluster database utama, terapkan manifes yang mirip dengan berikut ke cluster Kubernetes Anda di pusat data utama:
apiVersion: v1 kind: Secret metadata: name: ha-rep-pw-DB_CLUSTER_NAME type: Opaque data: rep-user-pw: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: REPLICATION_NAME spec: dbcluster: name: DB_CLUSTER_NAME upstream: password: name: ha-rep-pw-DB_CLUSTER_NAME
Ganti kode berikut:
DB_CLUSTER_NAME
: Nama cluster database—misalnya,dbc-1
.ENCODED_PASSWORD
: Sandi untuk pengguna database yang akan digunakan untuk replikasi dari database sekunder, dienkode sebagai string base64—misalnya,Q2hhbmdlTWUxMjM= for ChangeMe123
. Nilai defaultnya adalahalloydbreplica
.REPLICATION_NAME
: nama replikasi—misalnya,replication-1
.
Tunggu hingga status replikasi siap.
Untuk mendapatkan informasi koneksi upstream yang digunakan untuk mengonfigurasi replikasi di cluster database sekunder, jalankan perintah berikut:
kubectl get replication REPLICATION_NAME
kubectl get replication REPLICATION_NAME -o json | jq .status.upstream
Contoh output akan terlihat mirip dengan berikut ini:
{ "host": "35.230.32.36", "password": { "name": "ha-rep-pw-dbc-1" }, "port": 5432, "replicationSlotName": "dbc_1_replication_1", "username": "alloydbreplica" }
Catat outputnya karena Anda akan memerlukannya untuk mengaktifkan replikasi di cluster database sekunder pada langkah berikutnya.
Buat cluster AlloyDB Omni di cluster Kubernetes Anda di pusat data sekunder dengan konfigurasi yang identik dengan cluster database utama Anda.
Pastikan konektivitas eksternal diaktifkan di cluster database sekunder AlloyDB Omni Anda.
Jika konektivitas eksternal tidak diaktifkan, tambahkan kode berikut ke bagian spesifikasi manifesnya:
allowExternalIncomingTraffic: true
Untuk mengaktifkan replikasi di cluster database sekunder, terapkan manifes yang mirip dengan berikut ke cluster Kubernetes Anda di pusat data sekunder:
apiVersion: v1 kind: Secret metadata: name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME type: Opaque data: rep-user-pw: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: SECONDARY_REPLICATION_NAME spec: dbcluster: name: SECONDARY_DB_CLUSTER_NAME downstream: host: PRIMARY_HOST port: PRIMARY_PORT username: alloydbreplica password: name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME replicationSlotName: PRIMARY_REPLICATION_SLOT control: setup
Ganti kode berikut:
SECONDARY_DB_CLUSTER_NAME
: Nama cluster database sekunder—misalnya,dbc-2
.ENCODED_PASSWORD
: Sandi untuk pengguna database yang akan digunakan untuk mereplikasi cluster database utama, dienkode sebagai string base64—misalnya,Q2hhbmdlTWUxMjM= for ChangeMe123
. Nilai defaultnya adalahalloydbreplica
.SECONDARY_REPLICATION_NAME
: nama replikasi—misalnya,replication-2
.PRIMARY_HOST
: endpoint koneksi cluster database utama dari output di langkah 3 yang dapat diakses oleh database sekunder untuk replikasi.PRIMARY_PORT
: port koneksi cluster database utama dari output di langkah 3 yang dapat diakses oleh database sekunder untuk replikasi.PRIMARY_REPLICATION_SLOT
: nama slot replikasi di cluster database utama dari output di langkah 3 yang dapat digunakan oleh database sekunder untuk replikasi.
Melihat replikasi di cluster database sekunder
Untuk melihat informasi mendetail tentang cluster database sekunder AlloyDB Omni dan status replikasinya, jalankan perintah berikut:
Kubernetes
kubectl get dbcluster SECONDARY_DB_CLUSTER_NAME
kubectl get replication SECONDARY_REPLICATION_NAME
Jika cluster database sekunder berhasil disiapkan dan memiliki replikasi streaming dari cluster database utama, status replikasi akan siap dan sehat.
Mempromosikan cluster database sekunder
Sebelum Anda mempromosikan cluster database sekunder, lakukan langkah-langkah berikut untuk memverifikasi bahwa cluster database sekunder telah menerapkan semua transaksi yang diterima dari cluster database utama:
Kubernetes
Periksa status replikasi cluster database sekunder, untuk memastikan bahwa cluster tersebut siap dan berfungsi dengan baik.
kubectl get replication SECONDARY_REPLICATION_NAME
Hentikan semua penulisan ke cluster database utama. Jalankan kueri berikut di cluster database utama Anda untuk memeriksa jeda replikasi database sekunder. Pastikan hasilnya menunjukkan jeda minimal.
Nilai jeda 0 adalah yang terbaik. Jika jedanya lebih besar dari 0, Anda tetap dapat mempromosikan cluster database sekunder, dengan risiko kehilangan beberapa transaksi terbaru yang sudah dilakukan di cluster database primer.
psql -h PRIMARY_HOST -U postgres -d postgres -c 'SELECT application_name, pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS replay_lag FROM pg_stat_replication;'
Untuk mempromosikan cluster database sekunder ke cluster database utama, perbarui kolom control dari manifes replikasi cluster database sekunder Anda ke promote
, dan terapkan di cluster Kubernetes Anda di pusat data sekunder.
Kubernetes
apiVersion: v1
kind: Secret
metadata:
name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME
type: Opaque
data:
rep-user-pw: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Replication
metadata:
name: SECONDARY_REPLICATION_NAME
spec:
dbcluster:
name: SECONDARY_DB_CLUSTER_NAME
downstream:
host: PRIMARY_HOST
port: PRIMARY_PORT
username: alloydbreplica
password:
name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME
replicationSlotName: PRIMARY_REPLICATION_SLOT
control: promote
Melakukan pengalihan
Sebelum melakukan peralihan, pastikan cluster database primer dan sekunder yang termasuk dalam kedua pusat data sedang online dan cluster database dalam kondisi baik.
Untuk memastikan konsistensi data cluster database utama dan sekunder Anda selama pengalihan, lakukan langkah-langkah berikut untuk memverifikasi bahwa cluster database sekunder telah menerapkan semua transaksi yang diterima dari cluster database utama:
Kubernetes
Periksa status replikasi cluster database sekunder, untuk memastikan bahwa cluster tersebut siap dan berfungsi dengan baik.
kubectl get replication SECONDARY_REPLICATION_NAME
Hentikan semua penulisan ke cluster database utama. Jalankan kueri berikut di cluster database utama Anda untuk memeriksa jeda replikasi database sekunder. Pastikan hasilnya menunjukkan nilai jeda
0
.psql -h PRIMARY_HOST -U postgres -d postgres -c 'SELECT application_name, pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS replay_lag FROM pg_stat_replication;'
Untuk melakukan pengalihan, selesaikan langkah-langkah berikut:
Kubernetes
Untuk mengonversi cluster database sekunder AlloyDB Omni menjadi cluster database utama, perbarui manifes replikasinya di cluster Kubernetes Anda di pusat data sekunder sebagai berikut:
apiVersion: v1 kind: Secret metadata: name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME type: Opaque data: rep-user-pw: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: SECONDARY_REPLICATION_NAME spec: dbcluster: name: SECONDARY_DB_CLUSTER_NAME upstream: password: name: ha-rep-pw-SECONDARY_DB_CLUSTER_NAME
Tunggu hingga status replikasi siap.
Untuk mendapatkan informasi koneksi upstream untuk replikasi, jalankan perintah berikut:
kubectl get replication SECONDARY_REPLICATION_NAME
kubectl get replication SECONDARY_REPLICATION_NAME -o json | jq .status.upstream
Contoh output akan terlihat mirip dengan berikut ini:
{ "host": "34.23.207.137", "password": { "name": "ha-rep-pw-dbc-2" }, "port": 5432, "replicationSlotName": "dbc_2_replication_2", "username": "alloydbreplica" }
Untuk mengonversi cluster database utama AlloyDB Omni menjadi cluster database sekunder, perbarui manifes replikasinya di cluster Kubernetes Anda di pusat data utama yang serupa dengan berikut ini:
apiVersion: v1 kind: Secret metadata: name: ha-rep-pw-DB_CLUSTER_NAME type: Opaque data: rep-user-pw: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: REPLICATION_NAME spec: dbcluster: name: DB_CLUSTER_NAME downstream: host: SECONDARY_HOST port: SECONDARY_PORT username: alloydbreplica password: name: ha-rep-pw-DB_CLUSTER_NAME replicationSlotName: SECONDARY_REPLICATION_SLOT control: rewind
Tunggu hingga status replikasi menjadi siap dan responsif.
Untuk memverifikasi status replikasi, gunakan:
kubectl get replication REPLICATION_NAME