千家信息网

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

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,小编给大家分享一下CentOS7下如何实现MySQL定时自动备份功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们需要
千家信息网最后更新 2024年11月26日CentOS7下如何实现MySQL定时自动备份功能

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

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

第一:数据库备份

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

第三:数据库备份自动化

第四:清理过期备份文件

第一:数据库自动备份

1.创建备份目录

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

[root@izwz99z5o9dc90keftqhlrz /]# mkdir -p /data/backup/mysql[root@izwz99z5o9dc90keftqhlrz /]# cd /data/backup

2.创建脚本文件

创建mysql_backup.sh

[root@izwz99z5o9dc90keftqhlrz backup]# vi mysql_backup.sh #!/bin/bash# db_name 自己改这里哦db_name='baizhan'backup_dir='/data/backup/mysql/'current_time=$(date +'%Y-%m-%d_%H%M%S')filepath=$backup_dir$current_time'.sql.gz'#此处没有使用 $db_password $db_user, 已经写入到配置文件中echo '开始导出数据库...'mysqldump --defaults-extra-file=/data/backup/my_mysql.cnf $db_name | gzip > $filepathecho '导出成功,文件名为: '$filepath

3.新建配置文件

就在我们的当前目录下 即 /data/backup

[root@izwz99z5o9dc90keftqhlrz backup]# vi my_mysql.cnf [mysqldump]max_allowed_packet = 400Mhost=127.0.0.1user=rootpassword='SgDGfsrfEi3#@%#%ugslp%z!dAP'[mysql]host=127.0.0.1user=rootpassword='SgDGfsrfEi3#@%#%ugslp%z!dAP'

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

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

4.给文件权限

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

[root@izwz99z5o9dc90keftqhlrz backup]# chmod +x ./mysql_backup.sh

5.执行一下我们的命令

[root@izwz99z5o9dc90keftqhlrz backup]# sh ./mysql_backup.sh# 查看一下结果[root@izwz99z5o9dc90keftqhlrz backup]# ll ./mysql

6.扩展使用

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

[root@izwz99z5o9dc90keftqhlrz backup]# gzip -dc ./mysql/2019-12-22_180359.sql.gz > ./mysql/2019-12-22_180359.sql [root@izwz99z5o9dc90keftqhlrz backup]# ll -sh ./mysqltotal 44K 36K -rw-r--r-- 1 root root 36K Dec 22 18:06 2019-12-22_180359.sql8.0K -rw-r--r-- 1 root root 5.9K Dec 22 18:03 2019-12-22_180359.sql.gz 36Kb 和8Kb的对比,如果数据库比较大的话,更能节省空间

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

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

1.创建脚本文件

按照第一步的操作,此时我们应该处于 /data/backup 目录下,继续操作

[root@izwz99z5o9dc90keftqhlrz backup]# vi mysql_restore.sh#!/bin/bashif [ -z $1 ] || [ ! -f $1 ]then echo "请输入sql压缩文件(*.sql.gz)" exit 1fi#输入你自己的数据库名称db_name='jx_guides'base_dir='/data/backup/mysql/'gz_sql_file=`basename $1`file_ext=${gz_sql_file##*.}if [ $file_ext != 'gz' ]then echo '文件格式不正确,请输入 .sql.gz 文件' exit 1fisql_file=${gz_sql_file%.*}echo '解压文件中...'gzip -dc $base_dir$gz_sql_file > $base_dir$sql_fileecho '解压完成.'echo '开始导入数据库...'mysql --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_fileif [ -f $base_dir$sql_file ]then echo '删除临时文件.' rm -f $base_dir$sql_filefiecho '导入完成.'

上面代码中的配置文件,就是我们第一步时创建的配置文件,在这里一样的使用

2.增加文件可执行权限

[root@izwz99z5o9dc90keftqhlrz backup]# chmod +x ./mysql_restore.sh

3.我们来执行通过备份文件恢复数据库

[root@izwz99z5o9dc90keftqhlrz backup]# sh ./mysql_restore.sh ./mysql/2019-12-22_180359.sql.gz

解压文件中...
解压完成.
开始导入数据库...
删除临时文件.
导入完成.

在这里我们的第一个参数可以直接写备份文件的名字,不用写目录,但是因为加上目录之后,可以使用table进行自动补全,所以十分方便,其他的执行方式:其实懂的人知道都一样

其实可以在任何文件夹进行恢复,执行 这个可以在任意位置执行

[root@izwz99z5o9dc90keftqhlrz backup]# sh /data/backup/mysql_restore.sh /data/backup/mysql/2019-12-22_180359.sql.gz 也可以这样[root@izwz99z5o9dc90keftqhlrz mysql]# pwd/data/backup/mysql[root@izwz99z5o9dc90keftqhlrz mysql]# sh /data/backup/mysql_restore.sh 2019-12-22_180359.sql.gz

第三:数据库备份自动化

1.添加计划任务

[root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e # 粘贴下面的内容, 数据库自动备份0 1,12 * * * /data/backup/mysql_backup.sh # 每天凌晨1点,中午12点备份一次数据

第四:清理过期备份文件

1.创建删除文件脚本

[root@izwz99z5o9dc90keftqhlrz mysql]# vi remove_backup.sh#/bin/bash # 删除15天前的备份find /data/backup/mysql -type f -mtime +15 | xargs rm -f

我这里是选择备份数据只保留最近15天的,大家根据需要自行修改

2.添加可执行权限

[root@izwz99z5o9dc90keftqhlrz mysql]# chmod +x ./remove_backup.sh#手动删除 15天前的备份[root@izwz99z5o9dc90keftqhlrz mysql]# ./remove_backup.sh

3.自动清理

[root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e # 下面这个就是脚本内容哦,添加这一句0 1 * * * /data/backup/remove_backup.sh # 每天凌晨1点,自动删除15天[15是remove_backup.sh里面配置的]前的备份

第五:定时任务配置给贴出来

# 粘贴下面的内容, 数据库自动备份0 1,12 * * * /data/backup/mysql_backup.sh # 每天凌晨1点,中午12点备份一次数据 # 下面这个就是脚本内容哦,添加这一句0 1 * * * /data/backup/remove_backup.sh # 每天凌晨1点,自动删除15天[15是remove_backup.sh里面配置的]前的备份

以上是"CentOS7下如何实现MySQL定时自动备份功能"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 备份 数据 数据库 脚本 配置 内容 目录 参数 就是 权限 面的 功能 篇文章 输入 成功 任务 命令 大小 自动化 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术主要是哪些 HP 服务器 风扇转速 数据库空值 战争前线为什么连接不上服务器 服务器无法找到目标更新的文件 党政机关网络安全知识问答 电子科技大学互联网 金融 广州什么大学教软件开发 支付宝智慧数字化软件开发 靠谱的仓库管理软件开发管理 上海普陀区软件开发公司 达梦数据库怎么修改模式名 软件开发+贵阳 测试数据库连接超时 北邮网络技术研究院合并 京东数据库开发框架 互联网信息科技的发展趋势 传奇世界服务器分布 有影响力的网络安全事件 明日之后四字服务器下载网易版 数据库系统三级结构的缺点 在软件开发过程对环境的影响 nginx夸服务器端口转发 重庆宏渠网络技术有限公司 福建省网络安全培训平台 网络安全什么公司好 成都求职招聘软件开发 中国香港手机软件开发性价比出众 wincc 显示数据库数据 数据库技术与项目笔记
0