修改配置文件
windows 文件
修改 my.ini
文件
linux 文件
vim /etc/my.cnf
修改内容
在 [mysqld]
区块下添加下面内容:
# 开启binlog,必须指定server id,否则无法启动
server_id=1
# 设置日志路径、文件名,注意路经需要mysql用户有权限写
log-bin=mysql-bin
# 设置记录模式
binlog_format=ROW
# 指定scott数据库发生数据变化时,会生成 binlog 日志
binlog-do-db=scott
# 可以配置多个项,记录不同数据库的binlog
# binlog-do-db=test
说明:
binlog日志路径:默认在
/var/lib/mysql
目录下。在本数据库中在/program/mysql-5.7.32/data/
路径下重启mysql,会立即生成
mysql-bin.00000x
文件
其他配置参数:
# 设置binlog清理时间
expire_logs_days = 7
# binlog每个日志文件大小
max_binlog_size = 100m
# binlog缓存大小
binlog_cache_size = 4m
# 最大binlog缓存大小
max_binlog_cache_size = 512m
重启
重启后才生效
windows
重启 mysql 服务,略
linux
systemctl restart mysql
查看是否生效
登录 MySQL 客户端:
mysql -uroot -proot
执行下面 SQL:
show variable like '%binlog%';
看到下面结果,说明成功:
| binlog_format | ROW |
查看binlog日志
cd /program/mysql-5.7.32/data/
ll mysql-bin*
看到下面文件:
mysql-bin.000001
mysql-bin.index
查看 mysql-bin.index 文件内容
cat mysql-bin.index
结果如下:
./mysql-bin.000001
查看 mysql-bin.000001 文件内容
vim mysql-bin.000001
结果是二进制乱码
测试
创建 scott 数据库
注意:数据库名必须是 scott
,因为上面指定 只记录 scott
数据库的 binlog日志
创建过程略
创建表 dept
CREATE TABLE `dept` (
`deptno` INT(4) NOT NULL,
`dname` VARCHAR(14) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
`loc` VARCHAR(13) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
PRIMARY KEY (`deptno`)
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB
;
创建表 emp
CREATE TABLE `emp` (
`empno` INT(4) NOT NULL,
`ename` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
`job` VARCHAR(9) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
`mgr` INT(4) NULL DEFAULT NULL,
`hiredate` DATE NULL DEFAULT NULL,
`sal` DECIMAL(7,2) NULL DEFAULT NULL,
`comm` DECIMAL(7,2) NULL DEFAULT NULL,
`deptno` INT(2) NULL DEFAULT NULL,
PRIMARY KEY (`empno`)
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB
;
导入 dept 数据
INSERT INTO `dept`(`deptno`, `dname`, `loc`) VALUES (3, '市场部', '北京');
INSERT INTO `dept`(`deptno`, `dname`, `loc`) VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO `dept`(`deptno`, `dname`, `loc`) VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO `dept`(`deptno`, `dname`, `loc`) VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO `dept`(`deptno`, `dname`, `loc`) VALUES (40, 'OPERATIONS', 'BOSTON');
导入 emp 数据
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, NULL, 20);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, NULL, 20);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20);
INSERT INTO `emp`(`empno`, `ename`, `job`, `mgr`, `hiredate`, `sal`, `comm`, `deptno`) VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);
执行下面sql
INSERT INTO `scott`.`dept`(`deptno`, `dname`, `loc`) VALUES (NULL, NULL, NULL);
查看 mysql-bin.000001 文件内容
vim mysql-bin.000001
内容变多了