CentOS7下如何实现MySQL定时自动备份功能

  介绍

小编给大家分享一下CentOS7下如何实现MySQL定时自动备份功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>我们需要实现下面的几个功能:

第一:数据库备份

第二:数据库通过备份恢复

第三:数据库备份自动化

第四:清理过期备份文件

<强>第一:数据库自动备份

1。创建备份目录

这里我选择了把备份文件放在/数据/备份/mysql下面,把脚本放在/数据/备份下面:

[root@izwz99z5o9dc90keftqhlrz /] #, mkdir  -p /数据/备份/mysql   [root@izwz99z5o9dc90keftqhlrz /] #, cd /数据/备份

2。创建脚本文件

创建mysql_backup。sh

(root@izwz99z5o9dc90keftqhlrz 备份)#,vi  mysql_backup.sh   ,   # !/bin/bash   #,db_name 自己改这里哦   db_name=& # 39; baizhan& # 39;   backup_dir=& # 39;/数据/备份/mysql/& # 39;   当前时间=$ (date  + & # 39; Y % - % m - H % d_ % % m % & # 39;)   filepath=backup_dir当前时间# 39;美元.sql.gz& # 39;   #此处没有使用,db_password 美元;db_user美元,已经写入到配置文件中   echo  & # 39;开始导出数据库……& # 39;   mysqldump ——defaults-extra-file=/数据/备份/my_mysql.cnf  db_name 美元;|,gzip 祝辞filepath美元   echo  & # 39;导出成功,文件名为:,& # 39;美元filepath

3。新建配置文件

就在我们的当前目录下即/数据/备份

(root@izwz99z5o9dc90keftqhlrz 备份)#,vi  my_mysql.cnf   ,   (,mysqldump)   max_allowed_packet =400   主机=127.0.0.1   用户=根   密码=& # 39;SgDGfsrfEi3 # @ % # % ugslp % z ! dap # 39;   (mysql)   主机=127.0.0.1   用户=根   密码=& # 39;SgDGfsrfEi3 # @ % # % ugslp % z ! dap # 39;

各位看官请把上面的参数改成自己的就好了,可别漏了这一步哦

其中,mysqldump下的参数是给导出的命令使用的,mysql下的参数是导入的时候使用的

4。给文件权限

到这里的话导出的shell脚本就已经写好了,我们对这个脚本加一下可执行权限

(root@izwz99z5o9dc90keftqhlrz 备份)#,chmod  + x 。/mysql_backup.sh

5。执行一下我们的命令

(root@izwz99z5o9dc90keftqhlrz 备份)#,sh 。/mysql_backup.sh   #,查看一下结果   (root@izwz99z5o9dc90keftqhlrz 备份)#,ll 。/mysql

 CentOS7下如何实现mysql定时自动备份功能

6。扩展使用

我们解压一下已经成功导出的文件,看看原文件大小和压缩后的文件大小对比

(root@izwz99z5o9dc90keftqhlrz 备份)#,gzip  -dc 。/mysql/2019 - 12 - 22 _180359.sql.gz 祝辞,。/mysql/2019 - 12 - 22 _180359.sql   ,   (root@izwz99z5o9dc90keftqhlrz 备份)#,ll  -sh 。/mysql   total  44 k   ,36 k  -rw-r——r, 1, root  root  36 k  Dec  22, 18:06  2019 - 12 - 22 - _180359.sql   8.0 k  -rw-r——r, 1, root  root  5.9 k  Dec  22, 18:03  2019 - 12 - 22 - _180359.sql.gz   ,36 kb 和8 kb的对比,如果数据库比较大的话,更能节省空间

到这里为止,我们的导出脚本已经完成了,接下来就是导入脚本了

<强>第二:数据库通过备份恢复

1。创建脚本文件

按照第一步的操作,此时我们应该处于/数据/备份目录下,继续操作

(root@izwz99z5o9dc90keftqhlrz 备份)#,vi  mysql_restore.sh   # !/bin/bash   if [1美元,-z ], | |,[!大敌;-f  1美元,)   然后   ,echo “请输入sql压缩文件(* .sql.gz)“;   exit  1   fi   #输入你自己的数据库名称   db_name=& # 39; jx_guides& # 39;   base_dir=& # 39;/数据/备份/mysql/& # 39;   gz_sql_file=' basename  $ 1 '   file_ext=$ {gz_sql_file # # *。}   if  [, file_ext 美元;!=,& # 39;广州# 39;,)   然后   ,echo  & # 39;文件格式不正确,请输入,.sql.gz 文件& # 39;   exit  1   fi   sql_file=$ {gz_sql_file %。*}   echo  & # 39;解压文件中…& # 39;   gzip  -dc  base_dir gz_sql_file 美元;祝辞base_dir sql_file美元   echo  & # 39;解压完成强生# 39;   echo  & # 39;开始导入数据库……& # 39;   mysql ——defaults-extra-file=/数据/备份/my_mysql.cnf  db_name 美元;& lt; base_dir sql_file美元   if  [, -f  base_dir sql_file 美元)   然后   ,echo  & # 39;删除临时文件强生# 39;   ,rm  -f  base_dir sql_file美元   fi   echo  & # 39;导入完成强生# 39;

CentOS7下如何实现MySQL定时自动备份功能