Saya memiliki MySQL (5.5) dalam pengaturan master-slave dan membuat server slave lain.
Saya menghentikan budak asli, membuang data, menyalin dan mengimpor kembali dan itu bekerja dengan baik. Saya mencatat pos master_log dari slave asli dan menggunakan perintah ini untuk meletakkannya di slave baru
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Ketika saya memulai budak baru yang saya dapatkan
Last_IO_Error: Mendapat kesalahan fatal 1236 dari master saat membaca data dari log biner: 'log event entry melebihi max_allowed_packet; Tingkatkan max_allowed_packet pada master '
Namun ketika saya memulai budak asli, itu berhasil dengan baik, dan sekarang sinkron.
Jadi pertanyaannya:
nilai saat ini adalah 16 juta, bagaimana saya tahu seberapa besar yang harus saya lakukan? (Saya lebih suka menghindari coba-coba dengan server produksi).
mengapa saya perlu meningkatkan nilai pada master ketika budak asli diatasi dengan baik, mungkinkah masalahnya dengan budak baru?
memperbarui
Saya meningkatkan max_allowed_packet menjadi 1073741824 ketika Rolando menyarankan master, slave lama dan slave baru, dan memulai kembali ( SET GLOBAL max_allowed_packet = 1073741824;
untuk beberapa alasan sepertinya tidak mengambil)
sekarang kesalahan IO terakhir sama dengan sebelumnya, tapi sekarang saya mengerti
Last_SQL_Error: Kegagalan membaca log relai: Tidak dapat mengurai entri log aktivitas relai. Alasan yang mungkin adalah: log biner master rusak (Anda dapat memeriksa ini dengan menjalankan 'mysqlbinlog' pada log biner), log relay slave rusak (Anda dapat memeriksa ini dengan menjalankan 'mysqlbinlog' pada log relay), sebuah masalah jaringan, atau bug pada kode MySQL master atau slave. Jika Anda ingin memeriksa log biner master atau log relay slave, Anda akan dapat mengetahui namanya dengan mengeluarkan 'SHOW SLAVE STATUS' pada slave ini.
Jika saya melakukan mysqlbinlog pada file master, itu bergulir melewati dengan cukup senang selama berabad-abad - file adalah 722M - jika saya melakukan itu untuk log relay slave saya mendapatkan
GALAT: Kesalahan di Log_event :: read_log_event (): 'Sanity check gagal', data_len: 38916267, event_type: 69
GALAT: Tidak dapat membaca entri di offset 253: Kesalahan dalam format log atau kesalahan baca.
Saya memeriksa variabel dan perubahan berhasil
mysql> tampilkan variabel LIKE '% max_allowed_packet%';
pada budak baru menunjukkan max_allowed_packet
DAN di slave_max_allowed_packet
mana pada master itu hanya memilikimax_allowed_packet
jadi saya melakukan pemeriksaan versi pada master:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
dan pada budak baru
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Apakah kedua versi ini terlalu jauh?