欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL主庫(kù)切換binlog模式后主從同步錯(cuò)誤的解決方案

 更新時(shí)間:2024年08月07日 10:11:44   作者:LOVE_DDZ  
在使用FlinkSQL的mysql-cdc連接器來(lái)監(jiān)聽(tīng)MySQL數(shù)據(jù)庫(kù)時(shí),通常需要將MySQL的binlog模式設(shè)置為ROW模式,當(dāng)我們將MySQL主庫(kù)的binlog模式從STATEMENT切換為ROW并重啟MySQL服務(wù)后,MySQL從庫(kù)在同步時(shí)可能會(huì)報(bào)錯(cuò),所以本文介紹了MYSQL主庫(kù)切換binlog模式后主從同步錯(cuò)誤的解決方案

在使用FlinkSQL的mysql-cdc連接器來(lái)監(jiān)聽(tīng)MySQL數(shù)據(jù)庫(kù)時(shí),通常需要將MySQL的binlog模式設(shè)置為ROW模式。然而,在實(shí)際項(xiàng)目中,可能會(huì)遇到如下問(wèn)題:

當(dāng)我們將MySQL主庫(kù)的binlog模式從STATEMENT切換為ROW并重啟MySQL服務(wù)后,MySQL從庫(kù)在同步時(shí)可能會(huì)報(bào)錯(cuò),錯(cuò)誤信息如下:

Could not execute Update_rows event on table ddz.ddz_mlfl; 
Can't find record in 'ddz_mlfl', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; 
the event's master log ddzmysql-bin.002729, end_log_pos 801362189

這個(gè)錯(cuò)誤表示在執(zhí)行Update_rows事件時(shí),找不到目標(biāo)記錄,具體錯(cuò)誤代碼為1032,對(duì)應(yīng)的處理器錯(cuò)誤為HA_ERR_KEY_NOT_FOUND。這是因?yàn)樵谇袚Qbinlog模式后,主從庫(kù)之間的數(shù)據(jù)可能不一致。

錯(cuò)誤原因分析

MySQL主庫(kù)的binlog模式分為STATEMENT、ROW和MIXED三種:

  • STATEMENT模式:記錄的是每一條SQL語(yǔ)句。
  • ROW模式:記錄的是每一行數(shù)據(jù)的變更。
  • MIXED模式:結(jié)合了STATEMENT和ROW模式,通常根據(jù)具體情況自動(dòng)選擇。

在從STATEMENT模式切換到ROW模式時(shí),可能會(huì)因?yàn)橐韵略驅(qū)е聫膸?kù)同步失敗:

  1. 數(shù)據(jù)不一致:在切換binlog模式并重啟主庫(kù)后,主庫(kù)和從庫(kù)之間可能存在數(shù)據(jù)不一致的情況。ROW模式下,每一行的變化都會(huì)記錄在binlog中,而STATEMENT模式下則只記錄SQL語(yǔ)句的執(zhí)行。因此,切換模式后,從庫(kù)在應(yīng)用ROW格式的binlog事件時(shí),可能找不到相應(yīng)的記錄。
  2. 日志不一致:STATEMENT模式和ROW模式記錄的日志格式不同,切換模式后可能會(huì)導(dǎo)致日志解析錯(cuò)誤。
  3. 從庫(kù)延遲:從庫(kù)在同步主庫(kù)的數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)延遲。如果在切換模式的過(guò)程中,主庫(kù)進(jìn)行了大量數(shù)據(jù)修改操作,從庫(kù)未能及時(shí)同步,導(dǎo)致數(shù)據(jù)不一致。
  4. 應(yīng)用binlog事件失敗:從庫(kù)在應(yīng)用ROW格式的binlog事件時(shí),可能因?yàn)槟承┰颍ㄈ缰麈I沖突、索引問(wèn)題等)而無(wú)法正確應(yīng)用,從而導(dǎo)致找不到記錄的錯(cuò)誤。

解決方案

為了解決上述問(wèn)題,可以按照以下步驟操作:

1. 確保主從庫(kù)數(shù)據(jù)一致

在切換binlog模式之前,確保主從庫(kù)數(shù)據(jù)完全一致,可以通過(guò)以下方式操作:

  • 停止寫(xiě)操作:在切換模式前,停止所有寫(xiě)操作,確保數(shù)據(jù)不再變化。
  • 完全同步:確保主庫(kù)的所有數(shù)據(jù)已經(jīng)完全同步到從庫(kù),執(zhí)行以下命令檢查同步狀態(tài):
SHOW SLAVE STATUS;

2. 切換binlog模式

在確保數(shù)據(jù)一致后,按照以下步驟切換binlog模式:

停止從庫(kù)同步

STOP SLAVE;

切換主庫(kù)binlog模式

SET GLOBAL binlog_format = 'ROW';

重啟MySQL主庫(kù),以確保配置生效:

service mysql restart

啟動(dòng)從庫(kù)同步

START SLAVE;

3. 重建從庫(kù)

如果在切換模式后依然報(bào)錯(cuò),建議重建從庫(kù):

停止從庫(kù)

STOP SLAVE;

重新備份主庫(kù)數(shù)據(jù),并導(dǎo)入到從庫(kù):

mysqldump -u root -p --all-databases --single-transaction --master-data > backup.sql
mysql -u root -p < backup.sql

重新配置從庫(kù)同步,確保從庫(kù)的master_log_filemaster_log_pos與主庫(kù)一致:

CHANGE MASTER TO MASTER_HOST='master_ip',
MASTER_USER='replication_user', 
MASTER_PASSWORD='replication_user_password',
MASTER_LOG_FILE='recorded_log_file', 
MASTER_LOG_POS=recorded_log_position;
START SLAVE;

4. 跳過(guò)異常錯(cuò)誤

跳過(guò)報(bào)錯(cuò)是以上方法都解決不了不得已使用的。

跳過(guò)指定錯(cuò)誤代碼在從服務(wù)器,編輯 /etc/my.cnf:

 [mysqld]
 slave-skip-errors=1032,1033

跳過(guò)所有錯(cuò)誤在從服務(wù)器,編輯 /etc/my.cnf:

 [mysqld]
 slave-skip-errors=all

重啟mysql從庫(kù)服務(wù)

service mysqld restart

總結(jié)

在使用FlinkSQL的mysql-cdc連接器監(jiān)聽(tīng)MySQL數(shù)據(jù)庫(kù)時(shí),確保binlog模式為ROW是必要的。但在切換binlog模式時(shí),需要特別注意主從庫(kù)的數(shù)據(jù)一致性和同步狀態(tài)。

以上就是MYSQL主庫(kù)切換binlog模式后主從同步錯(cuò)誤的解決方案的詳細(xì)內(nèi)容,更多關(guān)于MYSQL切換binlog主從同步錯(cuò)誤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mysql桌面工具之SQLyog資源及激活使用方法告別黑白命令行

    Mysql桌面工具之SQLyog資源及激活使用方法告別黑白命令行

    這篇文章主要介紹了Mysql桌面工具之SQLyog資源及激活使用方法告別黑白命令行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • mysql 8.0.17 安裝與使用教程圖解

    mysql 8.0.17 安裝與使用教程圖解

    這篇文章主要介紹了mysql 8.0.17 安裝與使用教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • MySQL 不允許從遠(yuǎn)程訪問(wèn)的解決方法

    MySQL 不允許從遠(yuǎn)程訪問(wèn)的解決方法

    MySQL 不允許從遠(yuǎn)程訪問(wèn)的原因有很多除了下面的方法,還有需要看服務(wù)器安全設(shè)置禁止訪問(wèn)本機(jī)的3306端口。
    2010-03-03
  • MySQL8.0中的my.ini文件位置說(shuō)明

    MySQL8.0中的my.ini文件位置說(shuō)明

    這篇文章主要介紹了MySQL8.0中的my.ini文件位置說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL修改root密碼的多種方法(推薦)

    MySQL修改root密碼的多種方法(推薦)

    本文給大家分享了三種方法來(lái)解決mysql修改root密碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-03-03
  • mysql性能優(yōu)化工具--tuner-primer使用介紹

    mysql性能優(yōu)化工具--tuner-primer使用介紹

    這篇文章主要介紹了mysql性能優(yōu)化工具--tuner-primer的使用方法與返回?cái)?shù)據(jù)分析,需要的朋友可以參考下
    2016-05-05
  • 為什么mysql字段要使用NOT NULL

    為什么mysql字段要使用NOT NULL

    數(shù)據(jù)庫(kù)字段一定要設(shè)置為 not null,不然會(huì)有很大的bug,下面就一起來(lái)介紹一下,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • mysql 提示INNODB錯(cuò)誤的解決方法

    mysql 提示INNODB錯(cuò)誤的解決方法

    解決The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
    2011-09-09
  • MySQL查看日志簡(jiǎn)單易懂保姆級(jí)教程

    MySQL查看日志簡(jiǎn)單易懂保姆級(jí)教程

    這篇文章主要給大家介紹了關(guān)于MySQL查看日志簡(jiǎn)單易懂保姆級(jí)教程的相關(guān)資料,在操作MySQL數(shù)據(jù)庫(kù)的時(shí)候會(huì)留下每一個(gè)步驟的痕跡,那怎么查看呢?就可以用日志去查看,需要的朋友可以參考下
    2023-08-08
  • Windows下MySQL詳細(xì)安裝過(guò)程及基本使用

    Windows下MySQL詳細(xì)安裝過(guò)程及基本使用

    本文詳細(xì)講解了Windows下MySQL安裝過(guò)程及基本使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-12-12

最新評(píng)論