前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >将MySQL复制限制为基于行的事件

将MySQL复制限制为基于行的事件

作者头像
MySQLSE
发布于 2020-09-28 03:39:28
发布于 2020-09-28 03:39:28
1K0
举报

作者:Pedro Gomes 译:徐轶韬

MySQL 8.0.18上进行的后续工作中,我们引入了对从服务器的回放线程进行权限检查功能,在本文中,我们将介绍一项新功能,可以进一步提高安全复制数据的能力,用户可以将复制流限制为仅基于行的事件。

在MySQL 8.0.19中,为复制通道添加了新的CHANGE MASTER参数REQUIRE_ROW_FORMAT,这使该通道仅接受基于行的复制事件。

此要求将通过以下方式提高整体安全性:

  • 不允许复制LOAD DATA指令,因为它们意味着文件将暂时存在于磁盘上,未知用户可以对文件进行篡改或访问以显示在插入时将被加密的数据。
  • 不允许复制临时表和相关数据,因为有可能在主数据中包含敏感的临时数据,例如,用于计算的未加密数据将生成加密数据。
  • 避免出现基于语句的复制流相关的其他常见问题

从安全边界以外的服务器进行复制时,上面这些用例变得更加相关,这意味着它们不在用户的控制范围内,并且可能被未知用户访问。它在扇入用例中非常有用,例如,当想要聚合多个源中的数据,并且仍然希望确保磁盘上没有未加密的敏感数据,或通过临时表错误地复制了这些数据。

对于已经使用受限权限进行复制的用户来说,好处是不再需要向用户授予FILE权限。

行为

在复制通道中启用这个新功能之后,对于接收和回放的所有事务,将进行检查,不允许以下任何一项:

  • LOAD DATA 事件
  • 临时表的创建或删除
  • 大多数INTVARRANDUSER_VAR与基于语句的复制相关联的事件)
  • 为基于语句复制使用而记录的所有数据操作查询(DML)

一旦遇到任何这些事件,复制将失败并停止。

配置

要明确地使通道仅接受基于行的复制,必须完全停止复制。下面是实现它的命令:

必须停止从服务器而不是停止其回放线程的原因是,这些检查都是在从服务器的接收线程和回放线程中进行的,因此它们也适用于已经接收到并存在于中继日志中的事务。

可观察性

Performance Schema表已经进行增强,以显示新的CHANGE MASTER TO…语句选项REQUIRE_ROW_FORMAT的状态

对mysqlbinlog的更改

为了补充此更改,我们还为mysqlbinlog添加了新选项。

有了这个选项,用户能够知道输出对于运行REQUIRE_ROW_FORMAT = 1的通道是有效的。 该选项还可以防止mysqlbinlog打印与内部变量pseudo_thread_id相关的指令。如果配置了权限检查,则仅在基于行的流上不需要这些权限,它们将需要复制回放线程中的额外权限。

摘要

为了保护您的服务器免受基于语句的复制流及其中允许的事件常见的问题,或者只是减少在副本中配置回放程序权限检查所需的权限,REQUIRE_ROW_FORMAT是MySQL服务器的一项有益的功能。

我们希望这项新功能将使用户能够使用MySQL服务器创建更安全的解决方案。欢迎进行测试,并告诉我们您的意见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql 数据库备份和恢复
物理备份是指直接复制包含数据的文件夹和文件。这种类型的备份适用于大数据量且非常重要,遇到问题需要快速回复的数据库。
WindWant
2020/09/11
3.8K0
MySQL 8 复制(三)——延迟复制与部分复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/90642712
用户1148526
2019/07/02
3.9K0
MySQL 8 复制(三)——延迟复制与部分复制
MySQL 8 复制(六)——拓扑与性能
可以在任意个主从库之间建立复杂的复制拓扑结构,如普通的一主一(多)从、双(多)主复制、级联复制,MySQL 5.7.2后新增的多源复制,特殊场景下使用的Blackhole引擎与日志服务器等等。复制中的MySQL服务器须要遵循以下基本原则:
用户1148526
2019/07/11
1.8K0
MySQL 8 复制(六)——拓扑与性能
使用Xtrabackup对MySQL做主从复制
mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷。一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了。Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量、增量、单表备份和还原。(但当数据量更大时,可能需要考虑分库分表,或使用 LVM 快照来加快备份速度了)。 2.2版本xtrabackup能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份,innobackupex通过perl封装了一层xtrabackup,对MyISAM的备份通过加表读锁的方式实现。2.3版本xtrabackup命令直接支持MyISAM引擎。
阿dai学长
2019/04/03
2.3K0
对复制实施主键约束
在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行基于行的事件。
MySQLSE
2020/09/28
9440
对复制实施主键约束
MySQL 8 复制(一)——异步复制
简单说,复制就是将来自一个MySQL数据库服务器(主库)的数据复制到一个或多个MySQL数据库服务器(从库)。传统的MySQL复制提供了一种简单的Primary-Secondary复制方法,默认情况下,复制是单向异步的。MySQL支持两种复制方式:基于行的复制和基于语句的复制。这两种方式都是通过在主库上记录二进制日志(binlog)、在从库重放中继日志(relylog)的方式来实现异步的数据复制。二进制日志或中继日志中的记录被称为事件。所谓异步包含两层含义,一是主库的二进制日志写入与将其发送到从库是异步进行的,二是从库获取与重放日志事件是异步进行的。这意味着,在同一时间点从库上的数据更新可能落后于主库,并且无法保证主从之间的延迟间隔。
用户1148526
2019/05/25
5.2K0
MySQL8 中文参考(八十)
当您为半同步复制安装源和复制品插件时(参见 Section 19.4.10.1,“安装半同步复制”),系统变量变得可用以控制插件行为。
ApacheCN_飞龙
2024/06/26
1880
MySQL8 中文参考(八十)
MySQL8.0.30 release note 中文翻译(详细版)
MySQL8.0.30已经正式GA好几天了,为大家翻译一下release note。由于内容比较长,部分内容机器翻译。重点内容有校对。
DBA札记
2022/08/16
2.1K0
mysql复制
一、复制的意义 mysql的复制功能是构建基于MySql大规模,高性能应用的基础,我们可以通过为服务器配置一个或多个备库来进行数据同步;复制功能不仅有利于构建高性能的应用,同时也是高可用性,可扩展行,灾难恢复,备份以及数据仓库等工作的基础 二、复制的方式 Mysql支持3种方式:基于语句的复制、基于行的复制、混合复制。对应的binlog的格式也有三种:STATEMENT,ROW,MIXED (1)基于语句的复制(SBR) 每一条会修改数据的sql语句会记录到binlog中。优点是不需要记录每一条sql语句和
magicsoar
2018/02/06
2.7K0
MySQL 8 复制(四)——GTID与复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/91047395
用户1148526
2019/07/02
4.1K0
MySQL 5.7中的新功能
(1)在MySQL 8.0中,caching_sha2_password是默认的验证插件。为了使MySQL5.7能够使用使用caching_sha2_password进行身份验证连接到8.0服务器,MySQL 5.7客户端库和客户端程序从MySQL 5.7.23开始支持caching_sha2_password客户端身份验证插件。这提高了MySQL 5.7与MySQL 8.0和更高版本服务器的兼容性。请参见第6.4.1.5节“缓存SHA-2可插入认证”。
全栈程序员站长
2022/07/11
2.2K0
使用mysqlbinlog提取二进制日志
    MySQL binlog日志记录了MySQL数据库从启用日志以来所有对当前数据库的变更。binlog日志属于二进制文件,我们可以从binlog提取出来生成可阅读的SQL语句来重建当前数据库以及根据需要实现时点恢复或不完全恢复。本文主要描述了如果提取binlog日志,并给出相关示例。
Leshami
2018/08/13
1.9K0
MySQL日志管理
一、日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件记入文件中的信息类型错误日志记录启动、运行或停止时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的语句。主要用于复制和即时点恢复。慢日志记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。事务日志记录InnoDB等支持事务的存储引擎执行事务时产生的日志。 默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制 mysqld来
小小科
2018/05/04
1.7K0
新特性解读 | MySQL 8.0.23 主要更新一览
爱可生交付服务部 DBA,主要负责 MySQL 及 Redis 的日常问题处理,参与公司数据库培训的教研授课及开源社区的运营工作。
爱可生开源社区
2021/02/01
7790
MySQL8.0.20 正式发行(GA)
MySQL的最新版本8.0.20正式发行。与之前8.0的系列版本一样,这次的发行版,除了包含缺陷修复,也同样包扩新功能。让我们快速浏览一下。
田帅萌
2020/04/30
6580
MySQL8.0.20 正式发行(GA)
MySQL 8 复制(五)——配置GTID复制
上篇解释了许多GTID的原理,以及在MySQL复制中所起的作用,并且进行了很多实验加以辅助说明。本篇演示如何从头开始一步步配置GTID复制。实验环境同https://wxy0327.blog.csdn.net/article/details/90081518#%E4%BA%8C%E3%80%81%E5%A4%8D%E5%88%B6%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83。这里只讨论在联机情况下进行配置,因为相对于空库或脱机等理想情况,联机配置复制的需求更为典型和常见。
用户1148526
2019/07/02
4.5K0
MySQL 8 复制(五)——配置GTID复制
2-MYSQL配置文件参数说明
(1) mysql (2) mysqldump (3) mysqlbinlog (4) mysqladmin (5) mysqlsafe (6) mysqlshow (7) mysqld
全栈工程师修炼指南
2022/09/28
6430
MySQL复制
复制是从一个MySQL服务器(master)将数据拷贝到另外一台或多台MySQL服务器(slaves)的过程.复制是异步进行的–slaves服务器不需要持续地保持连接来接收master的数据.依据配置的不同,可以复制所有数据库,或指定的数据库,甚至是某一数据库指定的表.
全栈程序员站长
2022/07/15
2.1K0
MySQL 8.0.20的复制增强功能
我们刚刚发布了MySQL 8.0.20。它包含一些有趣的复制增强功能。特别值得一提的一项重要功能:二进制日志压缩。以下是此版本中的内容列表:
MySQLSE
2020/09/28
7190
MySQL8 中文参考(二十二)
本节描述了如何安装或卸载ddl_rewriter插件。有关安装插件的一般信息,请参见 Section 7.6.1,“安装和卸载插件”。
ApacheCN_飞龙
2024/06/26
2050
MySQL8 中文参考(二十二)
相关推荐
mysql 数据库备份和恢复
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档