otter、canal跨服务器数据同步解决方案详解,包括下载、安装、配置、应用过程解读。

news2024/12/24 9:10:36

1.背景和原理:

       阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。

       otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otter4。

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

(1)MySQL主备复制原理

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

(2)canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

(3)otter原理

1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击

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

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

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

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

GitHub - alibaba/otter: 阿里巴巴分布式数据库同步系统(解决中美异地机房)

2.本地环境:

win10;

mysql5.7.39;

manager.deployer-4.2.18;

node.deployer-4.2.18;

apache-zookeeper-3.8.1

3.otter下载;

本次版本是v4.2.18

Releases · alibaba/otter · GitHub

4.zookeeper下载、安装、配置、运行;

Index of /dist/zookeeper/zookeeper-3.8.1https://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/

 

 

5.manager.deployer配置,启动;

otter所依赖的数据库:

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

 

关闭服务,可以点击stop.sh;

登录:admin/admin

(如果是匿名登录,则只能查阅)

 

 

 

6.node.deployer配置,启动;

在conf路径下新建文件nid,内容是“1”;

 

7.配置主库与从库;

数据库版本:Mysql5.7.x;

只需源数据库开启binlog日志;

id自增;

 

 

 

从库同步需要主库提供账号密码, 且账号至少需要SELECT、REPLICATION CLIENT、REPLICATION SLAVE权限。

注意:REPLICATION SLAVE 可以在只读账号下分配,但权限级别需要是 global,不能仅指定某个数据库的只读。

账号test创建操作如下:(或者直接使用root账号,权限最大,无需配置)

CREATE USER test IDENTIFIED BY '123456';  

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test'@'%';

FLUSH PRIVILEGES;

否则会报错:

8.配置流程;

添加canal配置 → 添加数据源配置 → 添加数据表配置 → 添加channel → 添加Pipeline → 添加表映射关系 → 启动channel

(1)添加canal配置;

 

(2)添加数据源配置;

(3)添加数据表配置;

错误原因有两个:

  • schema name:配置内容填写有误。

 

主库的数据表配置如下:

  • 数据库源的账号test的权限不够;

解决方法如下:

CREATE USER test IDENTIFIED BY '123456';  

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test'@'%';

FLUSH PRIVILEGES;

然后用test账号配置数据源即可。

(4)添加channel;

 

 

(5)添加Pipeline;

 

 

 

(6)添加表映射关系;

 

 

如果两个表结构相同,直接保存;否则,需要配置字段映射关系,再点击下一步。

 

 

(7)启动channel;

 

(8)数据同步;

 

如果channel已经有关联关系,必须先停止该channel,删除关联关系,再删除pipeline,最后才可以删除channel;

或者执行编辑映射关系:

 

 

 

 

 

 

目录

1.背景和原理:

(1)MySQL主备复制原理

(2)canal 工作原理

(3)otter原理

2.本地环境:

3.otter下载;

4.zookeeper下载、安装、配置、运行;

5.manager.deployer配置,启动;

6.node.deployer配置,启动;

7.配置主库与从库;

8.配置流程;

(1)添加canal配置;

(2)添加数据源配置;

(3)添加数据表配置;

(4)添加channel;

(5)添加Pipeline;

(6)添加表映射关系;

(7)启动channel;

(8)数据同步;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】 队列 queque

一、什么是队列 单端队列:一端入队,一端出队 双端队列:两个口都可以进出 先进先出 二、常用操作 1.原理 访问 access:遍历查找某个元素 时间复杂度:O(N) 搜索 search:遍历查找某个元素 时间复杂度&a…

视频美颜sdk是什么?技术解析与实现原理详解

视频美颜技术的发展则为人们提供了一种美化自己的方式,因此,视频美颜技术成为了一个备受关注的领域。在这个领域中,视频美颜sdk技术则是实现高效美颜的关键因素之一。本文将从技术角度分析视频美颜sdk的实现原理和优势。 一、视频美颜技术的…

【十六】设计模式~~~行为型模式~~~策略模式(Java)

5.1. 模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以…

学编程能参加哪些比赛?

孩子学习编程可以参加这10个竞赛: 下面将会根据孩子所学的编程语言来列举孩子可以参加的竞赛: 一、Scratch编程可参加的比赛 1、全国中小学生电脑制作大赛 电脑制作大赛不能完全说是编程比赛,更多讲究艺术与科技结合。 评选项目要求学生使用计算机设计电子报、网页设计、F…

计网作业练习一

第一章练习 简答题 1. 简述计算机网络业务的分类及各类业务的特点。 按网络的作用范围划分: (1)广域网 WAN,作用范围通常为几十到几千公里,也称为远程网,是 Internet 的核心部分。 (2&#x…

冒泡排序(超详细图解加代码解析,5分钟看懂)

目录 1.冒泡排序的定义 2.冒泡排序的原理 3.代码及其解析 4.冒泡排序的改进 5.实现冒泡排序函数 生命中永远会有令人懊恼的事,但我知道,我们是为了不留遗憾活着的,对吗? 1.冒泡排序的定义 冒泡排序(Bubble Sort&…

C++的一些点

P52 函数-值传递 值传递时&#xff0c;函数的形参发生改变&#xff0c;不会影响实参。 P54 函数-函数声明 先函数声明&#xff0c;就可以把函数定义放在main函数后面 声明可以写多次&#xff0c;但是定义只能写一次。 #include<iostream> using namespace std;int ma…

Tomcat源码:SocketProcessor、ConnectionHandler与Http11Processor

前文&#xff1a; 《Tomcat源码&#xff1a;启动类Bootstrap与Catalina的加载》 《Tomcat源码&#xff1a;容器的生命周期管理与事件监听》 《Tomcat源码&#xff1a;StandardServer与StandardService》 《Tomcat源码&#xff1a;Container接口》 《Tomcat源码&#xff1a…

C++线程 并发编程:std::thread、std::sync与std::packaged_task深度解析

C线程 并发编程&#xff1a;std::thread、std::sync与std::packaged_task深度解析 1. C并发编程概述&#xff08;C Concurrency Overview&#xff09;1.1 并发与并行的区别&#xff08;Difference between Concurrency and Parallelism&#xff09;1.2 C中的线程模型&#xff0…

(二)微服务中间键工作原理——nacos服务端服务注册心跳包(/nacos/v1/ns/instance/beat)源码解读

前言 上节内容我们通过分析nacos客户端源码&#xff0c;了解了nacos客户端是如何向服务端注册服务和发送心跳包的&#xff0c;本节内容话接上一节内容&#xff0c;我们通过分析nacos服务的源码&#xff0c;查看服务端是如何处理客户端注册时候的心跳包的。关于nacos服务端的源…

工程制图篇:公差原则与要求

目录 1、尺寸与几何公差2、公差原则3、公差要求4、关键名词解释5、常用通用量具 1、尺寸与几何公差 1&#xff09;尺寸公差1&#xff1a;上极限尺寸减去下极限尺寸之差&#xff0c;或上极限偏差减去下极限偏差只差。它是允许尺寸的变动量。尺寸公差是一个没有符号的绝对值&…

Cisco.Packet.Tracer思科模拟器练习题

一、网络设备配置 1、将 RA 路由器重命名为 RA&#xff0c;将 RB 路由器重命名为 RB 2、按下方表格中的要求完成设备主机名&#xff08;hostname&#xff09;及接口配置&#xff1b; 3、将 RA 的 DCE 端时间频率设置 64000&#xff0c;并封装 PPP 协议后发送用户名密码 usera…

Spring 源码分析衍生篇十三 :事务扩展机制 TransactionSynchronization

文章目录 一、前言二、TransactionSynchronization 1. TransactionSynchronization 1.1 TransactionSynchronization 的定义1.2 TransactionSynchronizationManager2. TransactionSynchronization 原理简述 2.1 TransactionSynchronization#beforeCommit2.2 TransactionSynchro…

基于状态的系统和有限状态机FSM

基于状态的系统和有限状态机FSM 介绍 基于模型进行测试。模型可能是规格或描述感兴趣的属性。 该模型通常是一个抽象概念&#xff0c;应该相对容易理解。 测试补充了白盒方法。 测试通常是黑盒&#xff1a;不考虑实际系统的结构。 如果模型具有形式语义&#xff0c;则可实现的…

leetcode--二叉搜索树中第K小的元素(java)

二叉搜索树中第K小的元素 leetcode 230 题 二叉搜索树第K 小的元素解题思路代码演示二叉树专题 leetcode 230 题 二叉搜索树第K 小的元素 原题链接&#xff1a; https://leetcode.cn/problems/kth-smallest-element-in-a-bst/ 题目描述 给定一个二叉搜索树的根节点 root &#…

智慧办公室虚拟现实 VR 可视化

“虚拟现实”是来自英文“Virtual Reality”&#xff0c;简称 VR 技术&#xff0c;其是通过利用计算机仿真系统模拟外界环境&#xff0c;主要模拟对象有环境、技能、传感设备和感知等&#xff0c;为用户提供多信息、三维动态、交互式的仿真体验。 图扑软件基于自研可视化引擎 H…

亚马逊云科技位列IDC MarketScape决策支持分析数据平台领导者

随着科学技术的不断发展&#xff0c;人们的生活方式也在不断改变。现在&#xff0c;人们可以通过互联网获得更多的信息&#xff0c;也可以通过智能手机随时随地与他人进行交流。此外&#xff0c;人工智能技术的进步也使得机器能够完成一些复杂的任务&#xff0c;从而提高了人们…

【Azure】微软 Azure 基础解析(六)计算服务中的虚拟机 VM、虚拟机规模集、Azure Functions 与 Azure 容器(ACI)

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

写了 7 年代码,第一次见这么狗血的小 Bug!

刚刚修我们鱼聪明 AI 助手平台的一个 Bug&#xff0c;结局很狗血&#xff01;赶紧给大家分享一下&#xff0c;顺便也分享下标准的排查 Bug 思路。 事情是这样的&#xff0c;有小伙伴在鱼聪明平台&#xff08;https://www.yucongming.com&#xff09;创建了一个 AI 助手&#x…

ModStartCMS v6.5.0 菜单多级支持,框架结构优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…