canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考
背景
需要將數據庫增量內容同步到另外的數據庫,兩者保持一致。包含增刪改,數據庫創建、刪除,數據庫名稱修改,內容清空,表結構修改,索引創建、修改、刪除。
方案
采用阿里巴巴Canal,用于監聽mysql的bin-log日志,從中讀取操作日志,然后寫入目標庫。
JDK需要自行安裝,本人采用JDK1.8-64位。
(2)修改mysql配置文件my.inf(用的mysql5.7版本)
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
server-id=123 # 自定義
binlog-do-db=test1 # 需要同步的數據庫1
binlog-do-db=test2 # 需要同步的數據庫2
binlog-do-db=test3 # 需要同步的數據庫3
binlog-do-db=test4 # 需要同步的數據庫4
binlog-ignore-db=mysql # 忽略的表
binlog-ignore-db=mysqlslap
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
expire_logs_days=3 # 自動清理3天前的log文件,可根據需要修改
max_binlog_size=100M # 參考https://www.cnblogs.com/MYSQLZOUQI/articles/3860938.html
注:mysql的bin-log文件一般在/var/lib/mysql下
重啟mysql后可以在上述路徑下看到 : mysql-bin.00001類似的文件。
如果文件誤刪,可以用FLUSH LOGS命令重新生成
(3)創建canal用戶名與密碼,并賦予權限
CREATE USER canal@'%' IDENTIFIED BY 'canal'; # %遠程登錄
GRANT ALL PRIVILEGES ON *.*TO 'canal'@'%' ; # 賦予canal所有權限
FLUSH PRIVILEGES;
show grants for 'canal' ; # 查看權限
說明 replication slave 允許讀取主服務器上的二進制文件
創建完可以試著登錄一下,并執行
ON代表成功開啟
show variables like 'binlog_format';
show variables like 'log_bin';
show variables like '%server_id%';
GRANT Replication Slave ON . TO zhl_rcenter_v2@%;
(4)解壓canal包
cd 安裝包路徑
mkdir /usr/local/canal
tar zxvf canal.deployer-1.1.4.tar.gz -C /usr/local/canal
(5)認識目錄
bin: 存放啟動,停止,重啟的sh文件
conf: 存放配置文件
lib: 一些引用包
logs:日志文件
(6)配置
備份
cp ./conf/example/ 備份路徑
對于每個實例進行配置:一個實例連接一個數據源,例如配置一個rcenter,一個dictionary
cp ./conf/example rcenter
cp ./conf/example dictionary
打開配置文件(rcenter)
vi ./conf/rcenter/instance.properties
修改部分信息
canal.instance.master.address=源數據庫ip:3306
數據庫用戶名
canal.instance.dbUsername=【用戶名】
數據庫用密碼
canal.instance.dbPassword=【密碼】
默認數據庫名稱
canal.instance.defaultDatabaseName=zhl_rcenter_v2
打開配置文件(dictionary)
vi ./conf/dictionary/instance.properties
修改部分信息
canal.instance.master.address=源數據庫ip:3306
數據庫用戶名
canal.instance.dbUsername=canal
數據庫用密碼
canal.instance.dbPassword=canal
默認數據庫名稱
canal.instance.defaultDatabaseName=zhl_dictionay
(7)啟動canal
進入./conf 中
./startup.sh
查看logs中的日志是否成功
tail -f ./canal/canal.log
tail -f ./rcenter/rcenter.log
tail -f ./dictionary/dictionary.log
如果報錯with command: show master status請看文后鏈接(一般來說都是權限不正確)
(8)編寫客戶端
見項目的application.yml
配置需要注意, 1. 每次增加實例需要配置目標數據源
2. canal.instance按格式配置
3.?JdbcTemplateUtil類中配置excute切換數據源
4.?SpringDatasourceConfig中配置數據源
(9)存在問題
如果與canal服務器斷開連接,則進程掛掉。
總結
以上是生活随笔為你收集整理的canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1gb等于多少mb?
- 下一篇: 蚬子做罐头能放多久不坏?