面试题答案
一键面试采用的技术/方法
- 使用
FLUSH TABLES WITH READ LOCK
(FTWRL):- 原理:该命令会刷新所有表并锁定,阻止新的写操作,同时等待当前所有读操作完成,从而确保在备份期间数据处于一个一致性的状态。
- 操作步骤:
- 首先,使用
mysql
客户端连接到 MySQL 数据库。 - 执行
FLUSH TABLES WITH READ LOCK;
命令,此时数据库表被锁定,处于只读状态。 - 接着执行备份操作,例如使用
mysqldump
命令进行备份:mysqldump -u username -p --all -databases > backup.sql
。 - 备份完成后,执行
UNLOCK TABLES;
解锁表,恢复数据库的读写操作。
- 首先,使用
- 使用
InnoDB
的START TRANSACTION WITH CONSISTENT SNAPSHOT
:- 原理:
InnoDB
存储引擎支持多版本并发控制(MVCC),通过这个语句开启一个事务,并获取一个一致性快照,备份操作基于这个快照进行,所以能保证备份数据的一致性,期间其他事务的读写操作不受影响。 - 操作步骤:
- 连接到 MySQL 数据库。
- 执行
START TRANSACTION WITH CONSISTENT SNAPSHOT;
开启一致性快照事务。 - 执行备份操作,如
mysqldump -u username -p --single -transaction --all -databases > backup.sql
,其中--single -transaction
选项告诉mysqldump
使用一个事务来进行备份。 - 备份完成后,执行
COMMIT;
提交事务。
- 原理:
- 利用
MySQL
的Replication
机制:- 原理:通过设置主从复制,在从库上进行备份。从库会复制主库的数据和二进制日志,并且应用这些日志以保持与主库的数据一致性。在备份从库时,不会影响主库的正常读写操作,同时从库的数据处于相对稳定的状态,可保证备份数据的一致性。
- 操作步骤:
- 主库配置:
- 编辑主库的
my.cnf
文件,配置server - id
(唯一标识),启用二进制日志(log - bin
)等相关参数。 - 重启 MySQL 服务使配置生效。
- 使用
SHOW MASTER STATUS;
记录主库的二进制日志文件名和位置。
- 编辑主库的
- 从库配置:
- 编辑从库的
my.cnf
文件,设置不同的server - id
。 - 重启 MySQL 服务。
- 使用
CHANGE MASTER TO
语句配置主库的连接信息,包括主库的主机名、用户名、密码、二进制日志文件名和位置。 - 执行
START SLAVE;
启动从库复制。 - 使用
SHOW SLAVE STATUS \G;
确保从库复制状态正常。
- 编辑从库的
- 备份操作:在从库上执行备份命令,如
mysqldump
进行备份。
- 主库配置: