mysql 单向同步 测试数据_运维日记|MySQL数据单向同步方案对比

MySQL数据同步是目前数据库使用中比较常见的场景,其技术成熟,应用广泛。

本文介绍两种基础的数据单向同步方式,以应对不同的场景和需求,对比两种方案的优缺点,总结应用场景。

一、简单的库内表同步场景

此场景的主要特点是数据量不大,结构比较简单,而且没有跨数据库实例的情况,适合使用触发器实现。

这里先对触发器做一个简单的介绍:触发器是存储在数据库目录中的一组SQL语句。每当与表相关联的事件发生时,就会触发SQL触发器语句,从而实现对数据的同步。

9556ae5da7f3f61dde4be348a51a6c73.png

点击此处添加图片说明文字

下面以简单的实例展示如何使用触发器同步数据。

首先,新建两个需要同步的数据库以及相同结构的表:

85dd393987a170f2f067bcb337ec4536.png

点击此处添加图片说明文字

在需要同步的数据库和表上新建一个insert动作之后的触发器:

6abc935d11cb5611f394e17b8b570589.png

点击此处添加图片说明文字

使用 show triggers 查看新建的触发器:

4f7ca88ba38e7b35ad767ed097a5caba.png

点击此处添加图片说明文字

新增数据并测试:

081b724965d965c1ec54158518544f47.png

点击此处添加图片说明文字

这里对temp_db数据库的 temp_for_sync 表新增数据,而temp_db1中的temp_for_sync表也有新增的记录同步过来了,说明insert触发器生效了。

update和delete触发器实例如下:

44f6823d3e8249ab4d8feab6940df0aa.png

点击此处添加图片说明文字

注意:触发器同步来的数据,只能做到单向同步,所以同步来的数据必须是只读的,否则会引发数据一致性问题,此外,对于复杂的业务场景,

触发器可能会造成一定性能问题,所以,这个方案仅适合于简单的同步场景,对于有性能要求或者较为复杂的场景并不适用。

二、使用MySQL的主从同步方法

binlog简介:MySQL的binlog日志作用是用来记录MySQL内部增删改查等对MySQL数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被binlog日志记录。主要用于数据库的主从复制以及增量恢复。

基于binlog的主从同步流程如下:

1.主服务器(master)将变更事件(更新、删除、表结构改变等等)写入二进制日志(master log)。

2.从服务器(slave)的IO线程从主服务器(binlog dump线程)获取二进制日志,并在本地保存一份自己的二进制日志(relay log)

3.从服务器的SQL线程读取本地日志(relay log),并重演变更事件。

下面简要介绍主从同步的配置方法:

主库,本地MySQL服务器 IP: 192.168.99.215

从库,本地MySQL服务器 IP: 192.168.98.159

第一步,配置主库信息:

主库配置,新增以下配置项,完成bin_log的配置:

ae51adebc9cad86b9f8204fee00c412c.png

点击此处添加图片说明文字

这里注意 server-id要唯一。

重启服务并查看主库状态:

acaa9cdc7a81718b5b4a3007a5652481.png

点击此处添加图片说明文字

给从库赋权,以读取binlog从而同步数据:

68b3bbd28fcb7046d327024454d06bc0.png

点击此处添加图片说明文字

主库配置完成。

第二步,配置从库信息:

配置从库信息server_id并重启从库:

fa26b5cfe91c61e090210834b4e58b9a.png

点击此处添加图片说明文字

在主库配置从库关于主库的信息,并开启同步主库:

2423a10e5703b87fc4a4f46845259592.png

点击此处添加图片说明文字

验证同步效果,在主库新建库,表,记录,删除:

90dc55a4323cf39dacb33ce3faeb6634.png

点击此处添加图片说明文字

至此,完成了单向主从同步的基本配置。

f611a6af7c20e095b2b301533e415a3f.png

点击此处添加图片说明文字

三、两种方案的对比

这两种方法都可以实现需求,而且各有优劣:

触发器的实现比较简单,不需要另外新启动一个MySQL实例,对资源的消耗比较小,适合简单的业务场景,缺点在于字段有变更时,需要及时修改表结构,以及触发器的实现。

主从不需要关系表结构的修改,只需要配置,缺点在于需要新启MySQL服务实例,会消耗一定资源,适合业务比较复杂的场景。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CDC(Change Data Capture)是一种数据同步技术,可以实现增量更新数据同步。在MySQL中,可以使用MySQL自带的binlog日志来实现CDC。 binlog日志是MySQL记录数据库操作的日志,包括插入、更新、删除等操作。通过解析binlog日志,可以获取到数据库的增量更新数据,从而实现数据同步。 以下是使用MySQL binlog实现CDC的步骤: 1. 开启binlog日志 在MySQL配置文件中,开启binlog日志。可以通过修改my.cnf文件或在MySQL控制台执行以下语句: ``` set global log_bin=on; ``` 2. 配置binlog格式 MySQL支持三种binlog格式:STATEMENT、ROW和MIXED。为了实现更精确的CDC,建议选择ROW格式。 可以通过修改my.cnf文件或在MySQL控制台执行以下语句: ``` set global binlog_format=row; ``` 3. 配置binlog日志位置 在进行CDC时,需要指定要同步的binlog日志的位置。可以通过执行以下语句查看当前binlog日志的位置: ``` show master status; ``` 输出结果类似于: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | | | +------------------+----------+--------------+------------------+ ``` 其中File表示当前使用的binlog文件名,Position表示当前binlog的位置。记录下这两个值,后面会用到。 4. 解析binlog日志 使用第三方工具(如Canal)或自行开发程序解析binlog日志,并将解析后的数据同步到目标数据库中。 可以根据需要,对解析后的数据进行过滤、转换等操作,以实现更精细化的数据同步。 总之,使用MySQL binlog日志实现CDC,可以实现增量更新数据同步,是一种常用的数据同步技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值