数据同步解决方案—Otter部署

本文内容讲述如何通过Centos搭建阿里云数据同步利器Otter的运行环境
简述

Otter是基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。主要解决一个跨地域性的数据同步问题,支持单向同步,双向同步,高可用性部署等。我只要用来解决业务在国际间不同数据库的数据同步问题,当然阿里云也有收费的数据同步解决方案DTS,拥有强大的功能个更低的延迟,根据自身业务不同来进行最合适的选择。

Otter主要分为两个重要组件,manager和node。简单介绍一下,manager就是管理控制界面,node是处理数据同步的机器节点。

第一步 搭建Java运行环境

Java运行环境搭建网上有很多,也可以查看我的关于搭建Java环境的博客,此处推荐使用JDK8及以上。

第二步 搭建Zookeeper

1、下载Zookeeper,https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

我这里下载的是zookeeper-3.4.14

1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

2、解压

tar –zxvf zookeeper-3.4.14.tar.gz

3、进入zookeeper中的conf目录将zoo_sample.cfg重命名为zoo.cfg

4、修改zoo.cfg配置文件,仅保留下列信息,其他信息注释

下面dataDir和dataLogDir文件默认是没有的需要通过mkdir创建data和logs文件夹

1
2
3
4
5
6
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/zookeeper-3.4.14/data
dataLogDir=/root/zookeeper/zookeeper-3.4.14/logs
clientPort=2181

5、在/etc/profile文件中设置PATH
修改profile文件:
sudo vi /etc/profile

1
2
3
export ZOOKEEPER_HOME=/home/hadooptest/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH

6、启动项目,进入到zookeeper中的bin目录中,执行一下指令

1
zkServer.sh start
第三步安装mysql

mysql安装的方法也比较多,这里采用最常见的用yum源安装的方式。

1
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
1
yum -y install mysql57-community-release-el7-10.noarch.rpm
1
yum -y install mysql-community-server
1
systemctl start  mysqld.service

启动mysql数据库之后修改mysql的密码为自己的密码。通过以下命令找到初始密码,通过密码登陆mysql然后修改mysql的登陆密码,这里要记住mysql密码要求一定的强度,否则会失败。

1
2
3
grep "password" /var/log/mysqld.log
mysql -u root -p
mysql> set password for root@localhost = password('***');

下载otter manager的sql文件,进入mysql初始化otter manager系统表。

1
wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql
1
source otter-manager-schema.sql

再倒入数据库的时候可能会有人出错,是因为mysql5.7的默认值不兼容的问题,引发的字段是’0000-00-00 00:00:00’,全部替换成’1970-01-01 00:00:01’,Linux批量替换命令:

1
%s/0000-00-00 00:00:00/1970-01-01 00:00:01/g
第四步现在OtterManager并启动

直接下载的方式下载OtterManager的版本包,可访问:https://github.com/alibaba/otter/releases ,会列出所有历史的发布版本包下载。下载好之后传送到服务器上。

解压缩该版本包到指定目录

1
2
mkdir /root/otter/manager
tar zxvf manager.deployer-4.2.7.tar.gz -C /tmp/manager

配置修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## otter manager domain name #修改为正确访问ip,生成URL使用
otter.domainName = 127.0.0.1
## 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://127.0.01:3306/ottermanager
otter.database.driver.username = root
otter.database.driver.password = hello

otter communication port
otter.communication.manager.port = 1099
otter communication pool size
otter.communication.pool.size = 10
#修改为正确的地址
otter.zookeeper.cluster.default = 127.0.0.1:2181
otter.zookeeper.sessionTimeout = 90000
otter arbitrate connect manager config
otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}

进入manager/bin目录中执行启动脚本

1
sh startup.sh

查看项目日志,可以看到错误信息等

1
vi ../logs/manager.log

如果日志中没有发现异常则可以进入浏览器输入 http://你的ip:8080/,出现otter的页面,即代表启动成功,请注意相应的端口是否开通。

(默认的管理员账号名:admin 密码:admin)

第五步安装OtterNode
  1. otter node会受otter manager进行管理,所以需要预先安装otter manager,参见:Otter Manager Quickstart.

  2. 完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id.

​ a. 首先访问manager页面的机器管理页面,点击添加机器按钮

​ b. 机器添加完成后,跳转到机器列表页面,获取对应的机器序号nid

(通过这两部操作,获取到了node节点对应的唯一标示,称之为node id,简称:nid. 记录该nid,后续启动nid时会使用)

  1. 安装aria2c,可以提高同步时候的速度,也可以不装
  2. 直接下载的方式下载OtterNode的版本包,可访问:https://github.com/alibaba/otter/releases ,会列出所有历史的发布版本包下载。下载好之后传送到服务器上。
1
2
mkdir /root/node
tar zxvf node.deployer-4.2.17.tar.gz -C /tmp/node

​ a. nid配置 (将环境准备中添加机器后获取到的最左端的序号,保存到conf目录下的nid文件,比如我添加的机器对应序号为1),在node目录下执行此命令

1
echo 1 > conf/nid

​ b. otter.properties配置修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# otter node root dir
otter.nodeHome = ${user.dir}/../node
## otter node dir
otter.htdocs.dir = ${otter.nodeHome}/htdocs
otter.download.dir = ${otter.nodeHome}/download
otter.extend.dir= ${otter.nodeHome}/extend

otter.zookeeper.sessionTimeout = 90000

otter communication pool size

otter.communication.pool.size = 10
#修改为正确的manager服务地址
otter.manager.address = 127.0.0.1:1099
  1. 进入node/bin/目录中 通过sh startup.sh命令启动项目,通过vi logs/node/node.log进行验证
  2. 访问: http://你的ip:8080/node_list.htm,查看对应的节点状态,如果变为了已启动,代表已经正常启动。
-->