在数据库运维中,备份是一项基础且重要的工作。本文将详细介绍如何使用mysqldump工具进行不同场景下的数据库备份和恢复操作,从单表备份到全库备份,一步步带您掌握这个重要的技能。
首先让我们看看测试环境的数据状态:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
mysql> use test;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| person |
| users |
+----------------+
准备测试数据
实用建议
$(date +%F) # 自动添加当前日期
备份单个表的时候 恢复的时候记得带上数据库名称
方式1:只备份test数据库的person表
mysqldump -uroot -p'Abc-1234' test person > /backup/test_person.sql
查看是否正确备份完毕
mysql> drop table test.person;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from test.person;
ERROR 1146 (42S02): Table 'test.person' doesn't exist
如果是备份一个表单的话 (恢复的时候记得带上 test库名字)
[root@localhost ~]# mysql -uroot -p'Abc-1234' test < /backup/test_person.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
这个时候就已经恢复完毕 test库下的person表单
mysql> select * from test.person;
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | San | 19 |
| 2 | mike | 23 |
| 3 | li | 20 |
+------+------+------+
3 rows in set (0.00 sec)
方式2:备份整个test数据库
mysqldump -u root -p --databases test > /backup/test_full_$(date +%F).sql
mysql> drop table person;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table users;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
[root@localhost ~]# mysql -uroot -p'Abc-1234' < /backup/test_all_2025-01-02.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
查看数据
mysql> show tables; #没有恢复之前是没有表单的
Empty set (0.00 sec)
mysql> show tables; #恢复之后就回来了原有的数据
+----------------+
| Tables_in_test |
+----------------+
| person |
| users |
+----------------+
2 rows in set (0.00 sec)
mysql> select * from person; #数据并没有影响
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | San | 19 |
| 2 | mike | 23 |
| 3 | li | 20 |
+------+------+------+
3 rows in set (0.00 sec)
方式3:备份所有数据库
[root@localhost ~]# mysqldump -u root -p --all-databases > /backup/all_databases_$(date +%F).sql
Enter password:
# 使用 --all-databases 参数备份所有数据库
--databases
:用于备份整个数据库--all-databases
:备份所有数据库-u
:指定用户名-p
:指定密码> file.sql
:将备份导出到指定文件我删除了三个数据库
mysql> drop database sys;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database smqnz;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database test;
Query OK, 2 rows affected (0.01 sec)
[root@localhost ~]# mysql -uroot -p'Abc-1234' < /backup/all_databases_2025-01-02.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
mysqldump是一个强大且灵活的备份工具,可以满足从单表到全库的各种备份需求。通过本文的实例,我们展示了三种常见的备份场景及其恢复方法。在实际工作中,建议根据数据量大小和业务重要性,选择合适的备份策略,并确保备份的自动化和定期测试。记住,有效的备份策略不仅仅是创建备份,更重要的是确保能够在需要时正确恢复数据。
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。