国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步

這篇具有很好參考價(jià)值的文章主要介紹了基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

服務(wù)器說明

主機(jī)名稱 操作系統(tǒng) 說明
192.168.11.82 Ubuntu 22.04 主庫所在服務(wù)器
192.168.11.28 Oracle Linux Server 8.7 從庫所在服務(wù)器

版本說明

MySQL版本:MySQL_8.0.32
Canal版本:Canal_1.1.7
           //我的canal安裝部署在192.168.11.82上,當(dāng)然你也可以部署在其它的服務(wù)器上
Java版本:1.8.0.362

配置MySQL8.0數(shù)據(jù)庫

修改MySQL配置文件

1、Ubuntu系統(tǒng)下MySQL配置文件位置
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
2、CentOS系統(tǒng)下MySQL配置文件位置
vi /etc/my.cnf
3、添加如下配置,開啟MySQL binlog功能
# 服務(wù)編號, 與其它節(jié)點(diǎn)不沖突即可
server_id=1
log_bin=binlog
binlog_format=ROW

Canal簡介

關(guān)于canal簡介,這里就不再闡述,具體可以參看官方文檔介紹,地址如下:

https://github.com/alibaba/canal/wiki/簡介

主庫服務(wù)器操作

啟動MySQL8.0數(shù)據(jù)庫

systemctl start mysql  或者
systemctl start mysqld.service
Ubuntu 使用前者

基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步

創(chuàng)建賬號密碼

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

canal數(shù)據(jù)同步服務(wù)器操作

創(chuàng)建canal文件夾

cd /usr/local
mkdir canal
cd canal
mkdir canal-package canal-adapter canal-deployer

安裝canal deployer和canal adapter

官網(wǎng)下載地址

https://github.com/alibaba/canal/releases/tag/canal-1.1.7-alpha-2

基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步
只需要下載標(biāo)紅框的兩個(gè)文件即可。復(fù)制到canal-package文件夾下。
解壓

tar -zxvf canal.adapter-1.1.7-SNAPSHOT.tar.gz -C /usr/local/canal/canal-adapter
tar -zxvf canal.deployer-1.1.7-SNAPSHOT.tar.gz -C /usr/local/canal/canal-deployer

配置和啟動canal-deployer

配置canal-deployer

由于此次同步為MySQL數(shù)據(jù)庫間的數(shù)據(jù)同步,所以只需修改 instance.properties 即可。

cd /usr/local/canal/canal-deployer/conf/example
vi instance.properties

修改內(nèi)容如下:
基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步

# 修改說明
第一個(gè)框:主庫所在服務(wù)器IP
第二個(gè)框:主庫數(shù)據(jù)庫賬號密碼
第三個(gè)框:規(guī)則如下:
instance.properties中同步數(shù)據(jù)表默認(rèn)為同步數(shù)據(jù)庫下所有的表信息,具體配置如圖第三個(gè)框:
# 若需要同步某幾張表,可以參考如下配置:
# 同步某數(shù)據(jù)庫test1下的user表,test2數(shù)據(jù)庫下的所有表,所有庫下所有表數(shù)據(jù)
canal.instance.filter.regex=test1.user,test2\\..*,.*\\..*

啟動canal-deployer

cd /usr/local/canal/canal-deployer/bin
./startup.sh

查看日志確定是否啟動成功

cd /usr/local/canal/canal-deployer/logs/example
cat example.log

我遇到的幾個(gè)錯(cuò)誤情況,僅供參考:
canal-deployer啟動之后,如果在 logs 文件夾下沒有 example 文件,參考如下情況說明:
1、查看 /usr/local/canal/canal-deployer/bin 文件夾下,是否存在.pid的文件。
2、查看logs文件夾下的canal文件夾下的canal_stdout.log文件,命令如下:

cat /usr/local/canal/canal-deployer/logs/canal/canal_stdout.log

若出現(xiàn)如下信息:
基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步
解決方案:(在此強(qiáng)烈建議系統(tǒng)中只安裝jdk8或者jdk11,切不可采用jenv管理jdk,安裝多個(gè)版本)

cd /usr/local/canal/canal-deployer/bin
./stop.sh
vi startup.sh
# 刪除報(bào)錯(cuò)信息包含的參數(shù)(該錯(cuò)誤信息可能會出現(xiàn)多次,出現(xiàn)哪個(gè)刪除哪個(gè)即可)
./startup.sh

重新啟動:

cd /usr/local/canal/canal-deployer/bin
./startup.sh

直到出現(xiàn)以下信息:

# 打開日志文件
cat /usr/local/canal/canal-deployer/logs/example/example.log
# 出現(xiàn)以下信息說明canal-deployer啟動成功
 [destination = example , address = /192.168.11.82:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=binlog.000040,position=65224673,serverId=1,gtid=,timestamp=1682062760000] cost : 1331ms , the next step is binlog dump

配置canal-adapter

修改配置文件

cd /usr/local/canal/canal-adapter/conf
vi 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: -1
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    # 修改位置1:Canal-deployer所在主機(jī)IP
    canal.tcp.server.host: 127.0.0.1:11111
    canal.tcp.zookeeper.hosts:
    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.11.82:3306/mynet?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
      username: ymliu
      password: ymliu2023

  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: logger
      - name: rdb
        key: mysql1
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://192.168.11.28:3306/mynet?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
          jdbc.username: ymliu
          jdbc.password: ymliu2023
          druid.stat.enable: false
          druid.stat.slowSqlMillis: 1000
#      - name: rdb
#        key: oracle1
#        properties:
#          jdbc.driverClassName: oracle.jdbc.OracleDriver
#          jdbc.url: jdbc:oracle:thin:@localhost:49161:XE
#          jdbc.username: mytest
#          jdbc.password: m121212
#      - name: rdb
#        key: postgres1
#        properties:
#          jdbc.driverClassName: org.postgresql.Driver
#          jdbc.url: jdbc:postgresql://localhost:5432/postgres
#          jdbc.username: postgres
#          jdbc.password: 121212
#          threads: 1
#          commitSize: 3000
#      - name: hbase
#        properties:
#          hbase.zookeeper.quorum: 127.0.0.1
#          hbase.zookeeper.property.clientPort: 2181
#          zookeeper.znode.parent: /hbase
#      - name: es
#        hosts: 127.0.0.1:9300 # 127.0.0.1:9200 for rest mode
#        properties:
#          mode: transport # or rest
#          # security.auth: test:123456 #  only used for rest mode
#          cluster.name: elasticsearch
#      - name: kudu
#        key: kudu
#        properties:
#          kudu.master.address: 127.0.0.1 # ',' split multi address
#      - name: phoenix
#        key: phoenix
#        properties:
#          jdbc.driverClassName: org.apache.phoenix.jdbc.PhoenixDriver
#          jdbc.url: jdbc:phoenix:127.0.0.1:2181:/hbase/db
#          jdbc.username:
#          jdbc.password:

修改canal-adapter/conf/rdb文件夾下的yml文件

cd /usr/local/canal/canal-adapter/conf/rdb
vi mytest_user.yml
同步數(shù)據(jù)庫下的某張表,例如同步mytest數(shù)據(jù)庫下的user表,操作如下:
dataSourceKey: defaultDS        # 源數(shù)據(jù)源的key, 對應(yīng)上面配置的srcDataSources中的值
destination: example            # cannal的instance或者M(jìn)Q的topic
groupId: g1                     # 對應(yīng)MQ模式下的groupId, 只會同步對應(yīng)groupId的數(shù)據(jù)
outerAdapterKey: mysql1         # adapter key, 對應(yīng)上面配置outAdapters中的key
concurrent: true                # 是否按主鍵hash并行同步, 并行同步的表必須保證主鍵不會更改及主鍵不能為其他同步表的外鍵!
dbMapping:
  database: test                # 源數(shù)據(jù)源的database/schema
  table: user                   # 源數(shù)據(jù)源表名
  targetTable: test.user        # 目標(biāo)數(shù)據(jù)源的庫名.表名
  targetPk:                     # 主鍵映射
    id: id                      # 如果是復(fù)合主鍵可以換行映射多個(gè)
  mapAll: true                  # 是否整表映射, 要求源表和目標(biāo)表字段名一模一樣 (如果targetColumns也配置了映射, 則以targetColumns配置為準(zhǔn))
  #targetColumns:               # 字段映射, 格式: 目標(biāo)表字段: 源表字段, 如果字段名一樣源表字段名可不填
  #  id:
  #  name:
  #  role_id:
  #  c_time:
  #  test1: 
同步數(shù)據(jù)庫下所有表數(shù)據(jù),例如:同步mytest數(shù)據(jù)庫下所有表數(shù)據(jù),操作如下:
dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:
  mirrorDb: true
  database: test          # 該數(shù)據(jù)庫名稱修改為你的數(shù)據(jù)庫名稱

啟動canal-adapter

cd /usr/local/canal/canal-adapter/bin
./startup.sh

出現(xiàn)錯(cuò)誤,排查方式同canal-deployer
查看日志信息

cd /usr/local/canal/canal-adapter/logs/adapter
cat adapter.log

補(bǔ)充說明:

1、只有canal-adapter成功啟動并正確連接canal-deployer后,canal-deployer才會讀取binlog信息。/usr/local/canal/canal-deployer/conf/example 文件夾下才會出現(xiàn)meta.dat文件。
2、canal-adapter啟動以后會出現(xiàn)127.0.0.1:3306/canal_manage連接失敗信息,該信息是因?yàn)槲覀儧]有安裝啟動前端頁面所致,可以忽略,不影響數(shù)據(jù)同步。
3、以上所有內(nèi)容均為自己實(shí)操結(jié)果。文章來源地址http://www.zghlxwxcb.cn/news/detail-422650.html

到了這里,關(guān)于基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫數(shù)據(jù)同步的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mysql數(shù)據(jù)庫--實(shí)現(xiàn)主從復(fù)制搭建與同步

    Mysql數(shù)據(jù)庫--實(shí)現(xiàn)主從復(fù)制搭建與同步

    一般數(shù)據(jù)庫都是讀取壓力大于寫數(shù)據(jù)壓力,主從復(fù)制即為了實(shí)現(xiàn)數(shù)據(jù)庫的負(fù)載均衡和讀寫分離。通過將Mysql的某一臺主機(jī)的數(shù)據(jù)復(fù)制到其它主機(jī)(slaves)上,主服務(wù)器只負(fù)責(zé)寫,而從服務(wù)器只負(fù)責(zé)讀。 如生產(chǎn)環(huán)境中,使用redis數(shù)據(jù)庫作為緩存數(shù)據(jù)庫,用戶訪問業(yè)務(wù)數(shù)據(jù)時(shí),先

    2024年02月08日
    瀏覽(95)
  • 實(shí)現(xiàn)?Mysql數(shù)據(jù)庫主從復(fù)制搭建與同步

    實(shí)現(xiàn)?Mysql數(shù)據(jù)庫主從復(fù)制搭建與同步

    一般數(shù)據(jù)庫都是讀取壓力大于寫數(shù)據(jù)壓力,主從復(fù)制即為了實(shí)現(xiàn)數(shù)據(jù)庫的負(fù)載均衡和讀寫分離。通過將Mysql的某一臺主機(jī)的數(shù)據(jù)復(fù)制到其它主機(jī)(slaves)上,主服務(wù)器只負(fù)責(zé)寫,而從服務(wù)器只負(fù)責(zé)讀。 如生產(chǎn)環(huán)境中,使用redis數(shù)據(jù)庫作為緩存數(shù)據(jù)庫,用戶訪問業(yè)務(wù)數(shù)據(jù)時(shí),先

    2024年02月10日
    瀏覽(93)
  • Canal+Kafka實(shí)現(xiàn)Mysql數(shù)據(jù)同步

    Canal+Kafka實(shí)現(xiàn)Mysql數(shù)據(jù)同步

    canal [k?\\\'n?l] ,譯意為水道/管道/溝渠,主要用途是基于 MySQL 數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi) canal可以用來監(jiān)控?cái)?shù)據(jù)庫數(shù)據(jù)的變化,從而獲得新增數(shù)據(jù),或者修改的數(shù)據(jù)。 canal是應(yīng)阿里巴巴存在杭州和美國的雙機(jī)房部署,存在跨機(jī)房同步的業(yè)務(wù)需求而提出的。

    2024年02月12日
    瀏覽(88)
  • canal實(shí)現(xiàn)mysql數(shù)據(jù)實(shí)時(shí)同步到es

    最近有一個(gè)需求:原有一些mysql數(shù)據(jù),這些數(shù)據(jù)量很大,且包含文本信息,需要對其進(jìn)行搜索,這時(shí)如果使用mysql的like來匹配,效率會很低,且很可能影響整個(gè)系統(tǒng)的運(yùn)行,經(jīng)過和同事的討論,最終決定使用es來做搜索。 但是源數(shù)據(jù)有很多關(guān)聯(lián)關(guān)系,搜索的時(shí)候也會帶上這些

    2024年02月16日
    瀏覽(86)
  • 基于Canal+kafka監(jiān)聽數(shù)據(jù)庫變化的最佳實(shí)踐

    基于Canal+kafka監(jiān)聽數(shù)據(jù)庫變化的最佳實(shí)踐

    1、前言 ??????? 工作中,我們很多時(shí)候需要根據(jù)某些狀態(tài)的變化更新另一個(gè)業(yè)務(wù)的邏輯,比如訂單的生成,成交等,需要更新或者通知其他的業(yè)務(wù)。我們通常的操作通過業(yè)務(wù)埋點(diǎn)、接口的調(diào)用或者中間件完成。 ????????但是狀態(tài)變化的入口比較多的時(shí)候,就很容易漏掉

    2023年04月08日
    瀏覽(37)
  • 使用canal+rocketmq實(shí)現(xiàn)將mysql數(shù)據(jù)同步到es

    使用canal+rocketmq實(shí)現(xiàn)將mysql數(shù)據(jù)同步到es

    實(shí)際開發(fā)過程中,經(jīng)常遇到數(shù)據(jù)庫與緩存不一致的問題,造成這種問題的原因有很多,其中緩存數(shù)據(jù)沒有及時(shí)更新、緩存中過期的數(shù)據(jù)沒有及時(shí)更新,導(dǎo)致緩存中存在失效數(shù)據(jù),導(dǎo)致數(shù)據(jù)庫與緩存不一致。而這種問題的出現(xiàn)大部分都是因?yàn)橥窖舆t、緩存失效、過期和錯(cuò)誤使

    2024年02月11日
    瀏覽(72)
  • 企業(yè)級開發(fā)項(xiàng)目實(shí)戰(zhàn)——基于RabbitMQ實(shí)現(xiàn)數(shù)據(jù)庫、elasticsearch的數(shù)據(jù)同步

    企業(yè)級開發(fā)項(xiàng)目實(shí)戰(zhàn)——基于RabbitMQ實(shí)現(xiàn)數(shù)據(jù)庫、elasticsearch的數(shù)據(jù)同步

    1、商品上架時(shí):search-service新增商品到elasticsearch 2、商品下架時(shí):search-service刪除elasticsearch中的商品 數(shù)據(jù)同步是希望,當(dāng)我們商品修改了數(shù)據(jù)庫中的商品信息,索引庫中的信息也會跟著改。在微服務(wù)中數(shù)據(jù)庫和索引庫是在兩個(gè)不同的服務(wù)中。如果,商品的服務(wù),向es的服務(wù)中

    2024年02月12日
    瀏覽(86)
  • 基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一)

    基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一)

    vi conf/application.yml server: port: 8089 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 spring.datasource: address: kms-1:3306 database: canal_manager username: canal password: canal driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql:// s p r i n g . d a t a s o u r c e . a d d r e s s / {spring.datasource.address}/ s p r in g . d

    2024年04月13日
    瀏覽(98)
  • 本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地搭建canal實(shí)現(xiàn)mysql數(shù)據(jù)到es的簡單的數(shù)據(jù)同步,僅供學(xué)習(xí)參考 建議首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 本地搭建MySQL數(shù)據(jù)庫 本地搭建ElasticSearch 本地搭建canal-server 本地搭建canal-adapter 本地環(huán)境為window11,大部分組件采用docker進(jìn)行部署,MySQL采用8.0.27, 推薦

    2024年02月02日
    瀏覽(96)
  • 開源數(shù)據(jù)庫MySQL 8.0 OCP認(rèn)證精講視頻、環(huán)境和題庫 之二

    修改用戶的初始密碼: mysqlalteruserroot@localhostidentifiedby\\\'Qaz1234; 或者: mysqlalteruseruser0identifiedby\\\'Qaz_1234\\\'; 在版本5.x中: mysqlsetpassword=password(Qaz_1234\\\'); 可執(zhí)行文件: 服務(wù)器端:mysgld多線程 客戶端:mysqlmysqladminmysqldumpmysqlbackup mysqlshowdatabases; mysqlselectdatabaseO; mysqlselectuser0; mysqlcrea

    2024年02月08日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包