基于Canal 实现数据库表的同步

  1. Canal
    目前主要支持了MySQL
  2. 步骤
    2.1 本例分别在Linux 系统和本地Windows 系统创建数据库,表;其中表名与结构相同,以实现Linux 数据库更新同步到本地数据库
    2.2 开启Linux 系统中Mysql binlog功能
    执行命令 show variables like ‘log_bin’ 查看log_bin 状态,如为OFF,则需要修改配置文件 my.cnf 来开启binlog;
    命令vi /etc/my.cnf,追加内容:
    log-bin=mysql-bin #binlog文件名
    binlog_format=ROW #选择row模式
    server_id=1 #mysql实例id,不能和canal的slaveId重复
    重启Mysql,再次查看log_bin 状态
    2.3 在Linux 系统中Mysql 里面添加一个用户,设置可远程访问的权限
    CREATE USER ‘canal’@’%’ IDENTIFIED BY ‘canal’;
    GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@’%’;
    FLUSH PRIVILEGES;
    2.4 在Linux 系统安装Canal
    解压tar包后,进入文件夹修改配置文件vi conf/example/instance.properties
    #配置数据库信息
    canal.instance.master.address=当前Linux系统IP:Mysql端口
    #配置数据库用户名与密码(2.3添加了canal用户;此处需要配置有远程访问权限的用户)
    canal.instance.dbUsername=canal
    canal.instance.dbPassword=canal
    #配置需要同步的数据库表规则,例如只是同步某一表
    canal.instance.filter.regex=数据库名.表名
    #如需同步所有库所有表,则:
    #canal.instance.filter.regex=.\…
    2.5 启动Canal
    进入bin目录,执行./startup.sh
  3. 编写代码
    3.1 依赖
    < dependency>
    < groupId>com.alibaba.otter< /groupId>
    < artifactId>canal.client< /artifactId>
    < /dependency>
    3.2 编写canal客户端类
    3.3 创建启动类,监听canal客户端

猜你喜欢

转载自blog.csdn.net/weixin_51681634/article/details/111993985