• canal server 标准化集群搭建(一)


    1.背景

    随这业务增加,数据同步服务 canal server 需求与日俱增,以往私搭乱建的 canal server 不符合运维标准化。

    2.目的

    规范 canal server 的部署,形成固定操作流程及文档

    3. 环境版本

    canal server  canal.deployer-1.1.4.tar.gz

    canal admincanal.admin-1.1.4.tar.gz

    zookeeperzookeeper-3.4.14.tar.gz

    zkuiGitHub - DeemOpen/zkui: A UI dashboard that allows CRUD operations on Zookeeper.

    4. 搭建步骤

    3.1. 安装zookeeper

    # 下载

    wget http://mirror.olnevhost.net/pub/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

    tar zxvf zookeeper-3.4.11.tar.gz 

    mv zookeeper-3.4.11 /data/zookeeper

    # 修改环境变量

    export ZOOKEEPER_HOME=/data/zookeeper

    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    # 重命名配置文件

    mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

    # 编辑配置文件

    tickTime=2000

    initLimit=10

    syncLimit=5

    dataDir=/data/zookeeper/data

    dataLogDir=/data/zookeeper/logs

    clientPort=2181

    server.1=10.90.48.28:2888:3888

    server.2=10.90.48.29:2888:3888

    server.3=10.90.48.30:2888:3888

    # 添加 zk server id

        #master

    echo "1">/data/zookeeper/data/myid

        #slave1

    echo "2">/data/zookeeper/data/myid

        #slave2

    echo "3">/data/zookeeper/data/myid

    # 启动 zookeeper

    cd /data/zookeeper/bin

    ./zkServer.sh  start

    ZooKeeper JMX enabled by default

    Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg

    Starting zookeeper ... STARTED

    # 验证 zookeeper 状态

    zkServer.sh  status

    ZooKeeper JMX enabled by default

    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

    Mode: follower

    # 访问 zookeeper

    zkCli.sh -server

    # 停止 ZooKeeper 服务

    ./zkServer.sh  stop

    ZooKeeper JMX enabled by default

    Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg

    Stopping zookeeper ... STOPPE

    3.2. 安装 zkui

    # 拉取代码

    git clone https://github.com/DeemOpen/zkui.git

    # 源码编译需要安装 maven

    bash <(curl -s -S -L https://git.xiaojukeji.com/elevate/environment/raw/master/setup-scripts/maven_setup.sh)

    cd zkui/

    yum install -y maven

    mvn clean install

    # 修改配置文件默认值

    vim config.cfg

    serverPort=8090     #指定端口(端口只开放了8000~8100)

    zkServer=192.168.1.110:2181

    sessionTimeout=300000

    # 创建 target 目录(解压后有个 target 文件,执行 mvn 安装时报错找不到 target 目录,怀疑是 bug)

    rm target

    # 配置我滴 maven 源

    bash <(curl -s -S -L https://git.xiaojukeji.com/elevate/environment/raw/master/setup-scripts/maven_setup.sh)

    LDAP username:xxx   # 输入 LDAP 账号

    password:       # 输入密码

    # 安装 maven 包(自动安装到 target 目录下,zkui-2.0-SNAPSHOT-jar-with-dependencies.jar 会被安装)

    mvn clean install

    # 启动程序至后台,2.0-SNAPSHOT 会随软件的更新版本不同而不同,执行时请查看target 目录中真正生成的版本

    nohup java -jar target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &

    # 用浏览器访问

    http://192.168.1.110:8090/

    3.3. 安装 canal server

    # 上传下载包

    rsync -avr --port=8028 rsync@10.89.182.40::home/canal.deployer-1.1.4.tar.gz .

    # 创建目录

    mkdir -p /data/canal/canal_test_dhr_entry

    # 解压

    tar zxvf canal.deployer-1.1.4.tar.gz -C /data/canal/canal_test_dhr_entry

    # 重命名 instance 名称

    mv /data/canal/canal_test_dhr_entry/conf/example /data/canal/canal_test_dhr_entry/conf/c_test_dhr_entry

    # 修改 canal.properties ——主进程配置文件

    vim /data/canal/canal_test_dhr_entry/conf/canal.properties

    # 第8、9行修改端口

    canal.port = 21121

    canal.metrics.pull.port = 21122

    # 第11、12行取消注释

    canal.user = canal

    canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458

    # 第15行取消注释,修改 admin server 地址

    canal.admin.manager = :8089

    # 第16行修改端口

    canal.admin.port = 21120

    # 第20行添加 zk server

    canal.zkServers =

    # 第60行修改为 true

    canal.instance.filter.table.error = true

    # 第79行修改为 false

    canal.instance.tsdb.enable = false

    # 第92行添加 instance name

    canal.destinations = c_test_saber_warehouse

    # 第106行注释

    #canal.instance.global.spring.xml = classpath:spring/file-instance.xml

    # 第107行取消注释

    canal.instance.global.spring.xml = classpath:spring/default-instance.xml

    # 保存

    # 修改 instance 配置文件——非必须,可以不修改,因为配置 canal admin 后,该信息是从 admin 获取的

    vim /data/canal/canal_test_dhr_entry/conf/c_test_dhr_entry/instance.properties

    # 第9行修改源数据库地址:端口

    canal.instance.master.address=10.179.250.150:3306

    # 第33行修改为源数据库抽数用户,权限为 replication client、replication slave、指定库的 select 权限

    canal.instance.dbUsername=u_test_dhr_org_srv

    # 第34行修改为源数据库抽数用户的密码

    canal.instance.dbPassword=xxxxxxxxx

    # 第41行修改为要抽取的数据库(白名单)

    canal.instance.filter.regex=dhr-organization-service\\..*

    # 第50行修改为instance name,要与上级目录名、canal.properties 中的 intance name 一致

    canal.mq.topic=c_test_dhr_org_srv

    # 保存

    3.4. 安装 canal admin

    # 下载

    wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz

    # 解压缩

    mkdir /tmp/canal-admin

    tar zxvf canal.admin-$version.tar.gz  -C /tmp/canal-admin

    # 修改配置

    vi conf/application.yml

    # 修改如下内容

    server:

      port: 8089

    spring:

      jackson:

        date-format: yyyy-MM-dd HH:mm:ss

        time-zone: GMT+8

    spring.datasource:

      address: 127.0.0.1:3306   # canal manager 库的地址

      database: canal_manager   # 数据库名

      username: canal           # canal manager 数据库访问用户

      password: canal           # canal manager 数据库访问用户密码

      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          # canal admin 页面登陆用户,管理员权限

      adminPasswd: admin        # canal admin 登陆用户密码

    # 初始化元数据库

    mysql -h127.1 -uroot -p

    # 导入初始化SQL

    > source conf/canal_manager.sql

    # 启动 canal admin

    sh bin/startup.sh

    # 访问 canal admin,默认密码:admin/123456

    http://127.0.0.1:8089

    4. canal admin 的使用

    4.1. 新建集群

    集群名称:zk + 环境标签(prod/stage/test/dev + 目标库缩写(compatible_hrdata+ @ + RD名字

    zk 地址:zk 集群的 host:port ,多个主机用 "," 分隔

  • 相关阅读:
    Vue3 - Pinia 状态管理(环境搭建安装及各属性使用教程)详细使用教程
    【1++的Linux】之进程间通信(共享内存)
    《网络安全笔记》第三章:NTFS权限
    php练习05
    一文带你吃透阻塞队列
    Softing TCS:高效的诊断模拟解决方案
    面试--redis基础
    Shell(3)管道与重定向
    一篇博客学会系列(3) —— 对动态内存管理的深度讲解以及经典笔试题的深度解析
    【C++内存管理侯捷】---学习笔记(上)primitives(new,delete...),std::allocator
  • 原文地址:https://blog.csdn.net/2301_76957510/article/details/130903732