一、全局锁
- 是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新的操作的事务提交语句都将被阻塞,其使用的典型场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据完整性
flush tables with read lock;
unlock tables
在进行主从备份的时候,如果在主库上加全局锁,则整个数据库将不能写入,备份期间影响业务运行;如果在从库上加全局锁,则会导致不能执行主库同步过来的操作,造成主从延迟
- 对于innodb这种支持事务的引擎,使用mysqldump备份时可以使用–single-transaction参数,利用mvcc提供一致性视图,而不使用全局锁,不会影响业务的正常运行