1. 在 MySQL 数据库中创建 Canal 账户并为其授权
在安装 Canal 前,你需要在 MySQL 数据库中创建一个用于 Canal 连接的账户,并为该账户授予必要的权限。
以下是在 MySQL 数据库中创建 Canal 账户并为其授权的步骤:
- 登录 MySQL
使用以下命令登录 MySQL:
mysql -u root -p
输入你的 MySQL root 账户密码后,进入 MySQL 控制台。
- 创建 Canal 账户
使用以下命令在 MySQL 数据库中创建一个名为 canal 的账户,并设置密码:
CREATE USER 'canal'@'%' IDENTIFIED BY '密码';
这里我们将 canal 的密码设置为 canal。请注意,上面的命令中,% 表示可以从任何 IP 地址连接到 MySQL 数据库。
- 授权 Canal 账户
使用以下命令为 canal 账户授权:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
这将授予 canal 账户在所有数据库中的表上执行 SELECT 操作,以及执行 MySQL 复制所需的权限。
- 刷新权限
使用以下命令刷新 MySQL 权限:
FLUSH PRIVILEGES;
完成以上步骤后,你就可以在 Canal 配置文件中使用新创建的 canal 账户连接到 MySQL 数据库了。请记得在 canal.properties 配置文件中使用正确的账户名和密码。
2.在 MySQL 中开启二进制日志(binlog)功能
是的,为了能够让 Canal 实时地获取 MySQL 的数据变更,你需要在 MySQL 中开启二进制日志(binlog)功能,并确保 binlog 格式为 ROW。
以下是在 MySQL 中开启 binlog 并设置 binlog 格式为 ROW 的步骤:
- 登录 MySQL
使用以下命令登录 MySQL:
mysql -u root -p
输入你的 MySQL root 账户密码后,进入 MySQL 控制台。
- 查看当前 binlog 状态
使用以下命令查看当前 MySQL 中 binlog 的状态:
show variables like '%binlog%';
- 开启 binlog
如果 MySQL 的 binlog 状态为 OFF,使用以下命令开启 binlog:
set global binlog_format=ROW;
set global binlog_row_image=full;
set global binlog_checksum=NONE;
set global binlog_enabled=ON;
SET GLOBAL expire_logs_days = 7;
- 配置 binlog
使用以下命令修改 MySQL 的配置文件,启用 binlog 并设置 binlog 格式为 ROW:
vi /etc/my.cnf
在 my.cnf 文件中添加以下内容:
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
binlog_row_image=full
binlog_checksum=NONE
# 设置binlog文件的过期时间(可选)
expire_logs_days=7
这些配置选项将启用binlog功能、设置binlog格式为ROW、记录完整的行数据、禁用binlog校验和,以及(可选)设置binlog文件的过期时间。这样的设置将确保MySQL与Canal进行数据同步的兼容性。
- 重启 MySQL
使用以下命令重启 MySQL 以应用新的 binlog 配置:
systemctl restart mysqld
完成以上步骤后,你已经成功地开启了 MySQL 的 binlog,并设置了 binlog 格式为 ROW。现在,你可以在 Canal 配置文件中配置连接到 MySQL 并监控 MySQL 的数据变更。
3. 在CentOS 7上安装canal:
- 确保系统已安装Java环境:Canal需要JDK 1.8或更高版本。您可以通过运行以下命令检查Java版本:
java -version
如果没有安装Java,请使用以下命令安装OpenJDK 1.8:
sudo yum install java-1.8.0-openjdk
- 下载canal预发布版本:https://github.com/alibaba/canal/releases/tag/canal-1.1.7-alpha-2,选择需要的组件(例如:canal.deployer-1.1.7-SNAPSHOT.tar.gz)并上传到您的CentOS 7系统。
这些文件都是canal-1.1.7-alpha-2预发布版本的不同组件,它们之间的区别如下:
1. canal.adapter-1.1.7-SNAPSHOT.tar.gz(236 MB,发布于1月4日):这个包含了canal适配器组件,用于在不同数据源和数据目标之间进行数据同步。
2. canal.admin-1.1.7-SNAPSHOT.tar.gz(37.5 MB,发布于1月4日):这个包含了canal的管理组件,用于对canal集群进行管理、监控和配置。
3. canal.deployer-1.1.7-SNAPSHOT.tar.gz(102 MB,发布于1月4日):这个包含了canal部署组件,用于部署、启动和停止canal服务。
4. canal.example-1.1.7-SNAPSHOT.tar.gz(23.1 MB,发布于1月4日):这个包含了一些canal的示例项目,帮助用户了解如何使用和配置canal进行数据同步。
这些组件都是为了实现canal数据同步工具的不同功能而设计的。用户可以根据自己的需求选择相应的组件进行下载和使用。
- 解压缩下载的文件:
tar -zxvf canal.deployer-1.1.7-SNAPSHOT.tar.gz
解压后,您将看到一个名为canal.deployer-1.1.7-SNAPSHOT
的目录。
- 配置canal:进入解压后的目录,找到
conf
文件夹,然后编辑example/instance.properties
文件,根据您的MySQL/MariaDB设置配置canal。
cd canal.deployer-1.1.7-SNAPSHOT/conf
vim example/instance.properties
至少需要修改以下设置:
canal.instance.master.address=your_mysql_server_ip:3306
canal.instance.dbUsername=your_mysql_username
canal.instance.dbPassword=your_mysql_password
- 启动canal服务:
cd ../bin
./startup.sh
现在,canal已经启动并运行在您的CentOS 7系统上。您可以通过查看日志文件(位于logs
目录)来检查运行状态和潜在问题。如果需要停止canal服务,可以运行:
./stop.sh
这些步骤将在CentOS 7上安装并启动canal服务。在实际应用中,您可能还需要配置其他组件,例如canal.adapter、canal.admin等,具体取决于您的需求。