跳到主要内容

MYSQL数据库环境准备

1. 概述

介绍如何为 MySQL 数据库开启 Binlog 模式 CDC 功能

2. 操作步骤

2.1. 确认当前使用的数据库版本

5.5<=适配版本<8.2.0

2.2. 开启数据库 Binlog

由于实时同步对 MySQL 数据库的读取方式为 Binlog ,因此需要提前对数据库开启 Binlog。

进入 etc 文件中,编辑my.cnf 文件,如下图所示:

2.2.1. 确认Binlog保存天数

mysql为云平台部署,需要运维在云平台确认binlog保存天数,注意超出天数的binlog会挪到oss,flink无法进行消费,建议后续监控binlog写入速度设置合适的binlog保存天数

对于私有化部署的mysql,超出天数的binlog会被删掉

2.2.2. 确认单个Binlog保留大小

单个Binlog文件大小的设置需要结合具体业务场景,一般我们建议单个Binlog文件不要超过500MB。

2.2.3. 修改 my.cnf 文件

增加如下内容:

server_id=2
log_bin=mysql-bin
binlog_format=ROW
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 这里的 '7' 表示保留最近 7 天的 Binlog。如果设置为 0,则表示永不删除。
expire_logs_days = 7
# 根据需要设置binlog文件大小,建议值 500 MB。
max_binlog_size = 536870912

server_id=2,其中2可写任意数值。

保存文件后重启 MySQL让配置生效。

输入show variables like 'log_%',查看日志是否开启,如果 log_bin 的值为 on,则日志开启,如下图所示:

同时输入show variables like 'binlog_%',查看 binlog_row_image 及 binlog_format 值是否分别为 FULL、ROW,如下图所示:

输入show variables like 'max_binlog_size',查看binlog大小,默认为500M,max_binlog_size 是否为 536870912;

2.3. 给指定账号开启复制权限

一般复制账号需要以下两个权限:REPLICATION SLAVE 权限、REPLICATION CLIENT 权限。

其中,REPLICATION CLIENT 不可用于建立复制,有该权限时,只是多了可以使用如SHOW SLAVE STATUS、SHOW MASTER STATUS等命令。

1)确定用户状态:

复制用户可以使用 show grants for 用户名来确定复制状态。

如果返回值中没有 replication client 和 replication slave 则需要开启复制权限。

2)使用以下命令进行权限开启

grant replication client on *.* to 用户名;
grant replication slave on *.* to 用户名;

然后使用命令:show grants for 用户名,查询用户权限状态,若返回值中包含下面的权限,则表示权限开启成功,如下图所示: