• MySQL 同步之otter+canal


    # otter总体架构
    
    
    
    一些术语:
    Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成
    Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成
    DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等
    DataMedia : 抽象的数据介质概念,可以理解为数据表/mq队列定义
    DataMediaSource : 抽象的数据介质源信息,补充描述DateMedia
    ColumnPair : 定义字段映射关系
    ColumnGroup : 定义字段映射组
    Node : 处理同步过程的工作节点,对应一个jvm
    
    他们之间的关系为:
     
    
    
    
    
    # 安装jdk 1.8
    步骤省略
    
    # MySQL参数优化 对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下 [mysqld] log-bin=mysql-bin # 开启 binlog binlog-format=ROW # 选择 ROW 模式 server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步 授权 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; # 安装 aria2 yum install aria2 -yum
    # zookeeper 部署 下载地址 https://zookeeper.apache.org/releases.html 禁用防火墙和SELinux systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config 解压压缩包 tar -xvf apache-zookeeper-3.5.8-bin.tar.gz 移动至/opt目录下 mv apache-zookeeper-3.5.8-bin /opt/zookeeper 修改配置文件,所有机器配置文件保持一致 cat <<EOF > /opt/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir= /data/zookeeper/data dataLogDir= /data/zookeeper/log clientPort=2182 EOF 配置文件注意事项: clientPort=2182 后面不能有空格 不然,就会出现报错: Address unresolved: server.0=10.10.10.62:2888:3888 新建数据目录 mkdir /data/zookeeper/{data,log} -p 添加到环境变量 export ZK_HOME=/opt/zookeeper export PATH=$PATH:$ZK_HOME/bin source /etc/profile 启动 zkServer.sh start 使用status查看运行情况 zkServer.sh status 测试zookeeper zkCli.sh -server 10.10.10.62:2182 # otter 安装 下载地址 https://github.com/alibaba/otter/releases 分别解压到 /usr/local/otter/node 和 /usr/local/otter/manager 目录 mkdir /usr/local/otter/{manager,node} -p tar -xvf manager.deployer-4.2.18.tar.gz -C /usr/local/otter/manager/ tar -xvf node.deployer-4.2.18.tar.gz -C /usr/local/otter/node/ 初始化otter manager系统表: 下载源码包otter-otter-4.2.18.zip SQL文件所在目录为 otter-otter-4.2.18/manager/deployer/src/main/resources/sql/ 配置修改 /usr/local/otter/manager/conf/otter.properties # 修改为所在服务器的ip,而不是默认的127.0.0.1 ## otter manager domain name otter.domainName = 10.10.10.62 ## otter manager http port otter.port = 8090 ## jetty web config xml otter.jetty = jetty.xml # 修改为正确数据库的地址,端口号,账号,密码 otter.database.driver.url = jdbc:mysql://10.10.10.62:3306/otter otter.database.driver.username = root otter.database.driver.password = hello # 修改为zk地址 ## default zookeeper address otter.zookeeper.cluster.default = 10.10.10.62:2182 启动manager /usr/local/otter/manager/bin/startup.sh 查看日志 tail -fn 100 /usr/local/otter/manager/logs/manager.log 访问地址 http://10.10.10.62:8090/ 配置zookeeper
    
    
    
    注意:ZooKeeper集群填写的时候,必须以分号结束
    
    
    # node配置
    cd  /usr/local/otter/node/conf 
    
    echo 1 > nid
    
    node配置文件   /usr/local/otter/node/conf/otter.properties  可以默认,不用做任何修改 
    
    
    启动node
    /usr/local/otter/node/bin/startup.sh 
    
    查看日志
    tail -fn 100 /usr/local/otter/node/logs/node/node.log
    
    
    配置node
     
    
    
    
    机器添加完成以后,机器管理的列表中第一列就是nid(这个就是到时候要保存到 /usr/local/otter/node/conf/nid 文件中的值),如下:
    
    
    manager/node都启动之后,就可以真正开始配置同步任务了。
    
    
    # 安装canal
    下载 canal 地址:https://github.com/alibaba/canal/releases
    
    解压缩
    mkdir /usr/local/canal    
    tar zxvf  canal.deployer-1.1.5-SNAPSHOT.tar.gz  -C /usr/local/canal
    
    
    配置修改
    
    vi /usr/local/canal/conf/example/instance.properties
    ## mysql serverId
    canal.instance.mysql.slaveId = 1234
    #position info,需要改成自己的数据库信息
    canal.instance.master.address = 127.0.0.1:3306 
    canal.instance.master.journal.name = 
    canal.instance.master.position = 
    canal.instance.master.timestamp = 
    #canal.instance.standby.address = 
    #canal.instance.standby.journal.name =
    #canal.instance.standby.position = 
    #canal.instance.standby.timestamp = 
    #username/password,需要改成自己的数据库信息
    canal.instance.dbUsername = canal  
    canal.instance.dbPassword = canal
    canal.instance.defaultDatabaseName =
    canal.instance.connectionCharset = UTF-8
    #table regex
    canal.instance.filter.regex = .*\\..*
    
    
    canal.instance.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
    如果系统是1个 cpu,需要将 canal.instance.parser.parallel 设置为 false
    
    
    启动
    sh  /usr/local/canal/bin/startup.sh
    
    
    查看 server 日志
    tail -fn 100 /usr/local/canal/logs/canal/canal.log 
    
    
    查看 instance 的日志
    tail -fn 100  /usr/local/canal/logs/example/example.log
    
    
    关闭
    sh  /usr/local/canal/bin/stop.sh


    添加canal

      

     

       配置位点信息

    点位可以通过在主库执行 show master status 和 select unix_timestamp() 得到。

      数据源配置 

     

      

      

     数据表配置

     

      

      配置channel 

      

     

       配置Pipeline

     

      

       

    
    

      配置映射关系

      

       

     点击启用,启动成功后会在运行状态显示运行 


      参考: 

      https://github.com/alibaba/otter

      https://www.cnblogs.com/zhjh256/p/9261725.html

      

     
  • 相关阅读:
    java安全编码指南之:Number操作
    java安全编码指南之:声明和初始化
    java安全编码指南之:Mutability可变性
    巧用HashMap一行代码统计单词出现次数
    java安全编码指南之:基础篇
    drf 路由生成
    drf 视图使用及源码分析
    drf Response浅析
    drf Serializer基本使用
    drf APIView源码浅析
  • 原文地址:https://www.cnblogs.com/l10n/p/14043991.html
Copyright © 2020-2023  润新知