Bisakah seorang budak MySQL menjadi master pada saat yang sama?


17

Saya sedang dalam proses memigrasi 2 server DB (Master & Slave) ke dua Server DB baru (Master dan Slave)

DB1 - Master (produksi)

DB2 - Budak (produksi)

DB3 - Master Baru

DB4 - Budak Baru

Saat ini saya memiliki replikasi yang diatur sebagai:

DB1 -> DB2
DB3 -> DB4

Untuk mendapatkan data produksi direplikasi ke server baru, saya ingin mendapatkannya "daisy dirantai" sehingga terlihat seperti ini:

DB1 -> DB2 -> DB3 -> DB4

Apakah ini mungkin? Ketika saya menjalankan show master status;pada DB2 (budak produksi) kepemilikan binlog sepertinya tidak pernah berubah:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| File | Posisi | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Saya agak bingung mengapa posisi binlog tidak berubah pada DB2, Idealnya itu akan menjadi master untuk DB3.

Jawaban:



9

Ya, itu mungkin :) Ini disebut replikasi "Master with Relay Slave" dan ada banyak dokumen tentang itu di internet.

Saya sarankan Anda untuk melihat dokumentasi resmi di sini .

Btw, lihat juga slide ini . Mereka memiliki beberapa petunjuk tentang topologi replikasi.

Semoga ini membantu.


3

ya - Anda dapat daisy-chain server mysql, Anda bahkan dapat membuat replikasi melingkar dengan dua atau lebih mesin di dalamnya. hanya ingat untuk mengaktifkan binloging pada slave yang juga bertindak sebagai master.


1
Replikasi melingkar sangat rapuh. Ini keliru dalam sebagian besar keadaan.
Warner

@ Warner - ini hanyalah contoh pengaturan replikasi yang lebih rumit.
pQd

Teman-teman jangan biarkan server mysql daisy-chain teman.
sjas

@ Sjas kecuali mereka memiliki alasan yang sangat spesifik untuk melakukannya dan memahami konsekuensi potensial dari memutus rantai.
pQd

Maaf, tapi tetap saja no.Complexity selalu menghantui Anda nanti.
sjas

0

Ya itu mungkin. Secara realistis, Anda memerlukan snapshot baru DB2 untuk membangun DB3. Pada titik itu, jika Anda memiliki posisi yang baik, Anda dapat menggunakan selain untuk DB4 atau mengambil snapshot lain dari DB3.

Jangan lupa untuk mengatur unik server_iduntuk setiap server.

Kinerja Tinggi MySQL adalah buku yang bagus untuk referensi administrasi MySQL yang lebih maju.


DB2 saat ini hanya seorang budak, tetapi posisi binlog tidak berubah ... Apakah Anda tahu apakah itu normal?
mmattax

Budak (DB2) mutakhir dengan master, namun posisi binlog tidak berubah, apa yang harus saya periksa?
mmattax

Ya, saya telah mengkonfirmasi bahwa saya dapat mengubah data pada DB1 dan itu direplikasi ke DB2, namun posisi binlog DB2 adalah sama.
mmattax

Saya pikir DB @ tidak mencatat pembaruan budak, karenanya mengapa posisinya tidak berubah: dev.mysql.com/doc/refman/5.1/en/…
mmattax

0

Mengapa tidak menambahkan DB3 sebagai budak baru, dan kemudian mempromosikannya ke master ketika Anda siap untuk beralih? Ini akan memberi Anda manfaat tambahan sementara dari memiliki banyak budak, dan mengurangi atau menghilangkan waktu henti Anda.


itulah yang saya lakukan ...
mmattax
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.