本文是通过docker构建otter环境与mysql环境
一、使用docker构建otter
docker pull canal/otter-all
curl -fsSL https://raw.githubusercontent.com/alibaba/otter/master/docker/run.sh | bash
访问otter:http://192.168.102.212:8080
账号密码默认是admin/admin,管理员权限
二、使用docker构建mysql环境
构建mysql docker服务
Pull mysql镜像,使用5.6版本,由于是试验性质,不需要配置其他信息
docker pull mysql:5.6
启动mysql容器,此容器的服务为源表。为了不跟已有的服务端口冲突,对外暴露的是13306端口,默认密码是123456,并且在防火墙上打开13306、13307端口;
docker run -p 13306:3306 --name mysql-liukun -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
docker run -p 13307:3306 --name mysql-liukun2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
firewall-cmd --permanent --zone=public --add-port=13306/tcp
firewall-cmd --permanent --zone=public --add-port=13307/tcp
systemctl restart firewalld.service
要注意:otter拉取的主库,要打开binlog,并且主从复制模式是row模式
默认docker服务5.6版本mysql是没有开启binlog的,需要修改mysql的my.cnf配置,但是发现容器默认没有vi、vim、geidt等编辑工具,那么需要进行安装,但是发现安装过程特别慢,是因为默认apt-get源不在国内,所以要先修改源,再进行安装vim
1. 修改apt-get源
修改apt-get数据源为阿里云
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
apt update
有时候在执行apt update会报错W: GPG error: http://mirrors.aliyun.com/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32
此时,执行apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32,注意最后的串号要相同
然后再执行apt update即可
2. 安装vim
apt-get install vim
安装完vim之后,进入编辑模式,默认是visual模式,就是在右键粘贴的时候,会变成选中,修改办法如下
问题:vi visual模式 无法右键粘贴
修复方案:
vi ~/.vimrc
if has('mouse')
set mouse-=a
endif
3. 打开binlog,配置主从复制模式为row模式
修改mysql 打开binlog,设置主从同步模式为row模式
vi /etc/mysql/my.cnf
[mysqld]
log-bin=/var/lib/mysql/mysql-bin
binlog_format=ROW
将docker容器重启即可让配置生效
docker restart xxxx
4. 确认mysql是否开启了binlog,在mysql执行以下命令
SHOW VARIABLES LIKE 'log_%';
确认mysql复制模式是否是row模式,执行以下命令
SHOW VARIABLES LIKE 'binlog_format%';
三、构建mysql源库和目标库
按照“使用docker构建mysql环境”,我们已经创建好了源库和目标库,需要在两个实例的库中分别建好对应的表
create database if not exists test default character set = 'utf8';
USE test;
CREATE TABLE `example` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) COLLATE utf8_bin DEFAULT NULL ,
PRIMARY KEY (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
四、配置otter
添加数据库
a. 源库 jdbc:mysql://192.168.102.212:13306
b. 目标库 jdbc:mysql://192.168.102.212:13307
填写如下信息
Jdbc为jdbc:mysql://192.168.102.212:13306/test
同理添加13307的数据源,jdbc为jdbc:mysql://192.168.102.212:13307/test
最终结果如下
添加canal
a. 提供数据库ip信息
只需要填写红框的内容,其他不用动
结果如下
添加同步表信息
a. 源数据表 test.example
b. 目标数据表 test.example
填写如下内容
再新增一个13307的数据表
最终结果如下
添加channel
只需要填写红框内容
添加pipeline
a. 选择node节点
b. 选择canal
添加同步映射规则
a. 定义源表和目标表的同步关系
如果表相同,直接保存即可
启动
测试数据
在源表中插入一条数据
INSERT INTO `example` (`name`) VALUES ("kelvin");
查看目标表是否有数据同步过来
数据已经同步,配置成功!
更多otter配置参考教程:https://blog.csdn.net/liupeifeng3514/article/details/79687095