【安装指南】Canal 环境的安装与使用
目录
一、MySQL 的配置
1.1 开启并配置 Binlog
1.2 重启 MySQL 服务
1.3 赋值数据同步权限
二、安装并配置 Canal
2.1 下载并解压Canal
2.2 修改配置
2.2.1 结合 Kafka
2.2.1.1 修改canal.properties
2.2.1.2 修改instance.properties
2.2.2 结合 RabbitMQ
2.2.2.1 修改canal.properties
2.2.2.2 修改instance.properties
2.3 拷贝 jar 包
2.4 启动 Canal
三、Canal 执行原理
四、常见错误
4.1 Unrecognized VM option 'PermSize=128m'
一、MySQL 的配置
1.1 开启并配置 Binlog
找到 MySQL 配置文件,Linux 默认配置在 /etc/my.cnf 文件中,而 Windows 在安装目录的路径如下:
-
MySQL 8.0 及更高版本:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
-
MySQL 5.7 及更低版本:C:\Program Files\MySQL\MySQL Server 5.7\my.ini (具体路径可能因安装时的选择而有所不同)
需要注意的是,ProgramData 可能是一个隐藏文件夹,您可能需要在文件资源管理器中设置显示隐藏的文件和文件夹才能看到它。
修改成如下配置(基于 MySQL8)
log-bin="AOYUNLAN"
binlog_format=ROW
binlog-do-db=cloud
其中:binlog-do-db 指的是需要同步的数据库名,需改改为你自己需要同步的数据库名,如果此项不配置,则所有数据库都会开启 Binlog,如果需要指定开启多个只需要如下配置即可:
binlog-do-db=cloud
binlog-do-db=cloud2
binlog-do-db=cloud3
binlog_format 支持三种数据库格式:
-
STATEMENT (语句模式):基于 SQL 语句的复制。binlog 中记录的是执行的 SQL 语句。
-
优点:节省空间,因为只记录语句,不需要记录每一行数据的变化。
-
缺点:某些情况下可能会导致主从数据不一致,例如使用了不确定函数,如 NOW() 、 RAND() 或依赖于上下文的语句(如 LIMIT 基于行的偏移量)。
-
-
ROW (行模式):基于行的复制。binlog 中记录的是每行数据的变化。
-
优点:数据的一致性更好,几乎不会出现主从数据不一致的情况。
-
缺点:会产生大量的日志,特别是在表中有大量数据更新时,binlog 体积较大。
-
-
MIXED (混合模式):默认情况下使用 STATEMENT 模式,如果遇到某些不确定的语句,会自动切换到 ROW 模式。
-
优点:试图结合 STATEMENT 和 ROW 模式的优点,在大部分情况下使用 STATEMENT 节省日志空间,在必要时切换到 ROW 保证数据一致性。
-
缺点:由于模式的切换可能会导致一些复杂的情况,增加了理解和调试的难度。
-
但需要注意的是:基于 Canal 实现的数据同步只能使用 ROW 格式,因为它不能将 SQL 语句执行变成对应的数据,所以它只能获取修改后的数据进行同步。
演示内容为 ROW 行模式