Rumah  >  Artikel  >  pangkalan data  >  Apakah sebab mengapa mysql master dan slave disegerakkan?

Apakah sebab mengapa mysql master dan slave disegerakkan?

青灯夜游
青灯夜游asal
2022-01-05 16:09:546199semak imbas

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.

Apakah sebab mengapa mysql master dan slave disegerakkan?

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 data

Sandarkan 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.sql
3 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn