首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Otter数据同步服务部署与数据同步最佳实践

Otter数据同步服务部署与数据同步最佳实践

原创
作者头像
Jerly.Yan
发布于 2024-01-11 21:03:17
发布于 2024-01-11 21:03:17
3.6K0
举报

一、概述

otter 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

工作原理:

原理描述:

1. 基于Canal开源产品,获取数据库增量日志数据。

2. 典型管理系统架构,manager(web管理)+node(工作节点)

a. manager运行时推送同步配置到node节点

b. node节点将同步状态反馈到manager上

3.基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.

1.1 环境准备

  • otter所需组件:mysql、jdk、zookeeper、otter、aria2
  • otter官方地址:https://github.com/alibaba/otter
  • otter官方文档:Home · alibaba/otter Wiki · GitHub

本文档使用的组件版本:mysql5.7、jdk1.8.0_77、zookeeper3.9、otter4.2.18、aria2-1.36.0

相关主机信息:

角色

主机ip

组件

Otter manager

172.17.6.4

otter manager 、otter node、jdk 、zookeeper 、mysql

otter node

172.17.6.19

otter node、jdk、zookeeper

mysql (源)主机自建

172.17.6.47

jdk、zookeeper 、mysql server

mysql (目标)腾云 实例

172.17.6.16

无

二、安装otter manager

2.1 zookeeper 集群部署

1.安装zookeeper

代码语言:shell
复制
#安装jdk
rpm -ivh jdk-8u301-linux-x64.rpm
#安装zookeeper
tar -zxf apache-zookeeper-3.9.1-bin.tar.gz
mv apache-zookeeper-3.9.1-bin /data/zookeeper
mkdir /data/zookeeper/data
cd /data/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
#编辑配置文件:
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
server.1=172.17.6.4:2888:3888
server.2=172.17.6.47:2888:3888
server.3=172.17.6.19:2888:3888

2.将配置复制到其他节点

代码语言:shell
复制
mkdir -p /data/zookeeper/zkdata 
mkdir -p /data/zookeeper/zklog 

3.在每个节点生成节点id

代码语言:shell
复制
#在172.17.6.4 节点操作
echo 1 > /data/zookeeper/zkdata/myid
#在172.17.6.19 节点操作
echo 2 > /data/zookeeper/zkdata/myid 
#在172.17.6.47 节点操作
echo 3 > /data/zookeeper/zkdata/myid 

4.启动

代码语言:shell
复制
/bin/zkServer.sh start

2.2 安装 otter manager

1.下载地址:

https://github.com/alibaba/otter/releases/download/otter-4.2.18/manager.deployer-4.2.18.tar.gz

代码语言:shell
复制
mkdir -p ./otter/manager 
cd ./otter/manager 
wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/manager.deployer-4.2.18.tar.gz
tar zxf manager.deployer-4.2.18.tar.gz
  1. 安装mysql

略……

otter manager 需要mysql 的支持。

  1. 配置otter manager
代码语言:shell
复制
 wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql

1)将初始化 manager 数据库

代码语言:shell
复制
mysql >create database otter
mysql >use otter 
mysql>source otter-manager-schema.sql

2)创建数据库用户

代码语言:shell
复制
CREATE USER 'otter'@'%' IDENTIFIED BY '123456';     #安装时请修改密码
GRANT ALL ON otter.* TO 'otter'@'%'; 
flush privileges;
  1. 修改配置

修改conf/otter.properties,修改如下信息:

代码语言:shell
复制
otter.domainName = 62.234.27.223                                        #otter manager管理后台的域名或访问ip,页面跳转时会用这个值,为了方便访问,填写了公网IP
otter.port = 80   						                        #otter manager管理后台的访问端口,默认为8080
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://172.17.6.4:3308/otter	    #otter数据库地址
otter.database.driver.username = otter				                #otter数据库账号
otter.database.driver.password = 123456				            #otter数据库密码

otter.communication.manager.port = 1099  				            #otter通讯地址,默认可不改
otter.communication.pool.size = 10             			            #otter通讯连接池,默认可不改

otter.zookeeper.cluster.default = 172.17.6.4:2181,172.17.6.47:2181,172.17.6.19:2181		        #zk连接地址

三、安装otter node

下载地址:https://github.com/alibaba/otter/releases/download/otter-4.2.18/node.deployer-4.2.18.tar.gz

代码语言:shell
复制
mkdir -p /data/otter/node
tar -zxf node.deployer-4.2.18.tar.gz -C /data/otter/node

安装aria2c

node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端

aria2c下载地址:Releases · aria2/aria2 · GitHub

代码语言:shell
复制
wget https://github.com/aria2/aria2/releases/download/release-1.36.0/aria2-1.36.0.tar.gz 
tar zxvf aria2-1.36.0.tar.gz
cd aria2-1.36.0
./configure 
make 
cd src 
cp aria2c /usr/local/bin

注意:编译aria2c 报错:

缺少 gcc11 的包 ,安装

代码语言:shell
复制
yum install gcc-c++

执行make 时报错:

系统缺少依赖包,执行以下安装命令

代码语言:shell
复制
yum install gcc gcc-c++ kernel-devel libgcrypt-devel libxml2-devel openssl-devel gettext-devel cppunit

四、配置 otter

访问 otter manager

3.1 添加zookeepr集群

注:zookeeper 集群地址以逗号分隔,以分号结束

3.2 添加node 节点

输入如下信息:

  • 机器名称:可以随意定义,方便自己记忆即可
  • 机器ip:对应node节点将要部署的机器ip,如果有多ip时,可选择其中一个ip进行暴露. (此ip是整个集群通讯的入口,实际情况千万别使用127.0.0.1,否则多个机器的node节点会无法识别)
  • 机器端口:对应node节点将要部署时启动的数据通讯端口,建议值:2088
  • 下载端口:对应node节点将要部署时启动的数据下载端口,建议值:9090
  • 外部ip :对应node节点将要部署的机器ip,存在的一个外部ip,允许通讯的时候走公网处理。
  • zookeeper集群:为提升通讯效率,不同机房的机器可选择就近的zookeeper集群.

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

将环境准备中添加机器后获取到的序号,保存到conf目录下的nid文件

例如:echo 3 > conf/nid修改conf/otter.properties,修改如下信息:

代码语言:shell
复制
otter.manager.address = 172.17.6.4:1099  #修改为otter master地址

启动

代码语言:shell
复制
./bin/startup.sh

出现如下日志表示启动成功

验证

五、配置同步规则

配置一个otter同步任务,一般需要进行如下步骤:

1)配置数据源

a. 源库 :jdbc:mysql://172.17.6.47:3306

b. 目标库 例:jdbc:mysql://172.17.6.16:3306

2)配置数据表

a. 源数据表(db_test库的所有表):db_test.*

b. 目标数据表(db_test库的所有表):db_test.*

3)配置Canal

a. 源数据库Canal

b. 目标数据表Canal(主从单向同步不需要,双主双向同步需要)

4)配置Channel同步通道

5)配置Pipeline同步管道

a. 选择源库节点和目标库节点(可多节点选择)

b. 选择源库Canal

6)配置同步映射规则

a. 定义源表和目标表的同步关系

7)启动

  1. 测试&监控

5.1 配置数据源

1.添加数据源mysql 172.17.6.47

注:这里的用户名和密码为mysql root的账号和密码。

  1. 添加目标数据源 mysql 172.17.6.16

5.2 配置数据库表

这里以同步db_test库为例

1)添加源库的表

2)添加目标库的表

5.3 添加channel通道

添加db_test 库的 channel

位点信息为canal开始同步的位置,该信息可在mysql中使用如下语句获取:show master status\G;

5.4 配置Channel同步通道

点击同步管理 ,点击添加 ,新增channel

这里以单向同步db_test 库为例

输入Channel Name,同步一致性选择:基于当前日志更新,同步模式为:列记录模式,如果是主主双向同步模式,还需要开启数据一致性。

5.5 配置pipline同步管道

在Channel列表,点击刚才创建的Channel名字,进入Pipeline管理列表

点击“添加”按钮

5.6 配置同步映射规则

在Pipeline列表,点击刚才创建的Pipeline名字,进入映射关系列表

点击添加按钮,添加映射关系

5.7 启动同步

配置完映射规则,回到同步管理主页,点击启用即可开启同步。

查看同步状态

5.6 测试&验证

在源端写入一个新的表,并insert 1000万条数据

代码语言:shell
复制
mysql -h 172.17.6.47 -u root -p
MySQL [(none)]> use db_test;
Database changed
MySQL [db_test]> CREATE TABLE IF NOT EXISTS user_info (
    -> id INT PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(50),
    -> age INT,
    -> salary DECIMAL
    ->    ); 

#创建一个存储过程,插入1万条数据
MySQL [db_test]> CREATE PROCEDURE Insertuser()
    -> BEGIN
    -> DECLARE i INT DEFAULT 1;
    -> WHILE i <= 10000 DO
    -> INSERT INTO user_info (id, name, age, salary) VALUES (i, CONCAT('John', i), 30, 5000);
    -> SET i = i + 1;
    -> END WHILE;
    -> END //
MySQL [db_test]> DELIMITER ;
#执行存储过程
MySQL [db_test]> CALL Insertuser();

查看源端表的行数

登录目标数据库 172.17.6.16 进行验证

查看同步监控

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、概述
    • 1.1 环境准备
  • 二、安装otter manager
    • 2.1 zookeeper 集群部署
    • 2.2 安装 otter manager
  • 三、安装otter node
  • 四、配置 otter
  • 五、配置同步规则
    • 5.1 配置数据源
    • 5.2 配置数据库表
    • 5.3 添加channel通道
    • 5.4 配置Channel同步通道
    • 5.5 配置pipline同步管道
    • 5.6 测试&验证
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档