目录
1、创建配置文件
2、运行镜像
3、管理地址
4、创建同步测试
1.创建测试数据库
2.创建数据源
3.创建数据表
4.Canal配置
注意:内存存储batch获取模式,设置数值太高会导致otter manager程序卡死,web无响应
5.创建同步
6.数据表同步测试
已知出错问题解决:
创建一个otter_Manager目录用来保存配置文件
新建docker-compose.yml文件
内容:
version: "3"
services:
otter_manager:
image: lsqtzj/otter_manager
restart: always
container_name: otter_manager
hostname: otter_manager
networks:
otter:
ipv4_address: 10.21.0.10
ports:
- 8080:8080
- 8018:8018 #zookeeper ui
- 33061:3306
volumes:
- "./otter_manager/mysql/:/var/lib/mysql/"
- "./otter_manager/zkData/:/home/admin/zkData/"
environment:
TZ: Europe/Rome #Asia/Shanghai 时区
ZOO_CLUSTER: otter_manager:2181,node01:2181,node02:2181
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=otter_manager:2888:3888 server.2=node01:2888:3888 server.3=node02:2888:3888
extra_hosts:
- "otter_manager:10.21.0.10"
- "node01:10.21.0.11"
- "node02:10.21.0.12"
node01:
image: lsqtzj/otter_node
container_name: node01
restart: always
hostname: node01
restart: always
networks:
otter:
ipv4_address: 10.21.0.11
ports:
- 33062:3306
volumes:
- "./node01/mysql/:/var/lib/mysql/"
- "./node01/zkData/:/home/admin/zkData/"
environment:
TZ: Europe/Rome #Asia/Shanghai 时区
ZOO_CLUSTER: otter_manager:2181,node01:2181,node02:2181
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=otter_manager:2888:3888 server.2=node01:2888:3888 server.3=node02:2888:3888
extra_hosts:
- "otter_manager:10.21.0.10"
- "node01:10.21.0.11"
- "node02:10.21.0.12"
depends_on:
- otter_manager
node02:
image: lsqtzj/otter_node
restart: always
container_name: node02
hostname: node02
networks:
otter:
ipv4_address: 10.21.0.12
ports:
- 33063:3306
volumes:
- "./node02/mysql/:/var/lib/mysql/"
- "./node02/zkData/:/home/admin/zkData/"
environment:
TZ: Europe/Rome #Asia/Shanghai 时区
ZOO_CLUSTER: otter_manager:2181,node01:2181,node02:2181
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=otter_manager:2888:3888 server.2=node01:2888:3888 server.3=node02:2888:3888
extra_hosts:
- "otter_manager:10.21.0.10"
- "node01:10.21.0.11"
- "node02:10.21.0.12"
depends_on:
- node01
networks:
otter:
driver: bridge
ipam:
config:
- subnet: 10.21.0.0/16
gateway: 10.21.0.1
目录结构
命令行
docker-compose up -d
启动后会自动生成,node01,node02,otter_manager 用于保存数据。需要复位数据直接删除目录。
http://localhost:8080/
管理员/密码:admin/admin
zookeeper ui
http://localhost:8018/commands
mysql
管理员/密码:root / otter
普通用户/密码:otter / otter
CMD模式
docker exec -it otter_manager /bin/bash
mysql -hnode01 -uroot -potter -e "CREATE database testdb;"
mysql -hnode02 -uroot -potter -e "CREATE database testdb;"
打开管理页面:http://localhost:8080/已管理员方式登录 用户名/密码 admin / admin
配置管理->数据源配置
数据源名称 11.testdb
数据源名称 12.testdb
配置管理->数据表配置
schema name 要同步的数据库名
table name这里填 .* 代表所有表,注意有个点号
数据源选择刚刚创建的
这里的验证不成功不用管是bug
重复步骤创建目标数据表
配置管理->Canal配置
canal名称:11.canal //可以随便填
数据库地址:10.21.0.11:3306; //填主库地址,一定要 ; 结尾
数据库帐号:root
数据库密码:otter
位点自定义设置:选中
参数获取方式:
命令行:
mysql -hnode01 -uroot -potter -e "show master status;select unix_timestamp();"
内容:{"journalName":"mysql-bin.000003","position":319,"timestamp":1633602912};
内存存储batch获取模式:MEMSIZE(MEMSIZE 内存控制,ITEMSIZE为数量控制)
内存存储buffer记录数:1024 (根据主机性能情况调整)
其他配置用默认值点保存
基本配置完成
同步管理->Channel管理
Channel Name:11.testdb->12.testdb
同步一致性:基于当前日志变更
同步模式:列记录模式
是否开启数据一致性:是
一致性算法:单向回环补救
一致性反查数据库延迟阀值(s):60
其他配置默认
点击刚刚创建的Channel名字 11.testdb->12.testdb 进入Pipeline管理
Pipeline名字:Pipeline_11.testdb-12.testdb 可以随便填
Select机器:选中node01
Load机器:选中node02
Canal名字:选中刚刚创建的 11.canal
主站点:是
其他默认值
点 监控 按钮
一键添加
全部开启
回到Pipeline管理
点击Pipeline名字Pipeline_11.testdb-12.testdb 进入映射关系列表
点添加
源数据表:点 查找数据表进行选择
目标数据表:点 查找数据表进行选择
其他默认,点保存
回到Channel管理页面 启用服务
单向同步配置完成
登录node01 mysql
mysql -hnode01 -uroot -potter
use testdb;
CREATE TABLE `test_table1` (
`id` int(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL
) AUTO_INCREMENT = 1;
exit退出mysql 命令行,验证同步。
mysql -hnode02 -uroot -potter -e "use testdb;show tables ;"
可以看到test_table1已经同步了
接着执行下面的命令随机生成1000条记录
mysqlslap --defaults-file="/etc/my.cnf" --concurrency=50 --iterations=1 --create-schema=testdb --query="insert into test_table1 (name) values(substring(md5(rand()),1,100));" --number-of-queries=1000 -uroot -potter -P3306 -hnode01
验证同步:
mysql -hnode02 -uroot -potter -e "select * from testdb.test_table1;"
所有服务启动好后过2分钟还是提示未启动。
解决方法重启指定的客户机镜像,出错原因估计是宿主机内存不够导致。
问题解决
镜像地址:
Docker Hub
镜像源码地址:GitHub - lsqtzj/Alibaba_Otter_Manager_DockerCompose: Alibaba Otter Managerdocker-compose.yml 测试环境