生产环境中使用mysql数据库,我们如何进行数据备份?
这里我们采用mysqldump来进行数据备份,mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
mkdir /root/mysql
cd /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 > $filepath
echo '导出成功,文件名为: '$filepath
上面backup.cnf配置内容如下:
[mysqldump]
max_allowed_packet=1000M
host=localhost
user=帐号
password='*********'
[mysql]
host=localhost
user=账号
password='***********'
编写移除历史备份数据脚本,我们这里保留7天内的备份。(可以根据具体情况调整)
vi removeHistory.sh
#/bin/bash
# 删除7天前的备份
find /root/mysql/data -type f -mtime +7 | xargs rm -f
给脚本赋权限
chmod +x startBackup.sh
chmod +x removeHistory.sh
centos命令行中输入 crontab -e编写定时执行脚本,每天凌晨1点进行备份并清除历史数据
0 1 * * * /*****/startBackup.sh
0 1 * * * /*****/removeHistory.sh
配置完成后每天就会定时执行备份,备份信息如下:
数据压缩备份后,我们可以通过下面的命令来进行数据恢复
#!/bin/bash
if [ -z $1 ] || [ ! -f $1 ]
then
echo "请输入sql压缩文件(*.sql.gz)"
exit 1
fi
db_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 1
fi
sql_file=${gz_sql_file%.*}
echo '解压文件中...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo '解压完成.'
echo '开始导入数据库...'
mysql --defaults-extra-file=/root/mysql/backup.cnf $db_name < $base_dir$sql_file
if [ -f $base_dir$sql_file ]
then
echo '删除临时文件.'
rm -f $base_dir$sql_file
fi
echo '导入完成.'
页面更新:2024-03-20
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号