MySQL主從說明詳解、MySQL主從不同步處理方案
阿新 • • 發佈:2018-04-03
mysql mysql主從 mysql復制 mysql主從不同步 MySQL主從說明
同步問題
mysqldump:此工具適用於10G以下數據庫或幾個表
percona-Xtrabackup備份工具:適用於100G-500G
LVM快照:更大的數據量,或分庫分表
主從復制目的
- 讀寫分離,減輕主庫負載或數據分析;
- 數據安全,做備份恢復;
- 主從切換,做高可用;
常見主從結構:
一主一從:一個Master,一個Slave
一主多從:一個Master,多個slave
Master節點:負責所有的【寫】請求
Slave節點:負責大部分的【讀】請求
主從復制步驟
- A數據更新
- A寫入Bin Log
- A的io線程與B的io線程傳輸通信
- B將傳輸的信息寫入Relay Log
- B檢查到Relay Log有新內容後執行SQL語句
- B更新數據
MySQL主從數據不同步處理
檢查
master庫(也就是主服務庫)
mysql>show processlist; //查看進程是否sleep太多
mysql>show master status; //查看主服務器的master數據狀態
Slave庫(從庫)
mysql>show slave status\G //查看slave的同步狀況,主要是IO與SQL Slave_IO_Running: Yes Slave_SQL_Running: No 這兩個必須是yes狀態,由此可見slave不同步狀態
處理方案
方法一:忽略錯誤,繼續同步
適用於主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況;
Slave庫修復 mysql>stop slave; //停止同步 mysql>set global sql_slave_skip_counter =1; //跳過一步錯誤 mysql>start slave; //開啟同步
方法二:重做主從,完全同步
適用於主從庫數據相差較大,或者要求數據完全統一的情況;
master庫設置
mysql>flush tables with read lock; //鎖定為只讀,防止數據寫入
mysqldump -uroot -p‘123456‘ mysql > /tmp/mysql.bak.sql //備份數據到目錄
mysql> show master status; //查看master的狀態,寫同步配置會用到相關數據
scp /tmp/mysql.bak.sql [email protected]:/tmp/ //將mysql的備份文件傳到從庫機器
Slave庫設置
mysql>stop slave; //停止同步
mysql>source /tmp/mysql.bak.sql //使用備份就行恢復數據,也可以使用mysqldump命令
change master to master_host = ‘192.168.128.100‘, master_user = ‘rsync‘, master_port=3306, master_password=‘‘, master_log_file = ‘mysqld-bin.000001‘, master_log_pos=3260; //設置從庫同步,其中log_file與log_pos的參數來自於主服務的show master status裏
mysql>start slave; //開啟從同步
mysql>show slave status\G //查看同步狀態
MySQL主從說明詳解、MySQL主從不同步處理方案