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

MYSQL主庫切換binlog模式后主從同步錯誤的解決方案

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

在使用FlinkSQL的mysql-cdc連接器來監(jiān)聽MySQL數據庫時,通常需要將MySQL的binlog模式設置為ROW模式。然而,在實際項目中,可能會遇到如下問題:

當我們將MySQL主庫的binlog模式從STATEMENT切換為ROW并重啟MySQL服務后,MySQL從庫在同步時可能會報錯,錯誤信息如下:

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

這個錯誤表示在執(zhí)行Update_rows事件時,找不到目標記錄,具體錯誤代碼為1032,對應的處理器錯誤為HA_ERR_KEY_NOT_FOUND。這是因為在切換binlog模式后,主從庫之間的數據可能不一致。

錯誤原因分析

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

  • STATEMENT模式:記錄的是每一條SQL語句。
  • ROW模式:記錄的是每一行數據的變更。
  • MIXED模式:結合了STATEMENT和ROW模式,通常根據具體情況自動選擇。

在從STATEMENT模式切換到ROW模式時,可能會因為以下原因導致從庫同步失?。?/p>

  1. 數據不一致:在切換binlog模式并重啟主庫后,主庫和從庫之間可能存在數據不一致的情況。ROW模式下,每一行的變化都會記錄在binlog中,而STATEMENT模式下則只記錄SQL語句的執(zhí)行。因此,切換模式后,從庫在應用ROW格式的binlog事件時,可能找不到相應的記錄。
  2. 日志不一致:STATEMENT模式和ROW模式記錄的日志格式不同,切換模式后可能會導致日志解析錯誤。
  3. 從庫延遲:從庫在同步主庫的數據時,可能會出現延遲。如果在切換模式的過程中,主庫進行了大量數據修改操作,從庫未能及時同步,導致數據不一致。
  4. 應用binlog事件失敗:從庫在應用ROW格式的binlog事件時,可能因為某些原因(如主鍵沖突、索引問題等)而無法正確應用,從而導致找不到記錄的錯誤。

解決方案

為了解決上述問題,可以按照以下步驟操作:

1. 確保主從庫數據一致

在切換binlog模式之前,確保主從庫數據完全一致,可以通過以下方式操作:

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

2. 切換binlog模式

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

停止從庫同步

STOP SLAVE;

切換主庫binlog模式

SET GLOBAL binlog_format = 'ROW';

重啟MySQL主庫,以確保配置生效:

service mysql restart

啟動從庫同步

START SLAVE;

3. 重建從庫

如果在切換模式后依然報錯,建議重建從庫:

停止從庫

STOP SLAVE;

重新備份主庫數據,并導入到從庫:

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

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

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. 跳過異常錯誤

跳過報錯是以上方法都解決不了不得已使用的。

跳過指定錯誤代碼在從服務器,編輯 /etc/my.cnf:

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

跳過所有錯誤在從服務器,編輯 /etc/my.cnf:

 [mysqld]
 slave-skip-errors=all

重啟mysql從庫服務

service mysqld restart

總結

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

以上就是MYSQL主庫切換binlog模式后主從同步錯誤的解決方案的詳細內容,更多關于MYSQL切換binlog主從同步錯誤的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

    mysql 8.0.17 安裝與使用教程圖解

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

    MySQL 不允許從遠程訪問的解決方法

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

    MySQL8.0中的my.ini文件位置說明

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

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

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

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

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

    為什么mysql字段要使用NOT NULL

    數據庫字段一定要設置為 not null,不然會有很大的bug,下面就一起來介紹一下,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • mysql 提示INNODB錯誤的解決方法

    mysql 提示INNODB錯誤的解決方法

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

    MySQL查看日志簡單易懂保姆級教程

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

    Windows下MySQL詳細安裝過程及基本使用

    本文詳細講解了Windows下MySQL安裝過程及基本使用方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12

最新評論