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

mysql主從同步異常原因及恢復

 更新時間:2025年08月10日 10:33:44   作者:漠效  
本文介紹了MySQL主從復制過程中常見的同步異常問題及其解決方法,包括auto.cnf配置問題、my.cnf配置問題及主庫重啟等場景下可能出現(xiàn)的問題及應對措施,感興趣的可以了解一下

前言

mysql數(shù)據(jù)庫做主從復制,不僅可以為數(shù)據(jù)庫的數(shù)據(jù)做實時備份,保證數(shù)據(jù)的完整性,還能做為讀寫分離,提升數(shù)據(jù)庫的整體性能。但是,mysql主從復制經常會因為某些原因使主從數(shù)據(jù)同步出現(xiàn)異常。因此,下面介紹的是mysql主從同步異常的原因及恢復的方法。

auto.cnf 配置問題

這個問題是在部署主從復制的時候,可能會遇到的

【1】報錯

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

【2】分析:

當mysql做了主從時,每個mysql都會有個uuid 作為唯一標識的。上面是由于主從復制的mysql數(shù)據(jù)庫了相同的UUID,所以,只需要修改auto.cnf配置文件即可。

【3】解決方法

<1>查找auto.cnf文件的位置(位置一般為:/var/lib/mysql/auto.cnf)

find / -iname auto.cnf

<2>將文件中的uuid修改為不同數(shù)值。

my.cnf配置問題

這個問題也是在部署主從復制的時候,可能會遇到的

【1】報錯

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

【2】分析

在mysql的主從配置中,每臺mysql數(shù)據(jù)庫的my.cnf中的server-id 必須是唯一,但是有的時候可能因為粗心而配成了相同的數(shù)值,也有可能mysql沒有加載到my.cnf 文件中的server-id。

【3】解決方法

<1>找到mysql的配置文件my.cnf(默認位置為:/etc/my.cnf)

find / -name my.cnf

<2>修改從服務器的my.cnf配置文件中的server-id(注意要改為與主服務器不同的)

<3>在從服務器的數(shù)據(jù)庫中直接添加server_id(此server_id數(shù)值與my.cnf中的一致)

mysql>  set global server_id=2;
mysql>  start slave;

主庫重啟(數(shù)據(jù)庫服務器宕機)

重點問題

這個問題常見于運維mysql數(shù)據(jù)庫主從的過程中,一般都是由于數(shù)據(jù)庫的誤操作引起的,也有可能是數(shù)據(jù)庫服務器因某些原因宕機或重啟引起的。

數(shù)據(jù)庫備份一定要定期進行,確保數(shù)據(jù)萬無一失 .

【1】報錯

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘binlog truncated in the middle of event; consider out of disk space on master; the first event ‘mysql-bin.001989’ at 9179, the last event read from ‘./mysql-bin.001989’ at 9179, the last byte read from ‘./mysql-bin.001989’ at 9179.’

【2】分析

由報錯可看出是由于從庫的二進制文件位置與主庫的不一致導致的

【3】解決方法

<1>查看主庫的二進制文件的位置

mysql -uroot -p'.....'    進入數(shù)據(jù)庫

show master status;   查看主庫

重點關注:
File 與 Position

<2>查看從庫的狀態(tài)

show slave status\G ;

重點關注下列兩個的狀態(tài)[yes/no]:
Slave_IO_Running
Slave_SQL_Running

<3>解決方法一:

忽略錯誤后,繼續(xù)同步
(適用于主庫與從庫數(shù)據(jù)相差不大;要求數(shù)據(jù)可以不完全統(tǒng)一,數(shù)據(jù)要求不嚴格的情況)

{1}進入從庫操作:

mysql -uroot -p‘...'

{2}停止從庫同步

stop slave;     

{3}跳過1步錯誤(后面的數(shù)字可更改)

set global sql_slave_skip_counter =1;        

{4}開啟從庫

start slave;    

{5}查看從庫狀態(tài)

show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
即為正常

<4>解決方法二

重新做主從,完全同步
(適用于主庫從庫的數(shù)據(jù)相差較大;要求數(shù)據(jù)完全統(tǒng)一的情況 )

{1}先進入主庫,進行鎖表,此處鎖定為只讀狀態(tài),防止數(shù)據(jù)寫入 (可選,因如有數(shù)據(jù)庫備份,可直接利用備份)

flush tables with read lock; 

{2}進行數(shù)據(jù)備份,把數(shù)據(jù)備份為.sql的文件(可選,因如有數(shù)據(jù)庫備份,可直接利用備份)

mysqldump -uroot -p‘密碼'  --all-databases > mysql.back.sql 

{3}進入主庫,進行解鎖(可選,因如有數(shù)據(jù)庫備份,可直接利用備份)

unlock tables;

{4}把mysql的備份文件傳輸?shù)綇膸旆掌魃?位置任意,但要能找到)

scp -r /root/mysql.bask.sql root@node2:/tmp/ 

{5}進入從庫,停止從庫的狀態(tài)

stop slave; 

清除slave上的同步位置,刪除所有舊的同步日志,使用新的日志重新開始.(使用前先停止slave服務)

reset slave;(可選)

{6}在從庫中導入數(shù)據(jù)備份

source /tmp/mysql.back.sql ;

mysql -uroot -p‘....'  database -f < /tmp/mysql.bask.sql   
(-f 為跳過錯誤的Sql,繼續(xù)往下執(zhí)行,可不加)

{7}設置從庫同步

change master to master_host = '主庫的IP', master_user = '設置主從時設定的主庫的用戶', master_port=主庫的端口, master_password='主庫設定的密碼', master_log_file = 'mysqld-bin.001989', master_log_pos=24110520; 

注意:
master_log_file與master_log_pos 是主庫show master status信息里的| File與Position

{8}重新開啟從庫同步

start slave;  

{9}查看同步狀態(tài)
mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

到此這篇關于mysql主從同步異常原因及恢復的文章就介紹到這了,更多相關mysql主從同步異常內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Mysql的root賬戶密碼忘記了怎么解決(百分百教會你重置!)

    Mysql的root賬戶密碼忘記了怎么解決(百分百教會你重置!)

    mysql是常用的數(shù)據(jù)庫,很多程序員在使用的過程中會出現(xiàn)root用戶密碼忘記的事情,這篇文章主要給大家介紹了關于Mysql的root賬戶密碼忘記了該怎么解決的相關資料,文中介紹的方法百分百教會你如何重置,需要的朋友可以參考下
    2024-05-05
  • Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫教程

    Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫教程

    大家好,本篇文章主要講的是Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫教程,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 關于MySQL繞過授予information_schema中對象時報ERROR 1044(4200)錯誤

    關于MySQL繞過授予information_schema中對象時報ERROR 1044(4200)錯誤

    這篇文章主要介紹了關于MySQL繞過授予information_schema中對象時報ERROR 1044(4200)錯誤,本文給大家分享解決方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • mysql中合并兩個字段的方法分享

    mysql中合并兩個字段的方法分享

    mysql中怎么合并兩個字段為一個字段呢?試了好多方法,結果還是不是我想要的
    2012-08-08
  • mysql 快速解決死鎖方式小結

    mysql 快速解決死鎖方式小結

    本文講述了在MySQL中識別和終止導致死鎖的SQL語句,通過SHOWENGINEINNODBSTATUS和INFORMATION_SCHEMA表,可以找到死鎖的具體事務,感興趣的可以了解一下
    2024-11-11
  • MySQL由淺入深探究存儲過程

    MySQL由淺入深探究存儲過程

    這篇文章主要介紹了MySQL存儲過程,存儲過程,也叫做存儲程序,是一條或者多條SQL語句的集合,可以視為批量處理,但是其作用不僅僅局限于批量處理
    2022-11-11
  • MySQL中預處理語句prepare、execute與deallocate的使用教程

    MySQL中預處理語句prepare、execute與deallocate的使用教程

    這篇文章主要介紹了MySQL中預處理語句prepare、execute與deallocate的使用教程,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-08-08
  • MySQL 丟失數(shù)據(jù)的原因及解決

    MySQL 丟失數(shù)據(jù)的原因及解決

    這篇文章主要介紹了MySQL 丟失數(shù)據(jù)的原因及解決,幫助大家更好的理解和學習使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • mysql使用GROUP BY分組實現(xiàn)取前N條記錄的方法

    mysql使用GROUP BY分組實現(xiàn)取前N條記錄的方法

    這篇文章主要介紹了mysql使用GROUP BY分組實現(xiàn)取前N條記錄的方法,結合實例形式較為詳細的分析了mysql中GROUP BY分組的相關使用技巧,需要的朋友可以參考下
    2016-06-06
  • 如何配置全世界最小的 MySQL 服務器

    如何配置全世界最小的 MySQL 服務器

    Intel Edison 是一個小巧的計算機基于 22 nm 的 Silvermont 雙核 Intel Atom CPU 主頻 500MHz運行 Linux (叫做 Yocto 的基于 Ubuntu 的發(fā)布版)。為了對 Edison 進行編程,我們需要一塊接口板??梢赃x擇的板子包括兼容Arduino的接口板 (包含了 SD 卡) 還有 Intel 接口板。
    2016-04-04

最新評論