前言

大家在日常的工作中,备份数据其实是信息安全管理重要的工作之一。那么,我们在这篇文章中将介绍一下数据库的备份与恢复。MySQL 数据库的备份同时有多种方式。第一:直接打包数据库文件夹/etc/local/mysql/data,或者我们使用工具来进行备份。

1、备份数据库

通过mysqldump命令可以将指定的库、指定的表或全库导出为SQL脚本。当需要升级MySQL服务器时,可以将原有的库信息导出,然后直接在升级后的MySQL服务器中导入。

执行导出操作

使用命令mysqldump导出数据时,默认会直接在终端显示。若要保存到文件,还需要结合>重定向输出的操作。

语法基本格式

1)导出指定库中的部分表。

mysqldump [选项] 库名 [表名 1] [表名 2] ··· > /备份路径/备份文件名

2)导出一个或多个完整的库,包括所有表。

mysqldump [选项] --databases 库名 1 [库名 2] ··· > /备份路径/备份文件名

3)备份 MySQL 服务器中的所有库

mysqldump [选项] --all-databases > /备份路径/备份文件名

常用的选项包括-u,-p,分别用于指定数据库用户名和密码。

将采用上述语法基本格式 1,将MySQL库中的user表导出为mysql-user.sql文件,并采用语法基本格式 2,将整个auth库导出为auth.sql文件,两种语法基本格式的所有操作都需要root用户进行验证。

[root@localhost ~]# mysqldump -u root -p mysql user > mysql-user.sql
Enter password:
[root@localhost ~]# mysqldump -u root -p --databases auth > auth.sql
Enter password:

当要备份整个MySQL服务器中的所有库时,可采用上述语法基本格式 3,当导出的数据量较大时,可添加选项–opt来进行优化执行速度。

将创建备份文件all-data.sql,且其中包括MySQL服务器中的所有库。

[root@localhost ~]# mysqldump -u root -p --opt --all-databases > all-data.sql
Enter password:

查看备份文件内容

通过工具mysqldump导出的SQL脚本是文本文件,/···/或–开头的部分表示注释信息。

使用grep,less,cat等工具可查看详细的脚本内容。

将过滤出auth.sql脚本中的数据库操作语句。

[root@localhost ~]# grep -v "^--" auth.sql | grep -v "^/" | grep -v "^$"
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `auth` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `auth`;
DROP TABLE IF EXISTS `servers`;
CREATE TABLE `servers` (`Server_name` char(64) NOT NULL,`Host` char(64) NOT NULL,`Db` char(64) NOT NULL,`Username` char(64) NOT NULL,`Password` char(64) NOT NULL,`Port` int(4) DEFAULT NULL,`Socket` char(64) DEFAULT NULL,`Wrapper` char(64) NOT NULL,`Owner` char(64) NOT NULL,PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
LOCK TABLES `servers` WRITE;
UNLOCK TABLES;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`user_name` char(16) NOT NULL,`user_passwd` char(48) DEFAULT '',PRIMARY KEY (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `users` WRITE;
INSERT INTO `users` VALUES ('jacktian','*B2B366CA5C4697F31D4C55D61F0B17E70E5664EC');
UNLOCK TABLES;

2、恢复数据库

在恢复时,可通过命令mysql对其进行导入。

语法基本格式

mysql [选项] [库名] [表名] < /备份路径/备份文件名

当备份文件中只包含表的备份,不包含库的语句时,则需要在导入时必须指定库名,且目标库必须存在。

可以从备份文件mysql-user.sql中将表导入test库。

[root@localhost ~]# mysql -u root -p test < mysql-user.sql
Enter password:
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.5.22-log Source distributionCopyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use test;                                   ## 验证导入结果
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)mysql>

若备份文件中已经包括了完整的库信息,则执行导入操作时无须指定库名,可以从备份文件auth.sql恢复auth库。

[root@localhost ~]# cd /usr/local/mysql/data/
[root@localhost data]# ls
auth     ib_logfile0  localhost.err  mongodb  mysql-bin.000001  mysql-bin.000003  mysql-bin.index  performance_schema
ibdata1  ib_logfile1  localhost.pid  mysql    mysql-bin.000002  mysql-bin.000004  mysql.error.log  test
[root@localhost data]# mv auth /tmp/                           ## 移动 auth 库,进行模拟故障操作。
[root@localhost data]# ls -ld auth
ls: 无法访问auth: 没有那个文件或目录
[root@localhost data]# mysql -u root -p < ~/auth.sql           ## 执行导入恢复操作。
Enter password:
ERROR 1050 (42S01) at line 63: Table '`auth`.`users`' already exists
[root@localhost data]# ls -ld auth                             ## 确认恢复后的结果。
drwx------. 2 mysql mysql 4096 8月   1 05:17 auth
[root@localhost data]#

参考链接 :

MySQL | MySQL 数据库系统(四)- 数据库的备份与恢复 : https://mp.weixin.qq.com/s/rNIIXpTkvXjedBNlGTl3_g

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAwMjg1NjY3Nw==&action=getalbum&album_id=1336981987902717953&subscene=&scenenote=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzAwMjg1NjY3Nw%3D%3D%26mid%3D2247487008%26idx%3D2%26sn%3D91d8cdbe14164ce4cdf0f5cbef47f18d%26key%3Dd15d59280c22c89d9fba480ac906b2dda669adc79ac6545ee4f3b29c5a8d5db59e477411e19cd6d69c1eae1b811063063940e7f9ab2a232db5e21cf923a8f2fa9e89bf06a25ece6d8b47d210310501b6%26ascene%3D1%26uin%3DMTI1MjI0NDMwNQ%253D%253D%26devicetype%3DWindows%2B7%2Bx64%26version%3D62090070%26lang%3Dzh_CN%26exportkey%3DA8GKSNq38%252B5yW3r7yFYWeGA%253D%26pass_ticket%3D1R%252BU4%252FTI6B1mA0911XhGiPjt%252Bj5pV1zfJaK4RDV%252BQ9zez1Zu5XWoVLLOlGXxQUa1%26winzoom%3D1#wechat_redirect

MySQL | MySQL 数据库系统(一) https://mp.weixin.qq.com/s?__biz=MzAwMjg1NjY3Nw==&mid=2247487019&idx=1&sn=f0117cd6772af05f25d12f1716492ff5&source=41#wechat_redirect

MySQL | MySQL 数据库系统(二)- SQL语句的基本操作 https://mp.weixin.qq.com/s?__biz=MzAwMjg1NjY3Nw==&mid=2247487014&idx=2&sn=d2406f1980fd33d3412fd828e2ee4d2a&source=41#wechat_redirect

MySQL | MySQL 数据库系统(四)- 数据库的备份与恢复相关推荐

  1. MySQL数据库之备份与恢复

    目录 引言 一.MySQL日志管理 1.日志的类型与作用 redo 重做日志 undo 回滚日志 errorlog 错误日志 slow query log 慢查询日志 bin log 二进制日志 re ...

  2. 数据库系统、数据库、数据库管理系统简介,MySQL等服务器的比较

    一.数据库系统.数据库.数据库管理系统 DBS包括DB和DBMS. 1.DBS是Database System的缩写,数据库系统. 2.DB是database的缩写,数据库. 3.DBMS是Datab ...

  3. 查看mysql数据库版本_MySQL数据库之查看MySQL版本的四种方法

    本文主要向大家介绍了MySQL数据库之查看MySQL版本的四种方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.终端下直接使用mysql命令 [root@localhos ...

  4. MySql(四):备份与恢复

    一.数据库备份使用场景 下面我就列举一下我个人理解的我们能够需要用到数据库备份的一些比较常见的情况吧. a.数据丢失应用场景 1.人为操作失误造成某些数据被误操作: 2.软件BUG 造成数据部分或者全 ...

  5. mysql 数据库增量备份与恢复

    文章目录 前言 一:数据库备份的分类 1.1:数据丢失的原因有哪些? 1.2:从物理与逻辑的角度,如何分类备份? 1.3:从数据库的备份策略角度,如何分类备份? 二:如何实现MySQL增量备份? 2. ...

  6. Mysql 使用企业级MEB进行数据库物理备份与恢复

    在免费下载并使用的MySQL开源社区版本中,默认并不包含MEB(MySQL Enterprise Backup,MySQL企业版备份工具)物理热备工具,因为它是一款Oracle自研的企业级软件,用户需 ...

  7. mysql数据库的备份与恢复PPT_mysql数据库的备份与恢复

    mysql数据库的备份与恢复 mysqldump命令用于备份数据库数据 格式为:mysqldump [参数][数据库名称] 如果是用mysqldump 来做备份.那么备份用户的相关权限如下: crea ...

  8. Mysql数据库增量备份与恢复

    一.MySQL 增量备份概念 使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长. 而增量备份就是备份自上一次备份之后增加或改变的文件或内容. 1.增量备份的特点: ...

  9. mysql安全实验测验答案_实验四∶数据库安全性实验报告.doc

    资源描述 1 / 2实验四:数据库安全性班级:软件工程 0918 姓名:许啸 学号:0911610819[实验目的] :验证数据库安全性[实验要求] :1)新建一个登陆名为 tom,密码为 tom00 ...

最新文章

  1. 一部手机失窃而揭露的黑色产业链
  2. 甘肃宕昌山货“触网”外销:山民乐衷创业“等客来”
  3. anaconda python 版本对应关系
  4. 第二十二讲 延迟定理
  5. SQL Server 临时表
  6. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...
  7. Jlink无法识别CPU/lpc2103/lpc2131
  8. 2018-03-28 从人机交互角度看中文编程:#39;打开微信#39;
  9. 入门讲解:使用numpy实现简单的神经网络(BP算法)
  10. JUST——简单转换下的JSON
  11. map排序;MD5加密
  12. PHP —— 识别运算符实现逻辑比较
  13. 304902阿里巴巴Java开发手册1.4.0
  14. 剑指offer面试题63. 股票的最大利润(动态规划)
  15. lammps计算的应力的方法
  16. matlab基础(一):matlab中矩阵的基本运算
  17. re模块或正则表达式
  18. fclk if总线_技嘉B550手把手超频指南,光威血影为例
  19. Java多线程面试知识点汇总(超详细总结)
  20. 探寻微博背后的大数据原理:微博推荐算法简述

热门文章

  1. python3 range函数_为什么python3中的xrange函数不能用
  2. html在线查看ppt,网页设计———HTML基本标记.ppt
  3. 超级计算机预报威海雨雪,威海历史天气预报查询_2018年12月份威海天气记录_威海2018年12月份天气情况_天气后报...
  4. 查询oracle表空间有什么数据,oracle查询表空间使用情况与查询有哪些数据库实例在运行...
  5. 人工智能在计算机视觉方面的应用3000字,人工智能之计算机视觉应用专题报告.pptx...
  6. mvc php 分页,MVC+jQuery.Ajax异步实现增删改查和分页_jquery
  7. php截取3位数,使用php实现截取指定长度
  8. 多线程并发-java内存模型和计算机基础
  9. arcengine动态显示所需字段值
  10. ajax同步异步问题