Linux 服务器下Mysql自动备份 30天滚动存储 每天凌晨2点准时备份

一、创建备份目录

  执行命令:在指定路径下创建备份目录
  cd /mnt/file
  mkdir data_backup

二、编写shell脚本 放在/mnt/file/data_backup里

 创建.sh shell脚本: touch bkmysql.sh

 打开脚本文件: vim bkmysql.sh

脚本文件内容如下所示:

login_user表示数据库用户名

login_passwd表示数据库密码 修改成自己数据库的用户名与密码即可

login_user=root
login_passwd=root


rq=`date +%Y%m%d`

dateDel=`date -d '+30 day ago' +%Y%m%d`
backup_dir="/mnt/file/data_backup/"$rq"/" #配置备份文件保存的目录

echo "****starting mysqldump****"
echo $backup_dir
if [ ! -d $backup_dir ];then
mkdir -p $backup_dir
fi
# 将需要备份的数据放入
db_array=("sys_user" "sys_dept" ) #配置要备份的数据库
for db_name in ${db_array[*]}
do
mysqldump -u$login_user -p$login_password $db_name > $backup_dir$db_name.sql
done
echo "****end mysqldump****"

echo "rm *"$dateDel"*"
rm *$dateDel*
echo "****end delete****"

echo "备份结束"

三、修改备份脚本文件权限:

执行命令:chmod 777 bkmysql.sh
测试:执行脚本文件看会不会出现相应的备份文件
sh bkmysql.sh

四、可能遇到的问题:mysqldump: Got error: 2002: Can‘t connect to local MySQL server through socket ‘/tmp/mysql.soc

解决办法:
1.修改mysql配置文件
vim /etc/my.cnf
配置文件中添加【client】如下:
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock(跟这个socket路径一样)
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]port=3306socket=/var/lib/mysql/mysql.sock

五、配置定时器

修改定时器配置文件crontab:
sudo vim /etc/crontab
crontab文件添加以下内容:
0 2 * * * yfjf /mnt/file/data_backup/bkmysql.sh >> /mnt/file/data_backup/backup_log.log
crontab配置完成后,需要重新启动服务:
重新启动(sudo /etc/init.d/cron restart);
查看crond服务是否启动:
sudo service crond status
 
总结:
  以上是本人经过实践在服务器上操作备份的过程,期间也遇到过其他的一些问题,忘记记载了。如果后续在继续创建Mysql备份滚动存储,可记载下来。关于定时器这块具体可以在网上直接搜索crontab 一般都是服务器系统自带。
作者:三尺青锋
posted @ 2023-05-12 16:13  Java-三尺青锋  阅读(80)  评论(0编辑  收藏  举报