Latar belakang : Saya memiliki dua pengaturan server MySQL 5.1 dalam replikasi berbasis baris Master-Master (RBR) mengikuti panduan yang sangat baik ini . Saya ingin semua database direplikasi, dan akan menambahkan database baru secara teratur.
Sasaran : Saya ingin dapat menambahkan basis data baru ke replikasi dengan hanya menambahkan DB ke salah satu server; tanpa harus menghentikan kedua budak, mengubah file konfigurasi, me-restart server MySQL, dan memulai kembali budak.
Pertanyaan : Dari apa yang saya baca, saya pikir saya bisa melakukan ini dengan hanya menghilangkan setiap binlog-do-db
, binlog-ignore-db
, replicate-do-db
, dan replicate-ignore-db
pengaturan dalam konfigurasi masing-masing server, tapi aku tidak bisa yakin. Dokumen MySQL tentang bagaimana opsi replikasi tingkat Database dan Tabel dievaluasi membuat saya berpikir mungkin tidak ada cara untuk mencapai ini sama sekali.
Bagian yang relevan dari /etc/mysql/my.cnf
file saya disalin di bawah ini. Apakah saya di jalur yang benar? Apakah yang saya inginkan bahkan mungkin?
Master 1 :
[mysqld]
binlog-format = row
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = <master2_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60
log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M
Master 2 :
[mysqld]
binlog-format = row
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
master-host = <master1_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60
log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M
sumber
Jawaban:
Ini adalah bagaimana saya melakukannya untuk kedua tuan
sumber
log-slave-updates
pengaturan karena saya melihat tidak perlu untuk itu. Semuanya bekerja dengan sempurna. Saya dapat menambah dan menjatuhkan basis data dan perubahannya direplikasi. Terima kasih! Hadiah diberikan.Berkenaan dengan pembuatan database, masih ada laporan bug tentang menggunakan CREATE DATABASE dengan replikasi berbasis baris.
Laporan ini ditutup, tetapi bug muncul lagi di MySQL 5.1.47
Laporan ini didasarkan pada MySQL Cluster (mesin penyimpanan NDB)
Laporan ini didasarkan pada tabel replikasi-liar-pengabaian-masih mereplikasi.
Replikasi berbasis baris menyebabkan log biner tumbuh pada kecepatan luar biasa yang dapat memacu lalu lintas jaringan hanya dengan mengirimkan data log biner ke log relai dari budak.
@ Mike mengatakan dia membuat kreasi basis data untuk bekerja dan mereplikasi dengan baik. Saya tidak meragukannya sama sekali. Apa yang saya sedikit belajar dari MySQL (eh Oracle) tidak mendapatkan semua ketegaran dari replikasi berbasis baris setelah database instantiated.
Anda mungkin ingin beralih ke row_format MIXED jika Anda masih menginginkan entri berbasis baris dalam log biner. Secara internal, format log biner cenderung mengambang antara pernyataan dan tetap diperbaiki: (Lihat http://bugs.mysql.com/bug.php?id=40146 ). Lebih banyak laporan bug ditutup menggunakan campuran dan menghindar dari berbasis baris ( http://bugs.mysql.com/bug.php?id=39701 ) tetapi masalah masih terjadi secara intermiten.
CATATAN FINAL
Untuk kewarasan Anda sendiri, silakan kembali ke replikasi berbasis pernyataan dan dengan demikian membuat BUAT DATABASE (yang merupakan Pernyataan SQL) stabil dan konsisten untuk SQL berikutnya terhadap database yang dibuat. Faktanya, laporan bug terbaru menunjukkan bahwa yang terbaik adalah menggunakan replikasi berbasis pernyataan, terlepas dari apa yang dikatakan dokumentasi tentang opsi tingkat-basis data dan tingkat-tabel.
sumber
Hmm ... Anda juga harus mencari cara untuk menangani / membedakan kunci dan bidang yang bertambah secara otomatis. Ini terlihat menarik .. http://mysql-mmm.org/
sumber
auto-increment-increment
, danauto-increment-offset
pengaturan dalam file konfigurasi saya. Lihat halaman ini: dev.mysql.com/doc/refman/5.1/en/…cmiiw saya pikir Anda harus dapat membuat database pada master1 dan master2 tanpa mengubah conf atau menghentikan slave, tetapi pastikan replikasi master - master berjalan. karena Anda tidak menentukan basis data mana yang harus ditiru, itu berarti semua basis data akan direplikasi jika Anda tidak mendefinisikannya di my.cnf.
sumber