首页 > 数据库 >Otter实现mysql数据库指定多个表实时单向同步

Otter实现mysql数据库指定多个表实时单向同步

时间:2023-02-02 15:24:10浏览次数:72  
标签:node 单向 manager mysql aria2c aria2 Otter otter

背景

生产库接入太多应用程序,现需要搭建从库用于测试并数据分析,由于并发量大,mysql自带的主从同步存在瓶颈,主从同步延迟增大,因此通过otter的方案实现主从同步。

计划

192.168.101.244 部署otter-manager(jdk、zk、mysql、otter-manager、aria2c)
192.168.100.35 部署otter-node(jdk、aria2c 、otter-node)
192.168.101.177 生产库ehc
192.168.100.99 测试库ehc

安装jdk

安装zookeeper

安装otter manager

1.下载安装包

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

2.下载数据库otter初始化脚本

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

3.导入otter初始化sql

4.创建数据库用户名和密码

CREATE USER 'otter'@'%' IDENTIFIED BY 'XXXXXXX';
GRANT ALL ON otter.* TO 'otter'@'%';
flush privileges;

5.创建otter manager目录并解压安装包


6.修改配置文件


vim otter.properties

7.启动服务,并查看日志


8.可以通过MobaXterm将服务器端口映射至本地

9.登录页面查看



默认账号密码:admin/admin

安装otter-node

1.下载otter-node

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

2.下载并安装aria2c

node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端
aria2c下载地址:https://github.com/aria2/aria2/releases
编译完成后,将对应的aria2c包加入到PATH路径即可(node和manager节点都需将编译好的aria2c保存至 /usr/local/bin)
otter node会受otter manager进行管理,所以需要预先安装otter manager
完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id
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

3.配置zookeeper

4.配置node节点




根据创建的序列号,配置对应的nid


如法炮制,创建多个节点,并启动

开始同步服务配置

1.源库及目标库创建用户

【canal】 CREATE USER canal IDENTIFIED BY 'XXXXXXXX'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'canal'@'%'; flush privileges;
【otter】 grant all privileges on . to otter@'%' identified by 'XXXXXXXX'; flush privileges;

2.源库和目标库配置修改

vim /etc/my.cnf
开启bin log模式
log-bin=mysql-bin
binlog_format=row
如果mysql为多写模式,需要在每个写库配置自增主键的偏移量和步长,避免主键冲突,偏移量和步长根据写库数量做配置
例如myql双写模式场景下,MySQL-A配置如下
auto-increment-increment=2
auto-increment-offset=1
MySQL-B配置如下
auto-increment-increment=2
auto-increment-offset=2

3.创建数据源

源库:

目标库:

4.创建数据表配置

源库:

目的库:

报错:


由于想要同步的表较多,这边分两块加入

5.添加canal配置


6.创建channel



7.添加同步的源表和目标表

8.开启同步



标签:node,单向,manager,mysql,aria2c,aria2,Otter,otter
From: https://www.cnblogs.com/haiyoyo/p/17086113.html

相关文章

  • MySQL优化六,锁
    一,MySQL中的锁InnoDB中锁非常多,总的来说,可以如下分类:     这些锁都是做什么的?具体含义是什么?我们现在来一一学习。1.2,解决并发事务问题我们已经知道事......
  • mysql数据库时间类型数据存储建议
    本文转载自:https://javaguide.cn/database/mysql/some-thoughts-on-database-storage-time.html 我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记......
  • sql语句在mysql中的执行过程
    本文转载自:https://javaguide.cn/database/mysql/how-sql-executed-in-mysql.html 一MySQL基础架构分析 1.1MySQL基本架构概览下图是MySQL的一个简要架构图,从......
  • mysql索引详解
    本文转载自https://javaguide.cn/database/mysql/mysql-index.html索引介绍索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。索引......
  • mysql查询优化工具
    本文转载自https://www.cnblogs.com/yidengjiagou/p/16594161.html optimizertraceoptimizertrace 可以帮助我们查看优化器生成执行计划的整个过程,以及做出的各种决......
  • Mysql事务底层原理
    本文转载自https://www.cnblogs.com/yidengjiagou/p/16413825.html 事务有四大特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),简称......
  • mysql创建还原点
    setautocommit=0;insertintot1(name)values("user1");savepointp1;insertintot1(name)values("user2");svaepointp2;insertintot1(name)values("user3")......
  • Mysql导出大量数据
    outfile导出文件selectnamefromt1intooutfile"/tmp/test.txt"infile导入文件导入到表t1中的name列loaddatainfile"/tmp/test.txt"intotablet1(name);导入......
  • MySQL隔离级别、锁、SQL优化
    一、事务隔离级别1.1事务-事务是逻辑上的一组操作,要么全部执行,要么全部不执行。-事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不......
  • MySQL 合并查询join 查询出的不同列合并到一个表中
    为了求解问题时思路清晰,建议先分列查询,再将列合并到一个表中,这样相当于将复杂问题拆解为简单问题,一一解决。优点是避免所有问题混在一起,代码逻辑清晰,可迁移性强,下次遇到类......