Saya telah membuat konfigurasi master-slave mysql dan semuanya terlihat baik-baik saja. "tampilkan status master;" pada slave tidak menunjukkan kesalahan. ini adalah output
Slave_IO_State: Waiting for master to send event
Master_Host: 109.123.100.58
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 106
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Namun pada replikasi pada slave sepertinya tidak terjadi ketika master mengalami perubahan
Pada tuan. TAMPILKAN STATUS MASTER
+------------------+----------+--------------+-------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+-------------------------+
| mysql-bin.000001 | 639495 | | mysql,informationschema |
+------------------+----------+--------------+-------------------------+
pada hasil SHOW PROCESSLIST
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
| 174 | system user | | NULL | Connect | 25777 | Waiting for master to send event | NULL |
| 175 | system user | | NULL | Connect | 25777 | Has read all relay log; waiting for the slave I/O thread to update it | NULL |
| 199 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
Apakah saya melewatkan sesuatu
mysql
replication
Kedelai
sumber
sumber
SHOW MASTER STATUS
juga, bit atas hilang saya pikir.SHOW MASTER STATUS
pada budak . Informasi ini tidak relevan kecuali budak juga melayani sebagai tuan bagi budak lain di hilir.SHOW PROCESSLIST
di master, apakah Anda melihat koneksi yang masuk dari budak? Kamu harus Juga, saya akan mencobaSTOP SLAVE IO_THREAD;
kemudianSTART SLAVE IO_THREAD;
pada slave dan melihat bagaimana outputSHOW SLAVE STATUS
(pada slave) berubah, jika sama sekali.Jawaban:
Output yang Anda presentasikan sangat membingungkan. Di satu sisi, master menunjukkan:
Budak
PROCESSLIST
menunjukkan bahwa replikasi bekerja (utas IO terhubung ke master, utas SQL sedang menunggu).SHOW SLAVE STATUS
Lagi - lagi budak itu mengklaim semuanya baik-baik saja, tetapi posisi tuannya adalah106
.Apakah semua keluaran ini dikeluarkan pada waktu yang bersamaan? Jika tidak, maka mereka tidak berharga.
Saya akan memeriksa yang berikut:
109.123.100.58
benarkah tuanmu?SHOW PROCESSLIST
pada master daftar koneksi yang dibuat oleh budak di bawahreplica
pengguna?server-id
pengaturan yang berbeda untuk master dan slave?replicate-do-*
ataureplicate-ignore-*
pengaturan dalam Andamysql.cnf
berkas?sumber
+-------+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+------+---------+------+-------+------------------+ | 23243 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST | +-------+------+-----------+------+---------+------+-------+------------------+
Lebih baik daripada menggunakan binlog-ign-db adalah menggunakan penyaringan sisi-slave Saya terjebak dalam situasi yang sama, ya, saya butuh satu hari penuh untuk mencari tahu:
Saya melewatkan sesuatu yang besar !!!
Perbedaan antara
Di sisi budak. Dan
tidak bekerja untuk saya di meja. Saya harus menggunakan
Saya kira ini akan berhasil untuk wildcard
... Sekarang untuk mencari tahu bagaimana mereplikasi tabel yang sama dari banyak master. Oke, saya sudah tahu, MySQL tidak mendukungnya secara asli; MariaDB 10 tidak.
Saya juga punya masalah lain pada awalnya: Kata sandi saya lebih panjang dari 32 karakter. Boo!
sumber
Saya juga menemukan masalah ini. Akar penyebabnya adalah memiliki master
server_id=0
. MariaDB memiliki perilaku khusus untukserver_id=0
yang tidak akan memungkinkan replikasi bekerja.Ketika saya mulai mengindeks berdasarkan pada 1 semuanya bekerja dengan baik.
sumber
Anda tidak memberi tahu slave DB mana yang akan ditiru: variabel Replicate_Do_DB kosong.
Coba tambahkan baris
replicate-do-db = name_of_db (di mana "name_of_db" adalah nama basis data yang akan ditiru)
di my.cnf Anda (di slave) dan restart server slave.
EDIT: Saya tidak berpikir jawaban saya adalah solusi yang tepat, sementara ;-)
Mungkin melihat halaman ini sebagai gantinya: http://dev.mysql.com/doc/refman/5.1/en/replication-problems.html
sumber
+------------------+----------+--------------+-------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+-------------------------+ | mysql-bin.000004 | 106 | | mysql,informationschema | +------------------+----------+--------------+-------------------------+
entry binlog_ignore_db = mysql binlog_ignore_db = informationschema