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.

mmattax
sumber

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.

Marco Ramos
sumber
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.

pQd
sumber
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.

Warner
sumber
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.

phuzion
sumber
itulah yang saya lakukan ...
mmattax