導致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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103170.html
標籤:MySQL
下一篇:MySql 視圖
