千家信息网

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

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,前言在云平台的日常运维工作中,有很多故障排查和数据核对的场景,为了给全线运维人员(含部分开发和运营分析人员)提供现网数据的实时查询,我们使用MySQL和开源工具otter搭建了一套数据查询和管理系统,
千家信息网最后更新 2024年11月23日基于MySQL和Otter实现生产环境安全的数据同步及查询

前言


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


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


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


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





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

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

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

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

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


一、Otter的特性


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


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


下面是Canal的原理图:

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



基于MySQL主备复制原理:





  • 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、文件同步


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


单机房复制示意图:





说明:


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

  • node节点可以有failover / loadBalancer。


异地机房复制示意图:





说明:


  • 数据涉及网络传输,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/


版本信息





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

数据 同步 数据库 机房 节点 系统 工作 配置 日志 算法 查询 一致 一致性 实时 版本 管理 原理 场景 增量 异地 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库面试题基本语句 网络安全知识介绍500字 服务器淘汰下来的处理器怎么样 首都网络安全日活动总结 数据库课程学生成绩管理系统 在数据库技术上什么是数据 北屯服务器数据迁移电话 移动办公显示无法连接服务器 sql是哪里的数据库 华为网络技术工程师课程 徐州通用软件开发服务电话 idea断开数据库连接 如何树立正确网络安全观 dw数据库交互 农村信息数据库 防溺水网络安全主题班会 高淳区一站式软件开发 手机软件开发要会什么条件 进口软件开发工具价格 网络安全知识培训试题 如何在服务器设置成永久管理 网络安全知识介绍500字 松江区管理软件开发有哪些 数据库技术基础知识题 员工办公网络安全手册 软件开发相关工作经验 招商资料库数据库设计 上海夺畅网络技术有限待遇 信息网络技术原理与应用考题 网络安全知识培训试题
0