mysql备份至本地,mysql备份(本地+远程)

整体规划

生产环境的mysql数据库,应当每日进行备份,并对较远之前的备份进行删除,由于担心mysql服务器本身崩溃,因此需要考虑将备份的文件同时保存到其他服务器,这样能提高数据安全。

备份的方式使用mysqldump,mysql服务器所在主机的ip地址为:10.10.10.57,另一台服务器(远程服务器)的ip地址为:10.10.10.218,备份文件总量不超过15个,每天凌晨3点进行备份。

mysql服务器免密码登录远程服务器

ssh-keygen -t rsa # 连按回车即可

cd ~/.ssh/

ssh-copy-id 10.10.10.218 # 需要输入远程服务器的root密码,之后使用ssh命令就不再需要输入密码了

mysql服务器上的备份程序

/usr/local/backup/backup.sh

#!/bin/bash

number=15

base_dir=/usr/local/backup

local_data_dir=$base_dir/data

remote_data_dir=/usr/local/backup/data

file_suffix=`date +%Y-%m-%d-%H-%M-%S`

file_name=$local_data_dir/bk-$file_suffix.sql

if [ ! -d $local_data_dir];

then

mkdir -p $local_data_dir;

fi

mysqldump -uroot -p123456 -R -A -E > $file_name

scp $file_name root@10.10.10.218:$remote_data_dir

file_cmd=`ls -l -crt $local_data_dir/*.sql | awk '{print $9 }' | head -1`

count_cmd=`ls -l -crt $local_data_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count_cmd -gt $number ]

then

# 删除逻辑需要优化:不能一次性删除多个过期文件

rm $file_cmd

echo "delete $file_cmd" >> $base_dir/log.log

fi

mysql服务器上的定时任务

使用命令:crontab -e 编辑本机的定时任务

0 3 * * * sh /usr/local/backup/backup.sh > /dev/null 2>&1

远程服务器上的文件管理程序

用于删除较早的文件,内容和备份程序相似

/usr/local/backup/backup.sh

#!/bin/bash

number=10

base_dir=/usr/local/backup

data_dir=$base_dir/data

file_cmd=`ls -l -crt $data_dir/*.sql | awk '{print $9 }' | head -1`

count_cmd=`ls -l -crt $data_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count_cmd -gt $number ]

then

rm $file_cmd

echo "delete $file_cmd" >> $base_dir/log.log

fi

远程服务器上的定时任务设置

由于mysql备份和文件传输均需要时间,所以远程服务器上的文件清理程序并不适合也在3点执行,同样使用crontab -e 进行操作:

30 3 * * * sh /usr/local/backup/backup.sh > /dev/null 2>&1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值