標籤: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與SQLSlave_IO_Running: YesSlave_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主從不同步處理方案