备份锁¶
雷竞技下载官网用于MySQL的Percona服务器提供了为备份锁定表语句作为轻量级的替代用读锁刷新表用于物理备份和逻辑备份。
请注意
的雷竞技下载官网用于MySQL的Percona服务器8.0.13-4,为备份锁定表要求BACKUP_ADMIN特权。
为备份锁定表¶
为备份锁定表使用新的MDL锁类型来阻止对所有表的非事务性表和DDL语句的更新。如果有活动为备份锁定表然后锁定所有DDL语句和所有更新到MyISAM, CSV, MEMORY, ARCHIVE,TokuDB,MyRocks中的表将被阻塞等待备份锁状态,可见于PERFORMANCE_SCHEMA或PROCESSLIST.
为备份锁定表没有影响选择查询所有提到的存储引擎。反对InnoDB,MyRocks、黑洞表和联邦表为备份锁定表是否适用于插入,取代,更新,删除黑洞表显然与备份无关,而联邦表会被逻辑和物理备份工具忽略。
不像用读锁刷新表,为备份锁定表不刷新表,即存储引擎不会被迫关闭表,并且表不会从表缓存中删除。结果,为备份锁定表只等待冲突语句完成(即DDL和对非事务性表的更新)。它从不等待select或update到InnoDB或MyRocks例如,要完成的表。
如果在持有的连接中执行“不安全”语句为备份锁定表锁定,它失败与以下错误:
预期的输出
错误1880 (HY000):无法执行查询,因为您有一个冲突的备份锁。UNLOCK TABLES释放lock TABLES FOR backup获得的锁。
的预期用例雷竞技下载官网Percona XtraBackup是:
锁定备份表…复制。frm, MyISAM, CSV等. ...解锁表……获取binlog坐标... ...等待重做日志复制完成…
特权¶
的为备份锁定表要求BACKUP_ADMIN特权。
与其他全局锁交互¶
的为备份锁定表如果当前连接已经拥有用读锁刷新表锁,因为它是一个限制性更强的锁。如果用读锁刷新表是否在已获得的连接中执行为备份锁定表,用读锁刷新表失败,报错。
如果服务器运行在只读模式(即read_only设置为1),对于备份不安全的语句将被阻塞或失败并报错,这取决于它们是否在拥有的连接中执行为备份锁定表锁或其他连接。
MyISAM索引和数据缓冲¶
MyISAM键缓冲通常是透写的,即每次更新到MyISAM表完成后,所有索引更新都写入磁盘。唯一的例外是延迟键写入功能,默认情况下是禁用的。
当全局系统变量delay_key_write设置为所有,所有的键缓冲区MyISAM更新之间不会刷新表,因此这些表的物理备份可能会导致损坏MyISAM索引。为了防止这种情况,为备份锁定表如果delay_key_write设置为所有.尝试将delay_key_write设置为所有当存在活动备份锁时,备份锁也会失败并报错。
涉及延迟密钥写入的另一种选择是创建MyISAM并将DELAY_KEY_WRITE变量设置为在(这是默认值)。在这种情况下,为备份锁定表将无法阻止过期索引文件出现在备份中。建议用户将delay_key_writes设置为从在配置文件中my.cnf,或修理MyISAM从使用备份锁创建的物理备份恢复后的索引。
MyISAM也可以缓存数据批量插入,例如,当执行多行插入或加载数据语句。但是,这些缓存在语句之间被刷新,因此只要所有语句更新,就不会对物理备份产生影响MyISAM表被阻塞。
mysqldump命令¶
, mysqldump还扩展了一个新的选项,lock-for-backup(默认禁用)。当与the一起使用时——单独的事务选项,选项使, mysqldump问题为备份锁定表在开始转储操作之前,以防止通常会导致不一致备份的不安全语句。
当没有——单独的事务选项,lock-for-backup自动转换为lock-all-tables。
的选项lock-for-backup是相互排斥的lock-all-tables,即在命令行上同时指定两者将导致错误。
如果目标服务器不支持备份锁特性,但是lock-for-backup在命令行上指定,, mysqldump以错误中止。
版本相关信息¶
- 8.0.12-1:从该特性进行移植雷竞技下载官网用于MySQL的Percona服务器5.7.
系统变量¶
have_backup_locks¶
| 选项 | 描述 |
|---|---|
| 命令行: | 是的 |
| 配置文件 | 没有 |
| 范围: | 全球 |
| 动态: | 没有 |
| 数据类型 | 布尔 |
| 默认值 | 是的 |
这是一个服务器变量,用于帮助其他实用程序决定可以为服务器实现什么样的锁定策略。在可用时,服务器支持备份锁特性,且变量值始终为是的.
状态变量¶
Com_lock_tables_for_backup¶
| 选项 | 描述 |
|---|---|
| 范围: | 全局/会话 |
| 数据类型 | 数字 |
这个状态变量表示执行相应语句的次数。
客户端命令行参数¶
lock-for-backup¶
| 选项 | 描述 |
|---|---|
| 命令行: | 是的 |
| 范围: | 全球 |
| 动态: | 没有 |
| 数据类型 | 字符串 |
| 默认值 | 从 |
当与the一起使用时——单独的事务选项,选项使, mysqldump问题为备份锁定表在开始转储操作之前,以防止通常会导致不一致备份的不安全语句。