一、前言

知道备份的重要性吗?没经历过的可能永远不知道,我们在重装系统、手机升级等时候,备份一下必要数据总是有好处的,指不定哪个神操作导致磁盘数据丢失,前些日子删库跑路被判刑的那位老哥,如果公司有备份的话,也不至于损失几个亿(听说是让绿了),所以本章来学习一下MySQL的备份与恢复,如果要定期备份的话,可以写个脚本定时执行,省去人来完成这重复的工作。

我们可以使用以下任何一种方法来生成MySQL数据库的备份:

  1. 使用mysqldump程序
  2. 使用二进制日志

在本文中,会解释如何使用mysqldump生成MySQL数据库的备份。

二、使用mysqldump程序生成备份

Mysqldump是一个命令行程序,用于生成MySQL数据库的备份。他生成的文件可以用于重新创建数据库对象和数据的SQL语句。

mysqldump -u [用户名] –p [密码] [选项] [数据库名] [表名]> [dumpfilename.sql]

参数如下:

-u [用户名]:连接到MySQL服务器的用户名。-p [密码]:MySQL用户的密码[option]:用于自定义备份的配置选项[数据库名称]:要备份的数据库的名称[表名]:这是一个可选参数。如果要获取备份特定表,则可以在命令中指定名称[dumpfilename.sql]:备份文件的路径和名称。

1.生成单个数据库的备份

要生成单个数据库的备份,可以运行以下命令,这个命令将test数据库中的表结构和数据都保存到testdb.sql文件中。

mysqldump -u root -p test >/home/HouXinLin/test/testdb.sql

运行此命令时,会提示您输入密码,输入密码后,将在对应路径生成sql文件,内容如下。

2.生成多个数据库或所有数据库的备份

如果要生成多个数据库的备份,必须在mysqldump命令中添加--databases选项,以下命令将生成具有结构和数据的"test"和"db_score"数据库的备份。

mysqldump -u root -p --databases test db_score test >/home/HouXinLin/test/test_tbscoredb.sql

要生成整个数据库的备份,则需要加--all-databases选项。

mysqldump -u root -p --all-databases  >/home/HouXinLin/test/test_tbscoredb.sql

3.生成数据库结构的备份

如果仅要生成数据库结构的备份,则必须在mysqldump命令中加入–no-data选项,以下命令用于生成test数据库的数据库结构的备份。

mysqldump -u root -p --no-data test >/home/HouXinLin/test/testdb.sql

4.生成特定表的备份

如果仅要生成数据库中某个表的备份,则必须在mysqldump命令中指明表名称,以下命令用于生成test数据库中tb_books表的结构和数据备份。

mysqldump -u root -p  test tb_books >/home/HouXinLin/test/testdb.sql

5.仅生成数据库数据备份

如果要生成仅数据库数据的备份(没有创建表的语句),则必须在mysqldump命令中加入–no-create-info 选项。以下命令生成test数据库的数据备份。

mysqldump -u root -p   --no-create-info test >/home/HouXinLin/test/testdb.sql

生成的sql中,可以看到他只有insert语句,在插入的时候,还进行了锁表。


三、恢复数据

恢复的话比较简单,通过source程序传入sql文件即可,以下是完整的备份、删库,恢复命令。

## 备份mysqldump -u root -p test >/home/HouXinLin/test/testdb.sql

## 删除test数据库drop database test;

## 创建数据库create database test;

## 选择数据库use test;

## 恢复source /home/HouXinLin/test/testdb.sql

四、免密码导出

从上面可以发现在使用mysqldump的时候每次都需要输入密码,当然这是可以避免的

touch ~/.my.cnf

vim  ~/.my.cnf 

然后编辑其内容(编辑完不需要重启),最后在使用mysqldump中一定要取消-p参数。

[mysqldump]user=rootpassword=xxxxx

其实对于这类更改方式,在我心中必须要看到某个文件对这个软件有什么影响的官方文章说明,才会安心,即使知道他确实会对软件有影响,在没看到官方对这个解释前,心中的这石头总是放不下的,所以,我在官网中找到了对一些文件的解释。

文件名 目的
/etc/my.cnf 全局选项
/etc/mysql/my.cnf 全局选项
SYSCONFDIR/my.cnf 全局选项
$MYSQL_HOME/my.cnf 服务器特定的选项(仅服务器)
~/.my.cnf 用户特定的选项
~/.mylogin.cnf 用户特定的登录路径
DATADIR/mysqld-auto.cnf 系统变量使用 SET PERSIST或 SE PERSIST_ONLY保留(仅服务器)
  1. SYSCONFDIR表示在构建MySQL时SYSCONFDIR 使用CMake选项指定的目录。

  2. MYSQL_HOME是一个环境变量,其中包含服务器特定my.cnf文件所在目录的路径。

  3. DATADIR表示MySQL数据目录。用于查找 mysqld-auto.cnf,其默认值是编译MySQL时内置的数据目录位置,但是可以通过--datadir 指定为在处理之前mysqld-auto.cnf处理的选项文件或命令行选项来更改。

五、定时备份

Linux自带一个定时任务系统,可以通过crontab -e进行添加,也可以修改/etc/crontab文件,另外这个服务的最低侦是分钟,也就是无法做到每隔x秒后去执行任务,这个服务会每分钟去读取一次 /etc/crontab 和 /var/spool/cron 里面的数据,在编辑/etc/crontab文件后,只需静静等待即可,下面以/etc/crontab为例子,在文件最后加入每隔1秒执行一次脚本,这需要对cron表达式有所了解。

# /etc/crontab: system-wide crontab# Unlike any other crontab you don't have to run the `crontab'# command to install the new version when you edit this file# and files in /etc/cron.d. These files also have username fields,# that none of the other crontabs do.

SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command17 * * * * root    cd / && run-parts --report /etc/cron.hourly25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )#

*/1 * * * * root  /home/HouXinLin/test/dump.sh

dump.sh

#!/bin/bashmysqldump -u root test >/home/HouXinLin/test/testdb.sql

静静等待1分钟后,在对应的目录就会生成testdb.sql文件。

mysql的每隔1分钟定时_深入研究MySQL(四)、备份与恢复相关推荐

  1. mysql的每隔1分钟定时_简单易用,spring boot集成quartz,实现分布式定时任务

    什么是quartz? Quartz是一个完全由 Java 编写的开源任务调度框架. 我们经常会遇到一些问题: 想每个月27号,提醒信用卡还款: 想每隔1小时,提醒一下,累了,站起来活动一下: 想每个月 ...

  2. mysql的每隔1分钟定时_mysql定时任务

    查看event是否开启 show variables like '%sche%'; 开启event_scheduler set global event_scheduler =1; 创建存储过程spa ...

  3. mysql同步的时候主挂掉了_聊聊关于mysql 主从 同步 问题

    总结:稍微有些规模的网站,基本上都会配置mysql主从复制,一方面用mysql的主从做数据库的读写分离,另一方面mysql本身的单机备份不是很强,一般采用主从架构,在从上进行数据备份. 在MySQL主 ...

  4. mysql数据库最后一步卡住了_[数据库]解决MySQL安装到最后一步未响应的三种方法...

    [数据库]解决MySQL安装到最后一步未响应的三种方法 0 2018-07-13 01:01:27 这种情况一般是你以前安装过MySQL数据库服务项被占用了. 解决方法: 方法一:安装MySQL的时候 ...

  5. mysql batch insert 遇到错误跳过_这是MySQL的bug吗?

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考.在此,建议大家为本公众号加"星标".如文章写得好,望大家阅读后在右下边"在看"处点个赞,以示鼓励! ...

  6. mysql 5.7和8.0区别_前沿观察 | MySQL性能基准测试对比:5.7 VS 8.0

    点小蓝字加关注! 版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于severalnines英文官网,若转载请注明出处.翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾讯云数据库 ...

  7. mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...

    MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. ...

  8. delimiter在mysql中的作用_细细研究MySql中delimiter起到的作用_MySQL

    MySql中delimiter究竟可以起到些什么作用呢?可能不少人都有这样的疑惑,下文就为您介绍MySql中delimiter的作用,供您参考. MYSQL导出一个SQL后: DELIMITER $$ ...

  9. mysql主从复制原理详解_深入研究MySQL(三)、主从复制原理及演示

    一.主从复制概述 这章来说说主从复制,对于主从复制,有很多知识,在以后分篇记录,所以在这里只说说简单的用法,用来入个门可以,先说啥是主从复制,主从复制就是将一台主机的数据复制到另一台或者多台主机上,复 ...

最新文章

  1. android 如何适配屏幕
  2. pickle序列化存在安全隐患
  3. Job Processing 工序安排
  4. 转载:C++编译期多态与运行期多态
  5. if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...
  6. 基因治疗光明现,钾盐钠盐大混战;深度学习助力癌早筛,母亲多动降低后代甲基化...
  7. 视图切换—多模板文档视图结构的应用
  8. python必背入门代码-你们都是怎么学 Python 的?
  9. 01.Matlab文件类型
  10. 2017数学建模b题回顾_年度回顾:2017年的Java
  11. 穿越火线枪战王者服务器维护,CF手游体验服7.3维护公告 战争风云模式登场
  12. 计算机特定用户共享文件夹,局域网共享给特定用户、文件夹共享给指定用户访问方法...
  13. 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
  14. 君子签推出AI智能电子合同一体化处理产品,赋能合同业务智能化
  15. 3.3 CPU共享功能
  16. 用matlab求解线性方程组
  17. Rasbian系统 树莓派Python环境搭建
  18. 智能床垫监测体征助力智慧养老,更加智能化的智能床垫-新导智能
  19. OpenMV入门(下)
  20. 如何使用html+Chart画甜甜圈图

热门文章

  1. 教授坦言:只要不退休,就始终会面临考核压力;如何帮助学生迈过毕业论文这道槛,已成为职业负荷之一...
  2. 高铁是如何跑起来?列车头顶高压线为什么磨不坏?
  3. PHP逻辑运算符如何写,PHP 逻辑运算符
  4. ExoPlayer用户手册
  5. 设置三个线程顺序打印数字问题(转载)
  6. Spring Boot Serverless 实战系列“架构篇” 首发 | 光速入门函数计算
  7. 如何用阿里云实行全链路数据追踪
  8. 阿里云机器学习怎么玩?这本新手入门指南揭秘了!
  9. Spark in action on Kubernetes - Playground搭建与架构浅析
  10. Dubbo下一站:Apache顶级项目