MySQL 主從複製問題

致使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
相關文章
相關標籤/搜索