Slave_SQL_Running:Nomysql同步故障解決方法
原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://kerry.blog.51cto.com/172631/277414
Slave_SQL_Running: No mysql同步故障解決
今天檢查資料庫發現一臺MySQL Slave未和主機同步,檢視Slave狀態:
mysql> show slave statusG
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
….
Seconds_Behind_Master:NULL
原因:
1.程式可能在slave上進行了寫操作
2.也可能是slave機器重起後,事務回滾造成的.
mysql> show slave statusG
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
….
Seconds_Behind_Master:NULL
原因:
1.程式可能在slave上進行了寫操作
2.也可能是slave機器重起後,事務回滾造成的.
解決辦法I:
1.首先停掉Slave服務:slave stop
1.首先停掉Slave服務:slave stop
2.到主伺服器上檢視主機狀態:
記錄File和Position對應的值。
mysql> show master status;
+——————+———–+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———–+————–+——————+
| mysql-bin.000020 | 135617781 | | |
+——————+———–+————–+——————+
1 row in set (0.00 sec)
記錄File和Position對應的值。
mysql> show master status;
+——————+———–+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———–+————–+——————+
| mysql-bin.000020 | 135617781 | | |
+——————+———–+————–+——————+
1 row in set (0.00 sec)
3.到slave伺服器上執行手動同步:
mysql> change master to
> master_host=`master_ip`,
> master_user=`user`,
> master_password=`pwd`,
> master_port=3307,
> master_log_file=`mysql-bin.000020`,
> master_log_pos=135617781;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次檢視slave狀態發現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
Seconds_Behind_Master: 0
mysql> change master to
> master_host=`master_ip`,
> master_user=`user`,
> master_password=`pwd`,
> master_port=3307,
> master_log_file=`mysql-bin.000020`,
> master_log_pos=135617781;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次檢視slave狀態發現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
Seconds_Behind_Master: 0
解決辦法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
自己的使用體會:方法一是強制性從某一個點開始同步,會有部分沒有同步的資料丟失,後續主伺服器上刪除記錄同步也會有一些錯誤資訊,不會影響使用.方法二不一定會有效果.
=======================================================================================]
1,主從不能同步:
show slave status;報錯:Error xxx dosn`t exist
且show slave statusG:
Slave_SQL_Running: NO
Seconds_Behind_Master: NULL
且show slave statusG:
Slave_SQL_Running: NO
Seconds_Behind_Master: NULL
解決方法:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
之後Slave會和Master去同步 主要看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master是否為0,0就是已經同步了
Slave_SQL_Running: Yes
Seconds_Behind_Master是否為0,0就是已經同步了
2,還需要做的一些優化與監視:
show full processlist; //檢視mysql當前同步執行緒號
skip-name-resolve //跳過dns名稱查詢,有助於加快連線及同步的速度
max_connections=1000 //增大Mysql的連線數目,(預設100)
max_connect_errors=100 //增大Mysql的錯誤連線數目,(預設10)
show full processlist; //檢視mysql當前同步執行緒號
skip-name-resolve //跳過dns名稱查詢,有助於加快連線及同步的速度
max_connections=1000 //增大Mysql的連線數目,(預設100)
max_connect_errors=100 //增大Mysql的錯誤連線數目,(預設10)
檢視日誌一些命令
1, show master statusG;
在這裡主要是看log-bin的檔案是否相同。
show slave statusG;
在這裡主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果都是Yes,則說明配置成功.
2,在master上輸入show processlistG;
mysql> SHOW PROCESSLISTG
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL
mysql> SHOW PROCESSLISTG
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL
如果出現Command: Binlog Dump,則說明配置成功.
stop slave #停止同步
start slave #開始同步,從日誌終止的位置開始更新。
SET SQL_LOG_BIN=0|1 #主機端執行,需要super許可權,用來開停日誌,隨意開停,會造成主機從機資料不一致,造成錯誤
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客戶端執行,用來跳過幾個事件,只有當同步程式出現錯誤而停止的時候才可以執行。
RESET MASTER #主機端執行,清除所有的日誌,這條命令就是原來的FLUSH MASTER
RESET SLAVE #從機執行,清除日誌同步位置標誌,並重新生成master.info
雖然重新生成了master.info,但是並不起用,最好,將從機的mysql程式重啟一下,
LOAD TABLE tblname FROM MASTER #從機執行,從主機端重讀指定的表的資料,每次只能讀取一個,受timeout時間限制,需要調整timeout時間。執行這個命令需要同步賬號有 reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
LOAD DATA FROM MASTER #從機執行,從主機端重新讀入所有的資料。執行這個命令需要同步賬號有reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
CHANGE MASTER TO master_def_list #線上改變一些主機設定,多個用逗號間隔,比如
CHANGE MASTER TO
MASTER_HOST=`master2.mycompany.com`,
MASTER_USER=`replication`,
MASTER_PASSWORD=`bigs3cret`
MASTER_POS_WAIT() #從機執行
SHOW MASTER STATUS #主機執行,看日誌匯出資訊
SHOW SLAVE HOSTS #主機執行,看連入的從機的情況。
SHOW SLAVE STATUS (slave)
SHOW MASTER LOGS (master)
SHOW BINLOG EVENTS [ IN `logname` ] [ FROM pos ] [ LIMIT [offset,] rows ]
PURGE [MASTER] LOGS TO `logname` ; PURGE [MASTER] LOGS BEFORE `date`
start slave #開始同步,從日誌終止的位置開始更新。
SET SQL_LOG_BIN=0|1 #主機端執行,需要super許可權,用來開停日誌,隨意開停,會造成主機從機資料不一致,造成錯誤
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客戶端執行,用來跳過幾個事件,只有當同步程式出現錯誤而停止的時候才可以執行。
RESET MASTER #主機端執行,清除所有的日誌,這條命令就是原來的FLUSH MASTER
RESET SLAVE #從機執行,清除日誌同步位置標誌,並重新生成master.info
雖然重新生成了master.info,但是並不起用,最好,將從機的mysql程式重啟一下,
LOAD TABLE tblname FROM MASTER #從機執行,從主機端重讀指定的表的資料,每次只能讀取一個,受timeout時間限制,需要調整timeout時間。執行這個命令需要同步賬號有 reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
LOAD DATA FROM MASTER #從機執行,從主機端重新讀入所有的資料。執行這個命令需要同步賬號有reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
CHANGE MASTER TO master_def_list #線上改變一些主機設定,多個用逗號間隔,比如
CHANGE MASTER TO
MASTER_HOST=`master2.mycompany.com`,
MASTER_USER=`replication`,
MASTER_PASSWORD=`bigs3cret`
MASTER_POS_WAIT() #從機執行
SHOW MASTER STATUS #主機執行,看日誌匯出資訊
SHOW SLAVE HOSTS #主機執行,看連入的從機的情況。
SHOW SLAVE STATUS (slave)
SHOW MASTER LOGS (master)
SHOW BINLOG EVENTS [ IN `logname` ] [ FROM pos ] [ LIMIT [offset,] rows ]
PURGE [MASTER] LOGS TO `logname` ; PURGE [MASTER] LOGS BEFORE `date`
相關文章
- linux 故障解決方法彙總Linux
- 解決DNS解析故障的幾種方法DNS
- DVR常見故障原因及解決方法VR
- goldengate 故障及解決方法彙總Go
- 【MySql】複製出現Slave_SQL_Running: No 錯誤解決MySql
- NFS故障解決NFS
- Docker啟動故障問題 no such file or directory解決方法Docker
- 網路交換機常見故障及解決方法
- ora-01991:故障的解決方法
- asp.net 應用程式中同步方法呼叫非同步方法無響應解決方法ASP.NET非同步
- 故障解決法(摘抄)
- DNS故障的幾種常見原因及解決方法DNS
- MySQL 常見同步複製故障處理方法MySql
- 滑鼠反應遲鈍與反應慢故障解決方法
- 線上MYSQL同步報錯故障處理方法總結MySql
- 【故障解決】OGG-00446 錯誤解決
- 使用nodeAPI時遇到非同步問題的解決方法API非同步
- mysql主從不同步的2種解決方法MySql
- 光纖收發器常見故障及對應解決方法
- 噴墨印表機出現墨盒漏氣故障的解決方法
- 系統常見音效卡驅動故障解決方法(轉)
- Linux核心重編譯常見故障及其解決方法(轉)Linux編譯
- 【故障解決】enq: PS - contentionENQ
- metalink登陸故障解決!
- 【故障解決】IPCS和IPCRM使用
- 【故障解決】ORA-06502錯誤解決
- 常見硬碟故障大全 硬碟故障解決辦法大全硬碟
- 硬碟物理故障解決方法之電路板損壞修復方案硬碟
- 印表機的常見故障解決方法 HP 5000印表機為例
- 資料庫報ORA-16198故障的解決方法分析資料庫
- 解決Linux索引節點(inode)用滿導致故障的方法Linux索引
- dg主庫建立檔案備庫未同步解決方法
- 用最簡單的例子講解js中解決非同步的方法JS非同步
- 解決docker: Error response from daemon故障DockerError
- Sentinel哨兵模式解決故障轉移模式
- 【Spark篇】---Spark故障解決(troubleshooting)Spark
- ORA-10873 故障解決
- Dataguard日常維護及故障解決