MySQL的binlog(二進制日志)是一種用于記錄數據庫變更的機制。它記錄了MySQL對數據庫的更新操作,如INSERT、UPDATE、DELETE等操作,并保存在磁盤上以供恢復、備份數據和實現主從復制等操作使用。
MySQL的主從復制是一種數據同步的方式,將一個MySQL服務器(主服務器)的數據自動復制到另一個MySQL服務器(從服務器)上。binlog的主從復制就是利用主服務器的binlog文件將數據同步到從服務器上。這種方式可以提高MySQL服務器的可用性和可擴展性。
# 配置主服務器的binlog vi /etc/my.cnf [mysqld] log-bin=mysql-bin server-id=1 # 配置從服務器 vi /etc/my.cnf [mysqld] server-id=2
主服務器需要配置log-bin選項開啟binlog,server-id選項指定服務器唯一標識。從服務器只需要指定server-id選項,不需要開啟binlog。
# 從主服務器中復制binlog文件到從服務器 mysqlbinlog mysql-bin.000001 >/tmp/mysql-bin.000001.sql scp /tmp/mysql-bin.000001.sql user@slave:/tmp/ # 將binlog文件導入到從服務器 mysql< /tmp/mysql-bin.000001.sql
從主服務器的binlog文件中提取所需內容,并將其復制到從服務器。然后將binlog文件導入到從服務器。從服務器中需要先創建相應的數據庫和表,并使用CHANGE MASTER TO構造復制關系。
# 在從服務器上設置主服務器連接信息 CHANGE MASTER TO MASTER_HOST='master', MASTER_USER='repl', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='mysql-bin.012345', MASTER_LOG_POS=12345; # 啟動從服務器復制進程 START SLAVE;
在從服務器上,使用CHANGE MASTER TO命令將從服務器與主服務器建立復制關系,并指定主服務器的連接信息和binlog文件位置。使用START SLAVE命令啟動復制進程。
經過上述步驟,主從服務器就可以實現數據同步了。當主服務器上有新的數據被更新時,主服務器會寫入binlog文件,然后從服務器會讀取binlog文件并執行相應的更新操作。