需求:实现主机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’);