mysqldump逻辑备份实战:全库、单库、多库与表级备份

来自AI助手的总结
介绍MySQL全库、单库及单表备份恢复命令与实践
mysqldump逻辑备份实战:全库、单库、多库与表级备份

一、数据库全库备份操作练习实践命令

将数据库中所有数据库全部备份(-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
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容