天天看點

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署。

準備

一、需要同步的MySQL配置

對于自建 MySQL , 需要先開啟 Binlog 寫入功能,配置 binlog-format 為 ROW 模式,my.cnf 中配置如下

[mysqld]
log-bin=mysql-bin # 開啟 binlog
binlog-format=ROW # 選擇 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定義,不要和 canal 的 slaveId 重複      

注意:針對阿裡雲 RDS for MySQL , 預設打開了 binlog , 并且賬号預設具有 binlog dump 權限 , 不需要任何權限或者 binlog 設定,可以直接跳過這一步

授權 canal 連結 MySQL 賬号具有作為 MySQL slave 的權限, 如果已有賬戶可直接 grant 進行授權。

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
--或者這樣更好: GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;      

允許mysql遠端連接配接:

grant all privileges on *.* to 'canal' @'%' identified by '2143';
flush privileges;      

二、下載下傳所需軟體

1、解壓完成後,進入 canal.deployer-1.1.5-SNAPSHOT 目錄,可以看到如下結構:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

到 \conf\example 目錄下,修改instance.properties,如下:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署
阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署
阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

2、解壓完成後,進入 canal.adapter-1.1.5-SNAPSHOT 目錄,可以看到如下結構:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

進入 /conf 目錄下,如圖:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

修改 application.yml 檔案的相關内容:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

進入到 \conf\rdb 目錄下,需要同步的表修改映射資訊:

阿裡開源中間件canal實作mysql資料庫同步,零侵入不寫代碼實作,也可以通過整合到項目程式實作更加靈活的控制,簡單幾步實作高性能準實時多資料庫多資料表的資料同步,可在windows和Linux部署

特别注意:每個表 對應 一個 .yml 檔案映射資訊。

三、在資料庫進行相關測試

/*
SQLyog v10.2 
MySQL - 5.5.56 : Database - test
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `test`;

/*Table structure for table `class_info` */

DROP TABLE IF EXISTS `class_info`;

CREATE TABLE `class_info` (
  `id` varchar(55) DEFAULT NULL,
  `name` varchar(55) DEFAULT NULL,
  `remark` varchar(55) DEFAULT NULL,
  `rownum` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`rownum`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

/*Table structure for table `tb_user` */

DROP TABLE IF EXISTS `tb_user`;

CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL,
  `age` int(11) DEFAULT NULL,
  `email` varchar(64) DEFAULT NULL,
  `nickname` varchar(64) NOT NULL,
  `password` varchar(32) DEFAULT NULL,
  `sex` int(11) DEFAULT NULL,
  `sign` varchar(64) NOT NULL,
  `user_id` varchar(11) DEFAULT NULL,
  `username` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_ig0bbysxr6nnpxo4qn2btdcc8` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;      

繼續閱讀