1. 程式人生 > 實用技巧 >Canal監聽mysql

Canal監聽mysql

安裝mysql5.7,並開啟binlog

安裝mysql

開啟binlog

  • find / -name my.cnf 找到這個檔案
  • 新增幾行
[mysqld]
log-bin=mysql-bin # 開啟 binlog
binlog-format=ROW # 選擇 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定義,不要和 canal 的 slaveId 重複
  • 授權 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;
  • 重啟服務
  • 輸入命令檢視,如下圖表示成功

docker安裝canal-admin

Canal的github wiki地址
這是一個管理頁面,用來管理canal叢集,新增例項,服務,更改配置等

docker pull canal/canal-admin:v1.1.4

docker run -d --name canal-admin -p 8089:8089 --restart=always canal/canal-admin:v1.1.4

  • 修改配置

  • 安裝完成後即可在瀏覽器檢視 http://127.0.0.1:8089,預設賬戶名admin 密碼123456

canal叢集用一張圖表達

docker安裝canal-server

如果是canal叢集,則需要安裝zookeeper,這裡只是單機版

docker pull canal/canal-server:v1.1.4

docker run -d --name canal-server --restart=always -p 11111:11111 canal/canal-server:v1.1.4

  • 修改canal-server的配置

  • 密文獲取方式(記得去掉*)

mysql> select password('admin');
+-------------------------------------------+
| password('admin')                          |
+-------------------------------------------+
| *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
  • 使用自帶的example測試功能
vi canal-server/conf/example/instance.properties
修改以下內容
# position info
canal.instance.master.address=mysql5.7:3306  # 這裡是你要監聽的資料庫

# username/password   #你要監聽的資料庫中的賬號和密碼,如果沒有,自己去建立使用者
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal

# table regex
canal.instance.filter.regex=.*\\..*  # 正則表示式,表示監聽的哪個庫,哪個表,這裡是所有

# mq config
canal.mq.topic=example  # 這裡取個名字,預設是example

去canal-admin頁面配置

  • server管理-->新建server-->確定

注意:

經測試,V1.1.4版本admin不可以通過web-UI頁面配置建立instance,必須去canal-server裡把example資料夾cp一份,並修改裡面的配置