linux mysql定时自动备份到另一台服务器

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

        我的linux服务器安装的是宝塔宝塔里面可以添加定时任务包括数据库备份

 但是我的宝塔里面只有备份到本机没有他们说的可以添加ftp或者oss啥的估计是因为我用的免费版本专业版本才有远程同步功能如果数据库备份只备份到本机当服务器挂了那数据库和备份记录就都没了所以除了备份本机外还需要往别的云服务器上也备份一份或者N份才保险。

 而作为白嫖党我不想花钱买专业版只能自己写个脚本定时同步远程服务器了。

方法我是参考 https://blog.csdn.net/qq_48922459/article/details/122321217 这篇博客自己写只是记录自己遇到的问题和做个备份

1.ssh免密登录配置

因为是自动脚本而用ssh传输文件正常情况下都要手动输入密码所以需要配置一下免密登录。公私钥是解决的最好办法原理看这里SSH免密登录配置

首先登录原数据服务器输入命令

ssh-keygen -t rsa

 运行这句一直敲击回车会在 /root/.ssh 目录下生成两个文件如果用 ftp 查看的文件这个 .ssh 文件夹是隐藏文件夹所以 ftp 下面看不到你要手动输入地址 /root/.ssh 就可以进去了而我用宝塔是直接显示的。

把 id_rsa.pub 里的内容全选复制然后登录目标服务器也是进入 /root/.ssh 文件夹把刚刚复制的内容粘贴进 authorized_keys 的尾部authorized_keys 可能没有自己新建里面可以有多个 key互不影响换一行粘贴就行了

 保存这样我们两台服务器的免密登录 ssh 连接就建立好了。

 2.编辑自动备份脚本文件

在数据库所在的服务器新建一个 sh 文件放在哪里、怎样命名都随意此处注意不要使用 ftp 右键新建文件来编写 sh 文件那样编码会出问题比如新建的文件名后面会多出一个问号“?”使用命令行vim或vi来新建

mkdir scripts
cd scripts
mkdir backup
vim syncRecordLife.sh

 我新建了这么个文件夹其中backup是用来放数据库备份文件的syncRecordLife.sh是我的同步脚本。

#存放备份sql的地方
BACKUP=/www/scripts/backup
#数据库名称
DATABASE=energy
#后缀用来区分备份文件
DATETIME=$(date +%Y-%m-%d-%H-%M)
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql"
#导出sql文件到备份文件夹下-u -p分别输入自己的用户密码11.11.11.11代表本机的ip
mysqldump -h 11.11.11.11 -uroot -proot --all-databases > ${BACKUP}/$DATABASE-$DATETIME.sql
echo "===导出成功开始传输==="
#把生成的备份sql传到目录服务器里22.22.22.22代表目标的ip
scp  ${BACKUP}/$DATABASE-$DATETIME.sql root@22.22.22.22:/data/mysqlAutoBackup
echo "===数据库备份到服务器成功==="

首先执行一下这个脚本

虽然会报一个错但是不影响同步想完美的可以自行百度配置一下

 

 

 可以看到sql文件已经自动生成并同步到目标服务器上去了。

3.定时任务

待更新

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6