導致SQL線程故障原因分析及解決方案 原因 處理方法(以從庫為核心的處理方案): ...
導致SQL線程故障原因分析及解決方案
原因
1. 版本差異,參數設定不同,比如:數據類型的差異,SQL_MODE影響
2. 要創建的資料庫對象已經存在
3. 要刪除或修改的對象不存在
4. DML語句不符合表定義及約束時.
原因是由於從庫發生了寫入操作.
Last_SQL_Error: Error 'Can't create database 'klvchen'; database exists' on query. Default database: 'klvchen'. Query: 'create database klvchen'
處理方法(以從庫為核心的處理方案):
# 方法一:
stop slave;
set global sql_slave_skip_counter = 1;
# 將同步指針向下移動一個,如果多次不同步,可以重覆操作。
start slave;
# 方法二:
vi /etc/my.cnf
# 在 [mysqld] 下添加
slave-skip-errors = 1032,1062,1007
# 常見錯誤代碼:
1007:對象已存在
1032:無法執行DML
1062:主鍵衝突,或約束衝突
註意,以上操作有風險!最安全的做法就是重新構建主從。把握一個原則,一切以主庫為主.
# 方法三:(最優解決方案)
1.設置從庫只讀.
vi /etc/my.cnf
# 在 [mysqld] 下添加
read-only
# 查看參數是否生效
show variables like '%read_only%';
註意:read-only 只會影響到普通用戶,對管理員用戶無效。
2.加中間件
讀寫分離。如 mycat