MySQL 二進(jìn)制日志(binary logs)是 MySQL 數(shù)據(jù)庫中的一種日志記錄。它記錄了所有對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)修改的操作,例如插入、更新和刪除。二進(jìn)制日志非常重要,它可以用于數(shù)據(jù)恢復(fù)(例如錯誤地刪除了一些數(shù)據(jù)但又不想使用備份進(jìn)行恢復(fù))或者用于 MySQL 數(shù)據(jù)庫主從復(fù)制。
示例:在 MySQL 中開啟二進(jìn)制日志 $ mysql -uroot -p Enter password: mysql>show variables like 'log_bin'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin | OFF | +---------------------------------+-------+ 1 row in set (0.05 sec) mysql>set global log_bin=ON; Query OK, 0 rows affected (0.01 sec) mysql>show variables like 'log_bin'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin | ON | +---------------------------------+-------+ 1 row in set (0.00 sec)
使用二進(jìn)制日志可以使得 MySQL 數(shù)據(jù)庫主從復(fù)制更加可靠。在主庫上開啟二進(jìn)制日志后,在從庫上啟用“復(fù)制從指定的 binlog 文件和位置”的方式進(jìn)行同步,即從主庫的指定二進(jìn)制日志的位置開始進(jìn)行復(fù)制,避免了復(fù)制全量數(shù)據(jù)的風(fēng)險。
同時需要注意,二進(jìn)制日志會在磁盤上占用較多的空間,需要定期進(jìn)行清理維護(hù)。可以使用 MySQL 內(nèi)置的 PURGE BINARY LOGS 命令進(jìn)行清理,指定清理某段時間之前的二進(jìn)制日志。
示例:清理 MySQL 二進(jìn)制日志 mysql>show binary logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 107 | | mysql-bin.000002 | 107 | | mysql-bin.000003 | 107 | | mysql-bin.000004 | 107 | | mysql-bin.000005 | 107 | +------------------+-----------+ 5 rows in set (0.00 sec) mysql>purge binary logs to 'mysql-bin.000003'; Query OK, 0 rows affected (0.01 sec)
總之,使用 MySQL 二進(jìn)制日志可以大大增加 MySQL 數(shù)據(jù)庫的靈活性和可靠性,值得開發(fā)人員和 DBA 強(qiáng)烈推薦使用和維護(hù)。