MySQL数据库异构数据同步–后端以tair为例

在实现levelDB挂载成MySQL引擎时,发现在实际存储是key-value格式时候,MySQL的异构数据同步,可以更简单和更通用。

以tair为例,简要描述一下以MySQL为基础的一种方案。

所谓异构数据同步,是指应用只更新MySQL,而由后端的某些机制将这些更新应用到其他数据存储服务上。

1、 MySQL-Tair 引擎

a)       使用

b)       说明

这不是一个“存储引擎”,实际上数据存储在tair服务器上。执行insert/update/delete时,只是将对应的动作put /remove到tair服务器。当然这个过程对用户是透明的。

2、 MySQL-Tair 引擎怎么用于更新 tair 数据

首先,数据更新有两种方式,同步更新和异步更新。

a)       异步更新

先说异步更新。这个类似“读binlog来更新数据”的方案。如果使用MySQL-Tair引擎,结构可以如下:

说明:tair表只存在Slave上,与主库上要更新的表同名。

完备性:以现在主库都是row格式的binglog结构为背景,这里Slave上收到的都会是这个更新的完整行信息,从中取出需要的key和value即可。

b)       同步更新

同步更新的意思,是应用端更新MySQL, 在MySQL和tair同时更新完成后,MySQL才返回用户更新成功。

这种模式更像将tair作为MySQL的网络级别缓存服务。当然应用在读取的时候可以绕过MySQL直接访问tair,则只是作为一种更新方案。

这种模式能够让更新后的下一次访问直接命中tair中的缓存数据。异步则无法保证。

结构如下:

说明:这里实体数据表与tair表在同一个数据库,表结构相同,引擎不同。应用还是更新数据表,用触发器触发相同的语句更新tair表。

完备性:同样的,触发器会得到这个更新的新行全值。

3、 MySQL 同步的优点

这种有以下优势,即使只考虑异步更新模式:

a)       不需要自己模拟一个MySQL数据库的从库、不需要维护连接(MySQL自带)

b)       不需要解析binlog(什么时候binlog切换都要关心,要做的事情太多)

c)        更方便的监控。MySQL数据库现有的监控接口,直接得到tps、延迟时间,同步点。

d)       更方便的管理。如果主库挂了,一个Change master命令即可;想暂时停更新,stop slave、start slave。

e)       更方便的扩展。 直接利用MySQL数据库的级联主从。

当然还有读binlog方案无法实现的同步选择。

4、 其他

不限于tair,只是举例。

如果后端是一个可靠存储,如TFS,则可以当作一个存储表来使用,读写都是SQL接口。与直接更新TFS有什么区别?简单说一个,可以直接跟MySQL里的实体表做join操作。

原文地址:https://www.cnblogs.com/shishitongbu/p/11019754.html

时间: 2024-08-11 08:30:54

MySQL数据库异构数据同步–后端以tair为例的相关文章

java连接MySQL数据库 json数据前后端交互

先在下图文件夹中导入相应的jar包,其中第一个红框中的是使用json数据必须导入的两个包,上面5个jar包也是json包,看情况添加,第二个红框是用JDBC连接MySQL数据库必须的包. 连接MySQL的工具类: package com.XXXXXX.util; import java.sql.Connection; import java.sql.DriverManager; public class MysqlUtil { private static Connection conn = n

多台服务器之间如何让sqlserver,mysql数据库进行数据同步?

服务器存储视频,带宽不够用,想用多台服务器,如何让所有服务器之间视频实时同步,可以用什么软件!当企业租用服务器,但是在数据同步的时候,又有着严格的要求,要求数据达到一致,在科技发达的今天,这又该如何做到了?下面天下数据为大家介绍多台服务器之间让数据同步的方法! 1.采用高可用sureHA软件镜像型,一台主服务器,一台备服务器,通过心跳线(网线)实时将数据备份,实现服务器双机互备的功能,此方式保证多台服务器之间数据的一致性. 2.采用高可用sureHA双机热备共享型.一台主服务器,一台备服务器,链

MySQL数据库实现主从同步数据

MySQL数据库实现主从同步数据 参考链接: http://www.cnblogs.com/wxf020412/archive/2007/09/25/905628.html http://369369.blog.51cto.com/319630/790921 1.说明 利用数据库本身的数据同步机制实现数据同步,还可以通过备份数据库目录实现,以及通过第三方同步工具实现. 2.准备好两台以上MySQL数据库 ①.最好版本一致 3.主数据库配置 ①. 打开mysql的配置文件(windows)my.i

配置mysql数据库的主从同步实验

mysql数据库的主从同步实验 一. 实验环境部署 主服务器(mysql  master) IP: 192.168.8.241  端口3306 从服务器(mysql  slave)  IP: 192.168.8.242  端口3306 虚拟机配置:内存2G,硬盘28G,2块网卡(1块网卡也可以),注意复制虚拟机 时候选择生成不同的MAC地址,虚拟机生成之后,网卡的的名称会变为eth2.eth3,修改/etc/udev/rules.d/70-persistent-net.rules文件,将无效的M

Zabbix 检测Mysql数据库的主从同步

Zabbix 检测Mysql数据库的主从同步 在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节. MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个. Slave_io_Running:yes Slave_SQL_Running: ye

Mysql数据库主从不同步解决案例

问题说明:做了Mysql的主从,还没做主从分离,导致同事在mysql从服务器执行了写入操作,引起不同步(show slave status\G:Slave_SQL_Running: No) 解决方法: 1, Mysql > slave stop; Mysql > set global sql_slave_skip_counter =1 ; Mysql > slave start; Mysql > show slave status\G 因为插入的数据不止是1条,操作太慢且麻烦 2,

mysql数据库的主从同步,实现读写分离 g

https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master主服务器的配置 2.1 配置文件my.cnf的修改 2.2 创建从服务器的用户和权限 2.3 重启mysql服务 2.4 查看主服务器状态 3 slave从服务器的配置 3.1 配置文件my.cnf的修改 3.2 重启mysql服务 3.3 连接master主服务器 3.4 启动slave数据同步

mysql数据库delete数据时不支持表别名

今天在帮同事查看一条删除的SQL语句执行出错的问题 SQL语句如下: 1 DELETE FROM LEAD_SYSTEM_MENU_ORG_REF as t WHERE t.resourceid='4028812348f28b890148f29253a80000' 这条SQL语句放到Oracle数据库中去执行是可以正常执行的,但是放到MySQL数据库中执行时就出现了如下的错误: 1 [Err] 1064 - You have an error in your SQL syntax; check

MySQL数据库的数据文档

在MySQL数据库中,配置文档my.ini默认存放在C:/Program Files/MySQL/MySQL Server 5.5中,打开配置文档找出下面几行信息 #Path to installation directory. All paths are usually resolved relative to this.basedir="C:/Program Files/MySQL/MySQL Server 5.5/"    #数据库的安装路径 #Path to the datab