MySQL的Binary Log(简称binlog)是一种二进制日志文件,记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。它的主要目的是用于数据恢复和主从复制。
MySQL的binlog有两种格式:
原因:MySQL服务器未配置开启binlog。
解决方法:
编辑MySQL配置文件(通常是my.cnf或my.ini),添加或修改以下配置:
[mysqld]
log-bin=mysql-bin
binlog-format=ROW # 或其他格式重启MySQL服务器使配置生效。
原因:网络延迟、从库处理能力不足等。
解决方法:
slave_parallel_workers等。原因:长时间运行且未进行binlog轮转。
解决方法:
配置binlog的轮转策略,例如:
[mysqld]
max_binlog_size=100M # 设置binlog文件的最大大小
expire_logs_days=10 # 设置binlog文件的过期时间以下是一个简单的示例,展示如何在MySQL中开启binlog并进行主从复制配置:
编辑MySQL配置文件:
[mysqld]
log-bin=mysql-bin
binlog-format=ROW重启MySQL服务器。
主库配置:
-- 创建用于复制的用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 查看主库状态
SHOW MASTER STATUS;从库配置:
-- 配置从库连接到主库
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;
-- 启动从库复制
START SLAVE;