Linuxword Global
当前位置: Linux技术 > Vmshell验证版:MySQL定时主备数据库备份

条件:服务器A、服务器B

一、定时备份服务器A的数据库

1.新建目录存放.sh文件

cd mnt
mkdir db_backup
cd db_backup
vim backup.sh
#修改文件权限为可执行
chmod +x backup.sh

2.备份服务器A的数据库并传输到服务器B

#备份路径
BACKUP=/mnt/db_backup
#当前时间
DATETIME=$(date +%Y-%m-%d)
#数据库地址
HOST=xxx
#数据库用户名
DB_USER=xxx
#数据库密码
DB_PW=xxx
#数据库名
DATABASE=xxx

#备份到服务器A
mysqldump  -u${DB_USER} -p${DB_PW} ${DATABASE} > ${BACKUP}/$DATABASE-$DATETIME.sql

cd $BACKUP
#传输到服务器B
sshpass -p B的密码 scp $DATABASE-$DATETIME.sql root@B的ip:/mnt/db_backup/

#删除3天前备份的数据,可以自行更改
find $BACKUP -mtime +3 -name "*.sql" -exec rm -rf {} \;

3.创建定时任务

#编辑crontab文件
vim /etc/crontab
添加以下内容(每天6点01分执行.sh文件)
01 6    * * *   root    /mnt/db_backup/backup.sh
#重启cron服务
service cron restart

二、定时将sql文件导入服务器B的数据库

1.新建目录存放.sh文件(同上)
2.将A传过来的sql文件导入到B

DATABASE=xxx
DATETIME=$(date +%Y-%m-%d)
#操作mysql
mysql -u user -ppasswd <<EOF
drop database $DATABASE;
create database $DATABASE;
use $DATABASE;
source /mnt/db_backup/$DATABASE-$DATETIME.sql;
EOF

3.创建定时任务(同上,时间可选择晚于服务器A定时时间10分钟)

三、问题与解决

1.跨服务器传输sshpass报错:

Host key verification failed

因为首次通过sshpass用A链接B,A中没有相关的密码记录,所以要先在A中执行一次:

sshpass 测试文件 root@B的ip:/mnt/db_backup/

根据提示键入密码,使A有了B的相关记录,即可解决此问题
2.建议对.sh文件制定定时任务前都先手动执行一遍,测试能否成功,执行命令:

bash xxx.sh

作者:寒冰助手
链接:https://www.jianshu.com/p/e84d0b89fda9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2590 篇
  • 草稿数目: 22 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 13020 个
  • 注册用户: 139 人
  • 访问总量: 8,647,987 次
  • 最近更新: 2024年11月21日