Otter实现Msql主从同步

需求:实现主机a(hadoop2)的mysql数据同步到主机b(hadoop4)的mysq中。

参考文档:https://github.com/alibaba/canal
https://github.com/alibaba/otter/wiki/QuickStart
https://segmentfault.com/a/1190000010772134#articleHeader0

配置环境:
依赖环境:
mysql
jdk
zookeeper(空间文档大数据环境中有关于zookeeper的安装内容为分布式集群,这里也可以是单机模式,可以通过搜索博客进行配置)
安装配置,包括mysql账号密码的设置比较简单,网上有甚多博客,这里略去,后面配置过程中强制需要输入mysql密码(不允许为空)所以应当在配置好mysql之后设置好密码。
作用: otter为纯java编写需要jdk
otter node依赖于zookeeper进行分布式调度,需要安装一个zookeeper节点或者集群
jdk,mysql,基本配置完成的情况下。

安装node与manager
作用:
安装node和(aria2:作用是加快数据 传输,这里是可选的,暂时不做配置)
初始化manager配置表

下载配置: wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql
这里写图片描述
登录mysql
然后 在mysql中执行
上图可以看到我下载的路径是 /opt/data/
source otter-manager-schema.sql(这里填下载所在路径)
所以:
这里写图片描述

wget https://github.com/alibaba/otter/releases/download/otter-x.y.z/manager.deployer-x.y.z.tar.gz

先创建目录 manager
node
然后解压到目录 :

进入目录
这里写图片描述
编辑文件:
这里写图片描述

## otter manager domain name
otter.domainName = 192.168.8.37
## otter manager http port
otter.port = 8080
## jetty web config xml
otter.jetty = jetty.xml

## otter manager database config
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://192.168.8.37:3306/otter
otter.database.driver.username = root
otter.database.driver.password =

## otter communication port
otter.communication.manager.port = 1099

## otter communication pool size
otter.communication.pool.size = 10

## default zookeeper address
otter.zookeeper.cluster.default =192.168.8.39:2181
## default zookeeper sesstion timeout = 60s
otter.zookeeper.sessionTimeout = 60000

## otter arbitrate connect manager config
otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}

## should run in product mode , true/false
otter.manager.productionMode = true

## self-monitor enable or disable
otter.manager.monitor.self.enable = true
## self-montir interval , default 120s
otter.manager.monitor.self.interval = 120
## auto-recovery paused enable or disable
otter.manager.monitor.recovery.paused = true
# manager email user config
otter.manager.monitor.email.host = smtp.gmail.com
otter.manager.monitor.email.username =
otter.manager.monitor.email.password =
otter.manager.monitor.email.stmp.port = 465

回到bin目录
./startup.sh #启动manager

日志可以去/tmp/manager/logs/manager.log查看
访问WebUI
这里写图片描述
a节点配置manager 与node,b节点配置node

下一步配置a的node
这里写图片描述
potter.manager.address = 192.168.8.37:1099
配置文件修改这个参数与manager相同

conf 目录下创建nid文件。里面内容每个node不能重复。
echo 1 >nid(p:注意空格echo 1>nid 则不会正确输入1到文件中)
这里写图片描述

配置好的node分发到b节点(hadoop4)

这里写图片描述
添加配置:
访问manager的WebUI 默认登录 admin admin
1.添加 zookeeper
这里写图片描述
这里写图片描述
2.添加node
这里写图片描述
(这里搜到的图,node启动状态下可以编辑)
这里写图片描述
这里要将两个node都要配置一下

3.配置数据源(可以先到文末,将建表语句执行)

这里写图片描述
如图,将两个需要同步的mysql数据源配置。
这里写图片描述
mysql配置文件中,应该增加如下配置
yum安装的话,配置文件在 /etc/my.conf

log_bin = mysql-bin #打开日志
binlog_format = ROW #设置row模式的日志格式
server-id = 2 #id不能重复

数据表配置(这里将两个表。一个数据源表,一个数据走向表,都要配置,下图只截了一个) :
可以单个数据表配置:
这里写图片描述

也可以 多个表
这里写图片描述

.* 代表所有库
*. 代表所有表
(这里不做一一的演示)

添加canal
这里写图片描述
这里写图片描述
这里填的是主数据mysql的地址。
配置参数分析可以查看:
https://github.com/alibaba/otter/wiki/Manager配置介绍

添加channel
这里写图片描述
这里写图片描述

添加pipeline
这里写图片描述

然后
这里写图片描述
选择node节点
这里写图片描述
选择canal,点击上图中的查找canal,选择之前配置的canal即可。

添加同步映射规则, 定义源表和目标表的同步关系
添加按钮只有在未运行的时候才可以看到
这里写图片描述
添加之后点击
这里写图片描述
然后配置
这里写图片描述
点击添加
这里写图片描述
然后进行配置

配置完成启动
这里写图片描述
启动完成(注意要在节点上启动node ,脚本位于 bin/startup.sh)
这里写图片描述
测试
由于已经执行过了,所以看到从节点(hadoop4)已经同步了主节点(hadoop2)的一条数据。
这里写图片描述
这里写图片描述
这里在主节点再插入一条数据
insert into test.example(id,name) values(2,’hello2’);
这里写图片描述
可以看到从节点已经同步了主节点的数据
这里写图片描述

sql 演示文本:

CREATE TABLE test.example (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(32) COLLATE utf8_bin DEFAULT NULL ,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行插入:
insert into test.example(id,name) values(null,’hello’);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值