日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据

發布時間:2024/10/8 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:

有兩個獨立的項目A和B,都使用mysql做數據庫,

其中項目A中有一個表存儲新聞資訊,字段有新聞id,標題title,類型type,內容data。

后來項目B也需要這個表的數據,但項目B用了兩個表:一個表存新聞id,標題title,類型type,另一個表存儲新聞id和新聞內容data。

這時如果要把項目A中實時變化的數據同步項目B中,顯然傳統的同步方式就不滿足了

實現思路

利用canal獲取變化數據

利用canal_mysql_nosql_sync存入redis隊列

(https://github.com/liukelin/canal_mysql_nosql_sync)

起一個守護腳本一直讀取該redis,將產生的數據寫入到新庫

實施步驟

一.在項目A中配置canal

1.確定服務器上有java環境,如果沒有需安裝下java

# java -version

java version "1.8.0_121"

2.獲取canal包

訪問https://github.com/alibaba/canal/releases,下載相應的版本

本次以1.0.24為例

wget https://github.com/alibaba/canal/releases/download/canal-1.0.24/canal.deployer-1.0.24.tar.gz

# ls

bin conf lib logs

編輯instance.properties文件

vim ./conf/example/instance.properties

配置好數據庫的相關信息

canal.instance.master.address = 127.0.0.1:3306

# username/password

canal.instance.dbUsername = root

canal.instance.dbPassword = root123456

canal.instance.defaultDatabaseName = news

canal.instance.connectionCharset = UTF-8

配置下正則表達式

# table regex

canal.instance.filter.regex = .*

# table black regex

canal.instance.filter.black.regex = platform_news\\..*

這里注意兩點:

1)數據庫的用戶需要有slave權限;

2)正則表達式中,如果只配置白名單,在通過redis讀取時,發現沒生效,需同時配置黑名單才生效

配置完成后,啟動服務

sh bin/startup.sh

啟動完成后,會看到有個端口號為11111的進程

二.在項目B中部署canal_mysql_nosql_sync

1.獲取canal_mysql_nosql_sync

git clone https://github.com/liukelin/canal_mysql_nosql_sync

2配置

cd canal_mysql_nosql_sync/canal-client/conf

vim canal.properties

配置好對應參數即可

3啟動

sh ./canal_mysql_nosql_sync/canal-client/start_canal_client.sh

正常啟動后,去項目A的表中改個數據,可立即看到變化

三.在項目B中通過腳本獲取redis數據,并寫入到項目B的數據庫中

腳本就不多贅述了,任意一個語言都可以(只要能操作redis和mysql即可XD):

1.連接redis,獲取redis中變化的數據,redis的數據結構如下

eventType :操作類型(UPDATE/INSERT/DELETE) db: 涉及庫 table: 涉及表 before:變更前數據 after: 變更后數據 time: 操作時間

2.提取出變化的數據,根據eventType,將數據修改到項目B的數據庫中

總結

以上是生活随笔為你收集整理的mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。