前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL数据安全保障实战指南:备份与恢复技术详解

MySQL数据安全保障实战指南:备份与恢复技术详解

原创
作者头像
神秘泣男子
发布2025-01-03 16:07:14
发布2025-01-03 16:07:14
15800
代码可运行
举报
运行总次数:0
代码可运行

在数据库运维中,备份是一项基础且重要的工作。本文将详细介绍如何使用mysqldump工具进行不同场景下的数据库备份和恢复操作,从单表备份到全库备份,一步步带您掌握这个重要的技能。

1. 测试环境准备

首先让我们看看测试环境的数据状态:

代码语言:sql
复制
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

mysql> use test;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| person         |
| users          |
+----------------+

准备测试数据

实用建议

  1. 命名规范:建议在备份文件名中包含日期信息,便于管理
代码语言:sql
复制
$(date +%F)  # 自动添加当前日期

1.备份数据库中表(备份单个表)

备份单个表的时候 恢复的时候记得带上数据库名称

方式1:只备份test数据库的person表

代码语言:sql
复制
mysqldump -uroot -p'Abc-1234' test person > /backup/test_person.sql

查看是否正确备份完毕

删除数据库中表(模拟丢失)

代码语言: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库名字)

代码语言:sql
复制
[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表单

代码语言:sql
复制
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数据库(备份多个表)

方式2:备份整个test数据库

备份库中所有表单

代码语言:javascript
代码运行次数:0
复制
mysqldump -u root -p --databases test > /backup/test_full_$(date +%F).sql

删除test数据库的所有表单(模拟丢失)

代码语言: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)

恢复数据库中所有表

代码语言:sql
复制
[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.

查看数据

代码语言:sql
复制
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.备份所有数据库

方式3:备份所有数据库

备份所有数据库

代码语言:sql
复制
[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:将备份导出到指定文件

删除数据库(模拟丢失)

我删除了三个数据库

代码语言: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)

恢复ALL数据库

代码语言:sql
复制
[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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 测试环境准备
  • 1.备份数据库中表(备份单个表)
    • 删除数据库中表(模拟丢失)
    • 恢复数据库中表
  • 2.备份整个test数据库(备份多个表)
    • 备份库中所有表单
    • 删除test数据库的所有表单(模拟丢失)
    • 恢复数据库中所有表
  • 3.备份所有数据库
    • 备份所有数据库
    • 删除数据库(模拟丢失)
    • 恢复ALL数据库
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档