Mysql中的锁
全局锁
:对整个数据库实例加锁
- 全库逻辑备份:
- 针对
MyISAM
做全库逻辑备份,只能用FTWRL
方式,在备份时不能更新- 补充:MyISAM这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,破坏了数据一致性
- 针对
innodb
备份,可以使用mysqldump –single-transaction
在备份时可以更新- 补充:通过启动一个事务来确保拿到一致性视图。而由于 MVCC 的支持,这个过程中数据是可以正常更新的
- 针对
- 全库只读设置:
Flush tables with read lock
- FTWRL,连接周期内有效,如果连接断开会自动释放库锁
set global readonly=true
- 全局生效,连接断开也不会自动修改readonly状态
- 常用来做主从库判断
- 备份操作不建议使用,如果备份客户端断开连接,整个库会一直维持不可写状态
- 备份补充说明:
- 物理备份:使用binlog
- binlog记录了对数据库执行的所有更改,增量数据
- 日志格式是二进制
- 逻辑备份:使用mysqldump
- 提供数据库对应时间点的完整的数据快照,当前时间点的全量数据
- 格式是快照形式
- 物理备份:使用binlog
2025年6月17日...大约 12 分钟