1.背景
随这业务增加,数据同步服务 canal server 需求与日俱增,以往私搭乱建的 canal server 不符合运维标准化。
2.目的
规范 canal server 的部署,形成固定操作流程及文档
3. 环境版本
canal server: canal.deployer-1.1.4.tar.gz
canal admin:canal.admin-1.1.4.tar.gz
zookeeper:zookeeper-3.4.14.tar.gz
zkui:GitHub - 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 ,多个主机用 "," 分隔