来自AI助手的总结
介绍MySQL全库、单库及单表备份恢复命令与实践

一、数据库全库备份操作练习实践命令
将数据库中所有数据库全部备份(-A)
本机进行备份
-- 利用mysqldump命令备份的数据文件是纯文本文件,是可以进行查看或过滤的;下面warning内容是因为gtid开启的原因导致,可以不用管
[root@db01-51 ~]# mysqldump -uroot -p123456 -A >/database_backup/all_database.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
-- 如果想消除上面告警提示,则可使用--single-transaction和--set-gtid-purged=OFF这两个参数
[root@db01-51 ~]# mysqldump -uroot -p123456 --single-transaction --set-gtid-purged=OFF -A > /database_backup/all_database.sql
-- 验证查看
[root@db01-51 ~]# ll -h /database_backup/all_database.sql
-rw-r--r-- 1 root root 49M Mar 10 12:07 /database_backup/all_database.sql
相关参数说明:
-
–single-transaction:保证Innodb引擎一致性备份及实现无锁热备份
-
–set-gtid-purged=OFF:设置 GTID 不写入备份文件
说明:利用-A创建数据库备份数据时,在备份数据中会含有 create建库语句和use切换库语句,可以直接进行恢复操作即可;
本机进行备份还原数据
-- 方法一
[root@db01-51 ~]# source /database_backup/all_database.sql
-- 方法二
[root@db01-51 ~]# mysql -uroot -p123456 < /database_backup/all_database.sql
远程机器进行备份
-- 远程机器创建存储目录
[root@db02-52 ~]# mkdir -p /database_backup
-- 备份
[root@db01-52 ~]# mysqldump -uroot -p123456 -h 10.0.0.51 --single-transaction --set-gtid-purged=OFF -A > /database_backup/all_database.sql
-- 验证
[root@db02-52 ~]# ll /database_backup/all_database.sql
-rw-r--r-- 1 root root 51267996 Mar 10 12:21 /database_backup/all_database.sql
远程机器进行备份还原数据
-- 方法一
[root@db01-51 ~]# mysql -uroot -p123456 -h 10.0.0.51 -e "source /database_backup/all_database.sql"
-- 方法二
[root@db01-51 ~]# mysql -uroot -p123456 -h 10.0.0.51 < /database_backup/all_database.sql
二、数据库部分备份操作练习实践命令
2.1 将数据库中单个数据库进行备份(-B)
# 进行数据库单库备份操作
[root@db01-51 ~]# mysqldump -uroot -p123456 -B zq --single-transaction --set-gtid-purged=OFF >/database_backup/zq.sql
# 过滤部分内容后查看备份数据库文件信息:
[root@db01-51 ~]# egrep -vi '^-|^/\*|^$|lock' /database_backup/zq.sql
...
...
DROP TABLE IF EXISTS `test1`;
CREATE TABLE `test1` (
`id` int DEFAULT NULL,
`name` char(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test1` VALUES (1,'a'),(2,'b'),(3,'c');
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
以上指定数据库备份完毕后,可以模拟删除相应数据,利用备份的数据库文件进行数据库恢复操作:
-- 模拟删除数据库中数据表信息,造成数据库中数据损坏
mysql> use zq
mysql> show tables;
+--------------+
| Tables_in_zq |
+--------------+
| t100w |
| test1 |
+--------------+
2 rows in set (0.00 sec)
-- 删除表
mysql> drop table t100w;
-- 查看表
mysql> show tables;
+--------------+
| Tables_in_zq |
+--------------+
| test1 |
+--------------+
1 row in set (0.00 sec)
Empty set (0.00 sec)
# 进行数据库数据复原恢复操作:
# 方式一:在数据库系统中加载数据库备份文件
mysql> source /database_backup/zq.sql;
# 方式二:在操作系统命令行执行数据恢复命令
[root@master ~]# mysql -uroot -p123456 zq </database_backup/zq.sql
# 数据信息恢复完毕后检查数据库情况
mysql> show tables;
+------------------------+
| Tables_in_oldboy |
+------------------------+
| stu2 |
+------------------------+
1 row in set (0.00 sec)
mysql> select * from stu2;
2.2 将数据库中多个数据库进行备份(-B)
[root@master ~]# mysqldump -uroot -p123456 --single-transaction --set-gtid-purged=OFF -B zq world >/database_backup/zq_world.sql
# 过滤部分内容后查看备份数据库文件信息:
[root@master ~]# egrep -vi '^-|^/\*|^$|lock' /database_backup/zq_world.sql
说明:利用-B创建数据库备份数据时,在备份数据中会含有 create建库语句和use切换库语句,可以直接进行恢复操作即可;
多个数据库备份进行还原:
# 方式一:在数据库系统中加载数据库备份文件
mysql> source /database_backup/zq_world.sql;
# 方式二:在操作系统命令行执行数据恢复命令
[root@master ~]# mysql -uroot -p123456 zq </database_backup/zq_world.sql
三、数据表部分备份操作练习实践命令
3.1 将数据库中单个数据表进行备份
# 备份指定数据库中的单个数据表:
[root@master ~]# mysqldump -uroot -p123456 --single-transaction --set-gtid-purged=OFF zq t100w >/database_backup/zq_tables_t100w.sql
# 恢复指定数据库中的单个数据表:
[root@master ~]# mysql -uroot -p123456 zq < /database_backup/zq_tables_t100w.sql
3.2 将数据库中多个数据表进行备份
# 备份指定数据库中的多个数据表:
[root@master ~]# mysqldump -uroot -p123456 --single-transaction --set-gtid-purged=OFF zq t100w test1 >/database_backup/zq_tables_t100w_test1.sql
# 恢复指定数据库中的多个数据表:
[root@master ~]# mysql -uroot -p123456 zq </database_backup/zq_tables_t100w_test1.sql
说明:数据库单表或多表进行数据备份时,在备份数据中不含有create建库语句和use切换库语句,需要建库并指定库再恢复数据;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





暂无评论内容