首页 > 数据库 >linux mysql定时备份存异地服务器

linux mysql定时备份存异地服务器

时间:2022-10-14 09:56:41浏览次数:46  
标签:存异 备份 linux filename mysql 服务器 bak

参考资料帖子:

https://blog.51cto.com/u_1472521/5108597

https://blog.csdn.net/zhou920786312/article/details/123354503

https://zhuanlan.zhihu.com/p/201086165

https://blog.csdn.net/qq_39749620/article/details/123978841

https://blog.csdn.net/weixin_43822878/article/details/94559932

https://blog.csdn.net/weixin_36077867/article/details/109117105

背景:公司有三台天翼云的linux服务器,两台放应用程序,一台放数据库,领导要求,定时备份mysql数据到公司的另外一台实体linux服务器上,鸡蛋放到两个篮子里。

如标题,在网上搜了好多,感觉都是一个人的……,还有些看不懂,只能自己研究。

这个任务气势是多个子任务组合到一起的,其实就是

1.mysql数据库全备份。

2.写个脚本,执行mysql数据库全备份,然后把文件传到别的服务器上。

3.定时执行脚本。

在这基础之上,肯定还有一些小的需求,比如只保留近几天的备份啦等等,这都是小问题,可以在子任务解决的时候一块处理。

那好,我们开始:

任务一:

登录到数据库服务器,先进行全备份测试

mysqldump -h127.0.0.1 -P3306 -uroot -pyzy@123456 -A > /bak/backup.sq

mysqldump是在mysql的bin文件夹里边,如果你想在没有安装mysql的服务器上这样搞,那估计有点悬。

还有就是没有做这个命令的软连接的话,这个命令也是无法正常使用的,要不你百度怎么做这个mysqldump的软连接,要不然就找到它的绝对路径使用

比如查找mysql的安装目录

whereis mysql



我的是这样的,可能会与你们的不一样,列出的这几个位置,自己去找找,如果都不是,那我就没辙了

所以这个命令也可以换成其他的:

我的mysql是安装在了/usr/local/mysql下

所以可以这么写:

/usr/local/mysql/bin/mysqldump -h127.0.0.1 -P3306 -uroot -pyzy@123456 -A > /bak/backup.sql

127.0.0.1----数据库地址,我是直接在数据库服务器操作,所以这样写了,不如你想备份别的服务器的mysql,那就写别的服务器的外网地址,应该是可以的,没试过。

root----mysql的用户名,根据实际情况自己改

yzy@123456----mysql的密码,据实际情况自己改

-A----这是备份全部数据库的配置,还有其他命令,可参考文章上方的资料帖子,有相关的说明资料。

/bak/backup.sql----存放备份文件的地址,据实际情况自己改

此命令执行成功,就在对应文件路径生成备份文件,第一步完成。

任务二:

备份有了,需要把备份文件传到异地(linux),如果异地是window的话,我还没研究

写个脚本,执行完mysql备份,然后把文件传走,以下是脚本命令:

----------脚本---------

filename=`date '+%Y%m%d-%H%M%S'` filename="${filename}.sql"
mysqldump -h127.0.0.1 -P3306 -uroot -pyzy@123456 -A > /bak/${filename}
scp -P 19999 /bak/${filename} [email protected]:/bak/officialDataServerBak
echo 'success' ----------脚本----------- scp用法及讲解,在上边的资料帖子中也有,也可以自己百度 -P 19999---------注意这个是大写,小写就不是这个意思了,指定异地服务器的ssh的接口,因为我改过,所以这地方配置了下,如果你没有改过ssh的默认端口,那这个配置就不用加,会自动填充默认的端口。 /bak/${filename}--------备份文件地址  [email protected]异地服务器的用户和ip地址 /bak/officialDataServerBak---------异地服务器存储备份的路径 在没有其他操作的情况下scp -P 19999 /bak/${filename} [email protected]:/bak/officialDataServerBak,运行到这个地方是需要你输入密码,因为是ssh的传输方式。 但每次执行都需要我手动输入密码,这就很麻烦,有2种解决方案: 1.使用脚本命令,自动填充密码。 2.根据ssh的特性,使用key值免登陆操作 由于我对脚本不熟,所以百度了第一种方案,结果没弄成,就用了第二种。 第二种方案请参考上方资料帖子 任务三: 最后就是想办法定时执行这个脚本 上边的帖子也是有参考,首先要安装crontab,这事用来管理linux定时任务的,然后这个插件怎么用,可以自行百度,按照规范操作就可以了。      

标签:存异,备份,linux,filename,mysql,服务器,bak
From: https://www.cnblogs.com/liguangwei/p/16785284.html

相关文章