一、逻辑备份恢复
逻辑备份是通过数据库工具读取库内表、数据、视图等逻辑对象,生成 SQL 等文本格式备份文件的备份方式,优势在于备份粒度灵活、支持跨版本跨平台迁移,备份文件便于查看编辑,适合数据迁移、单表恢复、测试环境数据同步;但它备份与恢复速度较慢,会消耗数据库服务器资源,大库场景性能短板明显,数据库实例故障无法启动时无法完成备份,一般不作为大型生产环境的主备份手段,多用于中小型数据库,常配合物理备份使用,作为物理备份的有效补充,实现误删数据回滚、数据迁移等场景需求。
(一)数据备份:分库备份
# 本地备份数据库 [root@db01 backup]# mysqldump -uroot -proot123 --databases test --set-gtid-purged=OFF --single-transaction --triggers --routines --events >/backup/test.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. 说明: -B 备份指定数据库 --databases: 备份数据库 --set-gtid-purged=OFF:按提示解决 GTID 相关的两条 Warning; --single-transaction:按提示保证一致性备份(InnoDB 场景常用,对应提示中的选项之一); --triggers --routines --events:按提示补齐触发器、存储过程/函数、事件,保证 dump 完整。 或者 [root@db01 backup]# mysqldump -uroot -proot123 -B test --set-gtid-purged=OFF --single-transaction --triggers --routines --events >/backup/test.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. #同时备份连个库 [root@db01 backup]# mysqldump -uroot -proot123 -B test testing --set-gtid-purged=OFF --single-transaction --triggers --routines --events >/backup/test_testing.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. # 恢复数据库 # 先连接进入数据库 mysql -u root -proot123 # 选择数据库 use test; #在连接进入数据库执行该命令 mysql> source /backup/test.sql(二)数据备份:远程备份
# 远程数据库备份 [root@db01 backup]# mysqldump -uroot -proot123 -h10.0.0.52 -P3306 --databases testing --set-gtid-purged=OFF --single-transaction --triggers --routines --events>/backup/testing.sql; mysqldump: [Warning] Using a password on the command line interface can be insecure. # 备份数据库脚本 [root@db01 backup]# ll 总用量 1284 -rw-r--r-- 1 root root 2906 10月 15 17:48 testing.sql -rw-r--r-- 1 root root 5621 10月 15 17:31 test.sql(三)数据备份:所有数据库备份与恢复
# 全量所有数据库备份: [root@db01 backup]# mysqldump -uroot -proot123 -A --set-gtid-purged=OFF --single-transaction --triggers --routines --events >/backup/all.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. # 恢复所有数据库 [root@db01 backup]# mysql -uroot -proot123 </backup/all.sql mysql: [