龙空技术网

mysql数据库定时备份

摸鱼低代码 344

前言:

此刻各位老铁们对“mysql数据库定期备份”可能比较关怀,同学们都需要了解一些“mysql数据库定期备份”的相关知识。那么小编同时在网络上网罗了一些有关“mysql数据库定期备份””的相关知识,希望看官们能喜欢,同学们一起来学习一下吧!

生产环境中使用mysql数据库,我们如何进行数据备份?

这里我们采用mysqldump来进行数据备份,mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。

创建目录

mkdir /root/mysqlcd /root/mysql
编写备份脚本
vi  startBackup.sh

数据导出脚本如下:

#!/bin/bash# 直接配置帐号密码就把下面注释放开#db_user='root'#db_password=`cat /root/mysql/mysql_password`#mysql安装地址export PATH=/usr/local/mysql/bin:$PATH#数据库名称db_name='***db'#备份地址根据情况指定backup_dir='/root/mysql/data/'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=/root/mysql/backup.cnf $db_name | gzip > $filepathecho '导出成功,文件名为: '$filepath

上面backup.cnf配置内容如下:

[mysqldump]max_allowed_packet=1000Mhost=localhostuser=帐号password='*********'[mysql]host=localhostuser=账号password='***********'

编写移除历史备份数据脚本,我们这里保留7天内的备份。(可以根据具体情况调整)

vi removeHistory.sh
#/bin/bash# 删除7天前的备份find /root/mysql/data -type f -mtime +7 | xargs rm -f
定时直行备份脚本

给脚本赋权限

chmod +x startBackup.shchmod +x removeHistory.sh

centos命令行中输入 crontab -e编写定时执行脚本,每天凌晨1点进行备份并清除历史数据

0 1 * * * /*****/startBackup.sh0 1 * * * /*****/removeHistory.sh

配置完成后每天就会定时执行备份,备份信息如下:

备份文件

数据恢复

数据压缩备份后,我们可以通过下面的命令来进行数据恢复

#!/bin/bashif [ -z $1 ] || [ ! -f $1 ]then    echo "请输入sql压缩文件(*.sql.gz)"    exit 1fidb_name='***db'base_dir='/root/mysql/data/'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=/root/mysql/backup.cnf $db_name < $base_dir$sql_fileif [ -f $base_dir$sql_file ]then    echo '删除临时文件.'    rm -f $base_dir$sql_filefiecho '导入完成.'

标签: #mysql数据库定期备份