这篇文章主要介绍“Centos7中MySQL数据库怎么使用mysqldump进行每日自动备份的编写”,在日常操作中,相信很多人在Centos7中MySQL数据库怎么使用mysqldump进行每日自动备份的编写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Centos7中MySQL数据库怎么使用mysqldump进行每日自动备份的编写”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、需求说明:
数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。
物理备份:使用相关的复制命令直接将数据库的数据目录中的数据复制一份货多分副本,常使用工具:XtraBackup。
逻辑备份:使用mysql自带的mysqldump命令把需要备份的数据以sql语句的形式存储起来。
下边我们将使用mysqldump命令进行数据备份。使用自动任务进行每日备份。
二、执行文件编写:
创建文件夹,执行的sh文件和数据库的备份文件都存在这个文件夹下
mkdir /usr/local/mysqlDataBackupcd /usr/local/mysqlDataBackup
创建sh文件并编写shell脚本:
backup.sh
单数据库脚本:
#!/bin/bash#This scripts is for auto backup databases#create by weijb at 2021-07-28#delete data from 7 day beforeDATAdelete=‘date +%F -d "-7 day"‘rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gzMYSQL_CMD=/usr/bin/mysqldumpMYSQL_USER=账号MYSQL_PWD=密码DATA=‘date +%F‘DBname=test_db${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
解析:
(1)删除7天前的备份数据,节省空间:
DATAdelete=‘date +%F -d "-7 day"‘ 当前时间前7天的日期
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz 删除前7天的备份数据,节省空间,只保留最新的7天数据
(2)定义变量:
MYSQL_CMD=/usr/bin/mysqldump mysql自带的mysqldump命令所在的位置
MYSQL_USER=账号 mysql连接的账号
MYSQL_PWD=密码 mysql连接的密码
DATA=‘date +%F‘ 获取当前日期,%F 表示格式:%Y-%m-%d 例如:2021-07-28
DBname=test_db 需要备份的数据库名,当前的数据库名为:test_db
(3)执行备份命令:
${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
--compact 优化输出信息
-B 包含建库的语句
gzip 压缩备份,减少备份的文件大小
usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz 备份文件保存的路径以及名字
多数据库备份:
#!/bin/bash#This scripts is for auto backup databases#create by weijb at 2021-07-28#delete data from 7 day beforeDATAdelete=‘date +%F -d "-7 day"‘rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gzMYSQL_CMD=/usr/bin/mysqldumpMYSQL_USER=账号MYSQL_PWD=密码DATA=‘date +%F‘DBname=‘ mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;" | sed '1,5d'‘for DBname in ${DBname}do ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gzdone
解析:
(1) 截取需要备份的数据库
-e "show databases;" | sed '1,5d'‘ 显示所有的数据库,并截取mysql自带的information_schema、mysql、performance_schema、sys意外的所有数据库。
(2) 其他的和单库备份相同
验证脚本是否编写成功:
(1)脚本文件授权:
cd /usr/local/mysqlDataBackupchmod +x backup.sh
(2) 执行脚本:
sh backup.sh
/usr/local/mysqlDataBackup 下生成文件说明编写成功。
编写自动任务:
每天凌晨1点对数据库进行备份:
crontab -e
输入i进行编辑:
00 01 * * * /usr/local/mysqlDataBackup/backup.sh
使用esc退出文件编辑,输入 :wq 保存并退出。
查询任务是否设置成功:
crontab -l
重启crontab服务:
service crond restart
至此,mysql的自动任务脚本备份数据库到此完成。
到此,关于“Centos7中MySQL数据库怎么使用mysqldump进行每日自动备份的编写”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!