canal數據同步的環境配置


canal數據同步的環境配置:(適用於mysql)

前提:在linux和windows系統的mysql數據庫中創建相同結構的數據庫和表,我的linux中mysql是用docker實現的(5.7版本),拉取mysql鏡像后,當我們創建容器時,一定要記得對目錄進行掛載,否則后期是無法開啟logbin功能的。

1.開啟mysql的logbin功能

#拉取鏡像
docker pull mysql
#創建容器
docker run -p 33306:3306 
--name mysql 
-v /root/mysql/conf:/etc/mysql/mysql.conf.d 
-v /root/mysql/logs:/logs 
-v /root/mysql/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=root 
-di mysql

(1)可以通過進入mysql然后修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

docker exec -it mysql /bin/bash
cd /etc/mysql/mysql.conf.d
#docker中並沒有vim命令 所以可以選擇安裝vim
apt-get update
apt-get install -y vim
#安裝完后可以進行修改

(2)也可以使用命令進行修改

docker exec myMysql bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

  

docker exec myMysql bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

(3)因為進行了目錄掛載所以也可以直接在宿主機上修改

然后重啟mysql

docker restart myMysql

檢查binlog功能是否有開啟

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)

log_bin是ON則代表開啟了。

2.在linux中安裝canal服務並啟動

下載地址:

https://github.com/alibaba/canal/releases

(1)下載之后,放到目錄中,先創建好目錄,目錄任意,linux中要有Java環境

mv 安裝包 /usr/local/canal/

然后解壓

tar -zvxf 安裝包

(2)修改配置文件

vi conf/example/instance.properties
#需要改成自己的數據庫信息(linux中mysql的ip和端口)
canal.instance.master.address=192.168.44.132:3306

#需要改成自己的數據庫用戶名與密碼 該用戶必須有權限來跨系統連接
#可以通過windows中數據庫連接工具進行測試,連上就代表有權限
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal

#需要改成同步的數據庫表規則,例如只是同步一下表
#canal.instance.filter.regex=.*\\..*
canal.instance.filter.regex=guli_ucenter.ucenter_member

若沒有權限,則給用戶賦予權限

CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

注意:

mysql 數據解析關注的表,Perl正則表達式.
多個正則之間以逗號(,)分隔,轉義符需要雙斜杠(\\) 
常見例子:
1.  所有表:.*   or  .*\\..*
2.  canal schema下所有表: canal\\..*
3.  canal下的以canal打頭的表:canal\\.canal.*
4.  canal schema下的一張表:canal.test1
5.  多個規則組合使用:canal\\..*,mysql.test1,mysql.test2 (逗號分隔)
注意:此過濾條件只針對row模式的數據有效(ps. mixed/statement因為不解析sql,所以無法准確提取tableName進行過濾)

(3)進入bin目錄下啟動

cd bin
sh startup.sh

(4)關閉服務

./stop.sh

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM