1. 程式人生 > >MySQL主從說明詳解、MySQL主從不同步處理方案

MySQL主從說明詳解、MySQL主從不同步處理方案

mysql mysql主從 mysql復制 mysql主從不同步

MySQL主從說明

同步問題

mysqldump:此工具適用於10G以下數據庫或幾個表
percona-Xtrabackup備份工具:適用於100G-500G
LVM快照:更大的數據量,或分庫分表

主從復制目的

  1. 讀寫分離,減輕主庫負載或數據分析;
  2. 數據安全,做備份恢復;
  3. 主從切換,做高可用;

常見主從結構:

一主一從:一個Master,一個Slave
一主多從:一個Master,多個slave

Master節點:負責所有的【寫】請求
Slave節點:負責大部分的【讀】請求

主從復制步驟

技術分享圖片

  1. A數據更新
  2. A寫入Bin Log
  3. A的io線程與B的io線程傳輸通信
  4. B將傳輸的信息寫入Relay Log
  5. B檢查到Relay Log有新內容後執行SQL語句
  6. 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主從不同步處理方案