數據庫 之 Mysql復制的監控和維護
PURGE ,刪除二進制文件,不能直接物理刪除,否則重啟mysql服務可能會導致各種異常,需要使用命令PURGE進行刪除,因為mysql重啟後,就不會再找對應的文件,使用purge命令刪除會自動更新索引文件,下次mysql重啟時,就不會找對應的二進制文件
PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr };
TO表示到該二進制文件之前的,不包括該二進制文件,都會被清除
或者,BEFORE某個時間,則到該時間之前的二進制日誌文件都會被刪除,如果這個時間恰好是某個二進制文件中間的某個時間點,那麽也會把這個文件的該時間點之前的日誌都刪掉,但是該日誌的該時間點後的日誌不會被清除。
二進制日誌一定不能刪除,用來恢復數據,如果一定要刪除,建議復制二進制文件到其他機器上,然後再用purge命令刪除本機上的二進制文件
查找當前的二進制文件內容
MariaDB [sunnydb]> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| master-log.000001 | 542 |
| master-log.000002 | 468 |
| master-log.000003 | 1045 |
| master-log.000004 | 1296 |
+-------------------+-----------+
如清除master-log.000003 即清除master-log.000002 和master-log.000001的二進制log,命令如下
MariaDB [sunnydb]> purge binary logs to 'master-log.000003';
(2) 復制監控命令
查看復制相關的狀態和文件的命令
MASTER:
查看當前用哪個二進制文件,以及當前二進制文件的位置
SHOW MASTER STATUS;
查看二進制文件的記錄
SHOW BINLOG EVENTS;
查看所有的二進制文件和文件大小
SHOW BINARY LOGS;
SLAVE:
查看從服務器的狀態數據
SHOW SLAVE STATUS\G;
判斷從服務器是否落後於主服務器的時間:
Seconds_Behind_Master: 0
(3) 如何確定主從節點數據是否一致?
通過表的CHECKSUM檢查,表創建時可以啟用checksum功能,但是,一旦啟用該功能,每一次更改表的信息都會計算表的校驗碼,消耗資源;
建議使用percona-tools中percona-toolkit 的功能 pt-table-checksum;計算出主從服務器上表的校驗和,並進行比較。percona-toolkit 還可以檢查各種系統指標
(4) 主從數據不一致時的修復方法?
重新復制;
如果不同步的量很少,可以直接手動修改數據即可
註意,工具PXC按位復制,數據不一致的概率小
數據庫 之 Mysql復制的監控和維護