Rumah > Artikel > pangkalan data > Apakah sebab mengapa mysql master dan slave disegerakkan?
Sebab mengapa tuan dan hamba mysql disegerakkan: 1. Kelewatan rangkaian; 2. Beban mesin induk dan hamba adalah tidak konsisten; daripada kunci kenaikan kunci adalah berbeza daripada Tetapan langkah kenaikan automatik tidak konsisten 5. Versi pangkalan data tidak konsisten, dsb.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Analisis sebab mysql master tidak disegerakkan
1 Oleh kerana replikasi induk-hamba Mysql adalah replikasi tak segerak berdasarkan fail binlog yang dihantar melalui rangkaian Sudah tentu, kelewatan rangkaian adalah sebahagian besar sebab penyegerakan induk-hamba Terutamanya untuk penyegerakan data di seluruh bilik komputer, kebarangkalian perkara ini berlaku adalah sangat tinggi, jadi Asingkan membaca dan menulis, dan memberi perhatian kepada reka bentuk awal dari lapisan perniagaan.
2. Beban mesin master dan slave tidak konsisten
Oleh kerana replikasi master-slave mysql memulakan benang io pada pangkalan data induk dan memulakan 1 sql dari atas Benang dan 1 benang io, mana-mana satu mesin mempunyai beban yang tinggi dan terlalu sibuk, mengakibatkan sumber tidak mencukupi untuk mana-mana satu benang, dan ketidakkonsistenan tuan-hamba akan berlaku.
3. Tetapan Max_allowed_packet tidak konsisten
Max_allowed_packet yang ditetapkan pada pangkalan data induk adalah lebih besar daripada pada pangkalan data hamba apabila pernyataan SQL yang besar boleh dilaksanakan pada pangkalan data induk, pangkalan data hamba Tetapan pada pangkalan data terlalu kecil dan tidak boleh dilaksanakan, mengakibatkan ketidakkonsistenan tuan-hamba.
4. Ketidakkonsistenan Master-hamba yang disebabkan oleh ketidakkonsistenan antara nilai kunci bermula dari kunci auto-increment dan tetapan auto-increment step.
5. Apabila mysql tidak berfungsi secara luar biasa, jika sync_binlog=1 atau innodb_flush_log_at_trx_commit=1 tidak ditetapkan, besar kemungkinan fail binlog atau relaylog akan rosak, mengakibatkan master- ketidakkonsistenan hamba.
6. Penyegerakan Master-slave yang disebabkan oleh pepijat dalam mysql itu sendiri.
7 Versi pangkalan data tidak konsisten
, terutamanya apabila versi yang lebih tinggi ialah induk dan versi yang lebih rendah ialah hamba, fungsi yang disokong oleh pangkalan data induk tidak disokong oleh pangkalan data hamba.Penyelesaian
Kaedah 1: Selepas mengabaikan ralat, teruskan penyegerakan
Kaedah ini ialah terpakai Apabila data pangkalan data tuan-hamba tidak jauh berbeza, atau data tidak diperlukan untuk disatukan sepenuhnya, atau apabila keperluan data tidak ketat, penyelesaian
:bermakna melangkau ralat langkah, dan nombor berikut berubah
stop slave;
dan kemudian gunakan mysql> tunjukkan status hambaG untuk menyemak:
set global sql_slave_skip_counter =1; start slave;
ok, sekarang penyegerakan induk-hamba status adalah normal. . .
Slave_IO_Running: Yes Slave_SQL_Running: Yes
Kaedah 2: Buat semula master-slave dan selaraskan sepenuhnya
Kaedah ini sesuai untuk situasi di mana data dalam pangkalan data master-slave sangat berbeza, atau data diperlukan untuk disatukan sepenuhnya
Langkah penyelesaian adalah seperti berikut: 1. Mula-mula masukkan pangkalan data utama dan kunci jadual untuk mengelakkan data daripada ditulis Gunakan arahan:Nota: Ini Dikunci untuk keadaan baca sahaja, pernyataan tidak sensitif huruf besar/kecil
mysql> flush tables with read lock;2 sandarkan dataSandarkan data ke fail mysql.bak.sql
Satu perkara yang perlu diperhatikan di sini : Sandaran pangkalan data mesti dilakukan dengan kerap Anda boleh menggunakan skrip shell atau skrip python, yang lebih mudah untuk memastikan data tersebut adalah mudah
mysqldump -uroot -p -hlocalhost > mysql.bak.sql3 Semak status induk
4 Pindahkan fail sandaran mysql Pergi ke mesin pangkalan data hamba dan lakukan pemulihan data
mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+-------------------------------+ | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | +-------------------+----------+--------------+-------------------------------+ 1 row in set (0.00 sec)Gunakan arahan scp.
5. Hentikan status pangkalan data hamba
scp mysql.bak.sql root@192.168.128.101:/tmp/
6 Kemudian pergi ke pangkalan data hamba dan jalankan Perintah mysql, import sandaran data
mysql> stop slave;mysql>. ; sumber /tmp/mysql.bak.sql 7. Sediakan penyegerakan pangkalan data hamba, perhatikan titik penyegerakan di sana, iaitu dalam pangkalan data induk tunjukkan maklumat status induk | > 8. Mulakan semula penyegerakan hamba
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;9. Lihat status penyegerakan
mysql> start slave;Lihat:
mysql> show slave status\G[Cadangan berkaitan:
tutorial video mysql
]Slave_IO_Running: Yes Slave_SQL_Running: Yes
Atas ialah kandungan terperinci Apakah sebab mengapa mysql master dan slave disegerakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!