日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql主从备份失败--记录现象

發(fā)布時間:2025/1/21 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从备份失败--记录现象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

*1.現象

失敗以后,mysql目錄下回產生 mysql-relay-bin.000*

這種文件不能直接刪除,需要進入數據庫,通過指令進行刪除

*2.查看備份庫的狀態(tài)

參考:https://www.cnblogs.com/chinesern/p/7279495.html

Slave_IO線程負責把主庫的bin日志(Master_Log)內容,投遞到從庫的中繼日志上(Relay_Log)。
Slave_SQL線程負責把中繼日志上的語句在從庫上執(zhí)行一遍。

Yes表示正常,No表示異常
Slave_IO線程相對比較簡單,一般不容易出錯,如果Slave_IO_Running顯示為No,可能是以下幾個原因導致的:

  • 網絡問題
  • 權限問題,例如在配置slave同步時因為slave訪問master沒有權限導致的問題。
  • mater上的binlog文件誤刪或者其他問題導致的master庫突然停止而更新了binlog日志,這時候slave
    可能出現早不到binlog文件的情況,解決方案是找到同步的點和binlog文件,重新 change master。
  • 相對的Slave_SQL線程就比較容易出錯,例如人為手動的在從庫插入一條數據,造成主從不一致。但此時兩個線程的狀態(tài)任然是正常的,等到主庫也插入一條同樣的數據時,通知從庫做相同操作,從庫會出現主鍵重復的錯誤。此時Slave_SQL_Running的狀態(tài)會變?yōu)镹o,
    而Last_SQL_Error,Last_SQL_Error_Timestamp會記錄錯誤的原因和發(fā)生時間。
    Slave_SQL線程會停止后續(xù)的SQL語句執(zhí)行,因為它意識到往后執(zhí)行會導致錯誤修復的難度增加。

    ?**2.1.查看從庫的幾個命令

    SHOW SLAVE STATUS;STOP SLAVE;START SLAVE;

    **2.2. 如何判斷主從完全同步

    Master_Log_File和Relay_Master_Log_File所指向的文件必須一致 Relay_Log_Pos和Exec_Master_Log_Pos的為止也要一致才行 Slave_SQL_Running_State:顯示為wait 意思是中繼日志的sql語句已經全部執(zhí)行完畢

    ?

    *3.如何刪除mysql-relay-bin.000*文件

    參考:https://blog.csdn.net/u010098331/article/details/50729984

    **3.1.Relay Log無法自動刪除的問題

    綜合分析后發(fā)現和以下原因有關。


    1).該實例原先是一個Slave?? -------導致relay-log 和 relay-log.index的存在。
    2).該實例目前已經不是Slave? -------由于沒有了IO-Thread,導致relay-log-purge 沒有起作用( 這也是其他Slave實例沒有這種情況的原因,因為IO-thread會做自動rotate操作)。
    3).該實例每天會進行日常備份? -------Flush logs的存在,導致每天會生成一個relay-log
    4).該實例沒有配置expire-logs-days ------導致flush logs時,也不會做relay-log清除

    簡而言之就是: 一個實例如果之前是Slave,而之后停用了(stop slave),且沒有配置expire-logs-days的情況下,會出現relay-log堆積的情況。

    **3.2.刪除Mysql 從數據庫的relay logs最安全方式

    參考:https://dev.mysql.com/doc/refman/5.7/en/replication-administration-pausing.html

    方式二: 手動刪除 relay log1. 設置relay_log_purge = 1 SET GLOBAL relay_log_purge = 1 2. flush logs 通過管理員用戶登陸從數據庫,然后執(zhí)行下面命令:flush logs;可以執(zhí)行多次!注意:觀察堆積的relay logs日志是否已經刪除,如果刪除,直接執(zhí)行下面第6步“恢復relay_log_purge = 0“;如果未刪除,繼續(xù)從下面第3步”停止slave“往下操作!!!3. 停止slave 通過管理員用戶登陸從數據庫,然后執(zhí)行下面命令:stop slave;4. 刪除relay logs 可以通過rm直接刪除relay logs通使用下面方式安全刪除:(1) 統(tǒng)計所有關于relay的文件(包括 relay_log_name.index)總個數ls -A1 |grep relay | sort -rn | wc -l(2) 列出要刪除所有有關relay的文件:ls -A1 |grep relay | sort -rn | tail -n 100說明: 100 為要刪除的relay logs 數量(3) 確定沒有問題,刪除relay logs:ls -A1 |grep relay | sort -rn | tail -n 100 | xargs rm -rf {}注意:要保留最新的兩個relay log 要保留relay log的index文件 relay log的index一般命名為: relay_log_name.index 例如: relay-bin.index 5. 啟動slave 通過管理員用戶登陸從數據庫,然后執(zhí)行下面命令:start slave;6 . 恢復relay_log_purge = 0 通過管理員用戶登陸從數據庫,然后執(zhí)行下面命令:SET GLOBAL relay_log_purge=0;擴展 如果你對從數據庫要求不高,可以將relay_log_purge = 1

    實際操作:

    SHOW SLAVE STATUS;STOP SLAVE;SET GLOBAL relay_log_purge = 1;FLUSH LOGS;SET GLOBAL relay_log_purge=0;

    **3.3.刪除后直接剩下的結果:(注意要留最新的那幾個文件)

    總結

    以上是生活随笔為你收集整理的mysql主从备份失败--记录现象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。