iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >基于MySQL和Otter实现生产环境安全的数据同步及查询
  • 138
分享到

基于MySQL和Otter实现生产环境安全的数据同步及查询

2024-04-02 19:04:59 138人浏览 薄情痞子
摘要

前言在云平台的日常运维工作中,有很多故障排查和数据核对的场景,为了给全线运维人员(含部分开发和运营分析人员)提供现网数据的实时查询,我们使用Mysql和开源工具otter搭建了一套数据查询和管理系统,可以查

前言


在云平台的日常运维工作中,有很多故障排查和数据核对的场景,为了给全线运维人员(含部分开发和运营分析人员)提供现网数据的实时查询,我们使用Mysql开源工具otter搭建了一套数据查询和管理系统,可以查询平台各资源池现网当前的数据。并与现网保持准实时同步(秒级延时)。


查询模块的主要组件是mysql,纳管线上业务系统的核心数据库,用户使用频次极高,此台Mysql中的部分核心数据还作为其他资源池的源数据,实时同步给异地机房。负责数据实时同步的otter管理节点与MySQL部署在同一物理机上,是云平台所有资源池中查询模块的中枢节点。


首先,介绍一下开源工具Otter(内容引自GitHub


Otter是由阿里提供的基于数据库增量日志解析,准实时同步到本机房或异地机房MySQL数据库的一个分布式数据库同步系统,工作原理如下:



基于MySQL和Otter实现生产环境安全的数据同步及查询



  • db:数据源以及需要同步到的库;

  • Canal:用户获取数据库增量日志;

  • manager:配置同步规则设置数据源同步源等;

  • ZooKeeper:协调node进行协调工作;

  • node:负责任务处理处理接受到的部分同步工作。


一、Otter的特性


1、纯JAVA开发,占时资源比较高


2、基于Canal获取数据库增量日志数据,Canal是阿里另一款开源产品


下面是Canal的原理图:

已经为大家精心准备了大数据的系统学习资料,从linux-hadoop-spark-......,需要的小伙伴可以点击


基于MySQL和Otter实现生产环境安全的数据同步及查询


基于MySQL主备复制原理:



基于MySQL和Otter实现生产环境安全的数据同步及查询



  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看);

  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据。


Canal工作原理:


  • Canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议;

  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal );

  • Canal 解析 binary log 对象(原始为 byte 流)。


3、典型管理系统架构,manager(WEB管理)+node(工作节点)


1)manager运行时推送同步配置到node节点,负责配置监控


2)node节点将同步状态反馈到manager上,负责处理任务


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


5、使用aria2多线程传输技术,对网络依赖带宽依赖较低


二、Otter能解决什么问题


1、异构库同步


MySQL -> MySQL/oracle。(目前开源版本只支持MySQL增量,目标库可以是MySQL或者Oracle,取决于Canal的功能)


2、单机房同步 (数据库之间RTT < 1ms)


  • 数据库版本升级;

  • 数据表迁移;

  • 异步二级索引


3、异地机房同步(是Otter最大的亮点之一,可以解决国际化问题把数据从国内同步到国外提供用户使用,在国内场景可以做到数据多机房容灾)


机房容灾


4、双向同步(双向同步是在数据同步中最难搞的一种场景,Otter可以很好的应对这种场景,Otter有避免回环算法和数据一致性算法两种特性,保证双A机房模式下,数据保证最终一致性)


1)避免回环算法 (通用的解决方案,支持大部分关系型数据库)


2)数据一致性算法 (保证双A机房模式下,数据保证最终一致性,亮点)


5、文件同步


站点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片)


单机房复制示意图:



基于MySQL和Otter实现生产环境安全的数据同步及查询



说明:


  • 数据on-Fly,尽可能不落地,更快的进行数据同步. (开启node loadBalancer算法,如果Node节点S+ETL落在不同的Node上,数据会有个网络传输过程);

  • node节点可以有failover / loadBalancer。


异地机房复制示意图:



基于MySQL和Otter实现生产环境安全的数据同步及查询



说明:


  • 数据涉及网络传输,S/E/T/L几个阶段会分散在2个或者更多Node节点上,多个Node之间通过zookeeper进行协同工作 (一般是Select和Extract在一个机房的Node,TransfORM/Load落在另一个机房的Node);

  • node节点可以有failover / loadBalancer. (每个机房的Node节点,都可以是集群,一台或者多台机器)。


关于Otter的调度模型、数据入库算法、一致性、高可用性和扩展性等内容,可以登录gitHub了解。


已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击


里面有详细的介绍,本文不再赘述,下面重点说明一下otter的安装和使用。


三、安装部署


移动云业务需要数据汇总,需将多个主数据库同步汇总到一个从数据库中,方便数据统计分析。Otter中间件则满足了此需求,相对比多源复制,更加灵活和可塑性。


前面简单介绍了Otter的基本信息,下面开始搭建一个Otter环境,因为一个Otter需要Manage+node+数据库还有很多的依赖,这里我们先来搭建Otter的管理服务器Manager。


1、环境准备


1)阿里软件


Otter(manager、node)软件:https://github.com/alibaba/otter/releases


Manager数据库初始化脚本:Https://raw.githubusercontent.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql


2)集群


Zookeeper:http://download.csdn.net/download/jxplus/9451794


3)JAVA


jdk测试环境使用yum安装1.6以上版本


4)数据库


Mysql5.7:http://dev.mysql.com/downloads/mysql/


5)操作系统


Centos 7.1.1503 (Core):https://www.centos.org/download/


版本信息



基于MySQL和Otter实现生产环境安全的数据同步及查询



2、软件安装


1)操作系统安装


2)java jdk1.6


安装完成操作系统后,使用yum安装jdk1.6以上版本(含1.6)


yum -y install java-1.6.0-openjdk.x86_64


3)安装MySQL数据库


4)安装集群软件ZooKeeper


下载安装包后解压即可,不需要编译安装。然后进行配置:


① 修改tickTime、clientPort、dataDir参数


vim /zookeeper-3.4.8/conf/zoo.cfg


tickTime :时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。


tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。


clientPort :zk服务进程监听的tcp端口,默认情况下,服务端会监听2181端口。


dataDir :无默认配置,必须配置,用于配置存储快照文件的目录。


② 执行下面命令启动server


cd /zookeeper-3.4.8/bin/ 

./zkServer.sh start

MacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'WenQua

您可能感兴趣的文档:

--结束END--

本文标题: 基于MySQL和Otter实现生产环境安全的数据同步及查询

本文链接: https://www.lsjlt.com/news/35121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作