centos7搭建canal集群版同步mysql數(shù)據(jù)

image.png

Canal 最初只支持將數(shù)據(jù)從 MySQL 同步到 Kafka简肴,RabbitMQ 等消息隊列中,從 1.1.1 版本開始百侧,Canal 實現(xiàn)了一個配套落地的模塊 Canal Adapter砰识,實現(xiàn)對 Canal Server 訂閱的 binlog 消息進(jìn)行消費,支持將數(shù)據(jù)輸出至 HBase佣渴,MySQL辫狼,Elasticsearch等。

機器規(guī)劃

IP地址 服務(wù)
192.168.1.151:3306 canal元數(shù)據(jù)庫
192.168.1.154:3306 源數(shù)據(jù)庫
192.168.1.151:3306 目標(biāo)數(shù)據(jù)庫
192.168.1.156 canal辛润、canal server膨处、canal adapter、zookeeper
192.168.1.155 canal、canal server真椿、canal adapter秦叛、canal admin

準(zhǔn)備工作

1、源庫需要binlog以及binlog模式為ROW

image.png

2瀑粥、部署zookeeper集群(192.168.1.156)

這里因機器限制挣跋,暫時部署zookeeper單節(jié)點,版本這里采用zookeeper-3.4.10狞换。

tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
mv /opt/zookeeper-3.4.10 /opt/zookeeper
mkdir /opt/zookeeper/{data,logs}
cd /opt/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg

編輯zoo.cfg內(nèi)容

image.png
  • tickTime:ZooKeeper使用的基本時間單位(毫秒)避咆。 它用于做心跳,并且最小會話(session)超時將是tickTime的兩倍修噪。

  • initLimit:用于限制ZooKeeper服務(wù)器必須連接到Leader服務(wù)器的時間長度查库,有必要可以設(shè)置在一點點的時間長度。

  • syncLimit:服務(wù)器與領(lǐng)導(dǎo)者之間過時的距離黄琼》可以通過心跳檢測機制,來檢測機器的存活狀態(tài)脏款。如果Leader發(fā)出心跳包围苫。在syncLimit之后,還沒有從Folloer那里收到響應(yīng)撤师,那么就認(rèn)為這個F已經(jīng)不在線了.所以這個參數(shù)不移設(shè)置過大剂府。

  • dataDir:配置存儲內(nèi)存數(shù)據(jù)庫快照的位置以及數(shù)據(jù)庫更新的事務(wù)日志。

  • clientPort:偵聽客戶端連接的端口

創(chuàng)建myid剃盾,注明上面zoo.cfg中的server.x中的x

echo "1" > ../data/myid

配置環(huán)境變量

vim /etc/profile
#添加以下代碼
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
#執(zhí)行初始化環(huán)境變量系統(tǒng)變量文件
source /etc/profile

啟動zookeeper

/opt/zookeeper/bin/zkServer.sh start

部署canal Admin(192.168.1.155)

mkdir /opt/canal/{admin,server,adapter}
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
tar -xzvf canal.admin-1.1.5.tar.gz -C /opt/canal/admin

初始化 Canal Admin 元數(shù)據(jù)庫

將解壓后的壓縮包conf里面的canal_manager.sql挪到元數(shù)據(jù)庫那臺機器后腺占,進(jìn)行導(dǎo)入。

Canal Admin 配置文件

修改配置文件:vim /opt/canal/admin/conf/application.yml

server:
  port: 8089
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

spring.datasource:
  address: 192.168.1.151:3306  #元數(shù)據(jù)庫信息
  database: canal_manager    #庫名
  username: root  #用戶
  password: 123456  #密碼
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
  hikari:
    maximum-pool-size: 30
    minimum-idle: 1

canal:
  adminUser: admin
  adminPasswd: admin

啟動 Canal Admin

/opt/canal/admin/bin/startup.sh

瀏覽器輸入192.168.1.155:8089,訪問管理界面痒谴,默認(rèn)賬號:admin衰伯,密碼 :123456


image.png

部署canal server(192.168.1.155、192.168.1.156)

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
tar -zxvf canal.deployer-1.1.5.tar.gz -C /opt/canal/server

因為是使用canal Admin集群部署的积蔚,所以server節(jié)點只需要配置Admin的信息即可意鲸;統(tǒng)一的配置文件是由Admin界面管理,編輯 /opt/canal/server/conf/canal_local.properties 文件
server 1的配置文件

# register ip
canal.register.ip = 192.168.1.155
# canal admin config
canal.admin.manager = 192.168.1.155:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster = canal-cluster-1
canal.admin.register.name = canal-server-1

server 2的配置文件

# register ip
canal.register.ip = 192.168.1.156
# canal admin config
canal.admin.manager = 192.168.1.155:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster = canal-cluster-1
canal.admin.register.name = canal-server-2

Canal Admin 創(chuàng)建集群

進(jìn)入admin管理界面库倘,新建集群临扮,配置zookeeper信息


image.png

點擊主配置


image.png

點擊載入模板论矾、暫時不用修改配置文件教翩,點擊保存即可
image.png

啟動server

/opt/canal/server/bin/startup.sh local

在 Admin 上查看注冊的 Canal Server。


image.png

設(shè)置mysql同步mysql配置贪壳。

server 默認(rèn)情況下把源庫對表結(jié)構(gòu)修改的記錄存儲在本地 H2 數(shù)據(jù)庫中饱亿,當(dāng) server 主備切換后會導(dǎo)致新的 server 無法正常同步數(shù)據(jù),因此修改 TSDB 的設(shè)置將外部 MySQL 數(shù)據(jù)庫作為 server 存儲表結(jié)構(gòu)變更信息的庫。在admin界面選擇相對應(yīng)的集群彪笼,修改配置文件钻注。

修改地方如下:


image.png

image.png

image.png

點擊保存。

在元數(shù)據(jù)庫上創(chuàng)建canal_tsdb庫配猫。

創(chuàng)建 Instance

在 Instance 管理界面幅恋,點擊新建 Instance


image.png

點擊載入模板后,修改以下信息


image.png

點擊保存泵肄,查看Instance 日志捆交,能正常讀取到binlog以及偏移量為正常。
image.png

部署canal adapter(192.168.1.155腐巢、192.168.1.156)

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.adapter-1.1.5.tar.gz
tar -zxvf canal.adapter-1.1.5.tar.gz -C /opt/canal/adapter

server 只支持將數(shù)據(jù)輸出到消息隊列中品追,因此需要額外部署 Adapter 訂閱 server 中的消息,然后寫入目標(biāo) MySQL冯丙。編輯/opt/canal/adapter/conf/application.yml

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp #tcp kafka rocketMQ rabbitMQ
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    #canal.tcp.server.host: 127.0.0.1:11111
    canal.tcp.server.host:
    canal.tcp.zookeeper.hosts: 192.168.1.156:2181  #zookeeper地址
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:
    # kafka consumer
    kafka.bootstrap.servers: 127.0.0.1:9092
    kafka.enable.auto.commit: false
    kafka.auto.commit.interval.ms: 1000
    kafka.auto.offset.reset: latest
    kafka.request.timeout.ms: 40000
    kafka.session.timeout.ms: 30000
    kafka.isolation.level: read_committed
    kafka.max.poll.records: 1000
    # rocketMQ consumer
    rocketmq.namespace:
    rocketmq.namesrv.addr: 127.0.0.1:9876
    rocketmq.batch.size: 1000
    rocketmq.enable.message.trace: false
    rocketmq.customized.trace.topic:
    rocketmq.access.channel:
    rocketmq.subscribe.filter:
    # rabbitMQ consumer
    rabbitmq.host:
    rabbitmq.virtual.host:
    rabbitmq.username:
    rabbitmq.password:
    rabbitmq.resource.ownerId:

#源庫信息
  srcDataSources:
    defaultDS:
      url: jdbc:mysql://192.168.1.154:3306/data?useUnicode=true
      username: root
      password: 123456

#目標(biāo)庫信息
  canalAdapters:
  - instance: data_test01 # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: rdb
        key: mysql1
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://192.168.1.151:3306/data?useUnicode=true
          jdbc.username: root
          jdbc.password: 123456

配置rdb目錄里面的文件

mv /opt/canal/adapter/conf/rdb/my_user.yml /opt/canal/adapter/conf/rdb/date_test01.yml
#配置文件如下
dataSourceKey: defaultDS
destination: data_test01
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:
  database: data
  table: test01
  targetTable: test01
  targetPk:
    id: id
  mapAll: true
  mirrorDb: true

啟動 Adapter

/opt/canal/adapter/bin/startup.sh
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肉瓦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胃惜,更是在濱河造成了極大的恐慌泞莉,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件船殉,死亡現(xiàn)場離奇詭異戒财,居然都是意外死亡,警方通過查閱死者的電腦和手機捺弦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門饮寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人列吼,你說我怎么就攤上這事幽崩。” “怎么了寞钥?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵慌申,是天一觀的道長。 經(jīng)常有香客問我理郑,道長蹄溉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任您炉,我火速辦了婚禮柒爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赚爵。我一直安慰自己棉胀,他們只是感情好法瑟,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唁奢,像睡著了一般霎挟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麻掸,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天酥夭,我揣著相機與錄音,去河邊找鬼脊奋。 笑死采郎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狂魔。 我是一名探鬼主播蒜埋,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼最楷!你這毒婦竟也來了整份?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤籽孙,失蹤者是張志新(化名)和其女友劉穎烈评,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犯建,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡讲冠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了适瓦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿开。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玻熙,靈堂內(nèi)的尸體忽然破棺而出否彩,到底是詐尸還是另有隱情,我是刑警寧澤嗦随,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布列荔,位于F島的核電站,受9級特大地震影響枚尼,放射性物質(zhì)發(fā)生泄漏贴浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一署恍、第九天 我趴在偏房一處隱蔽的房頂上張望崎溃。 院中可真熱鬧,春花似錦锭汛、人聲如沸笨奠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽般婆。三九已至,卻和暖如春朵逝,著一層夾襖步出監(jiān)牢的瞬間蔚袍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工配名, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留啤咽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓渠脉,卻偏偏與公主長得像宇整,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芋膘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容