论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
Mysql
›
Mysql定时数据库备份保姆级教程
Mysql定时数据库备份保姆级教程
立聪堂德州十三局店
论坛元老
|
2024-12-17 16:22:35
|
显示全部楼层
|
阅读模式
楼主
主题
2348
|
帖子
2348
|
积分
7044
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
一、需要解决的问题
1、怎样传输文件?
2、怎样备份数据库?
3、怎样建立一个定时使命?
二、实行步骤
1、建立SSH公钥,实现无暗码登录
2、编写备份数据库脚本
3、编写定时使命
MySQL 是一种举世广泛使用的关系型数据库管理系统,它存储的数据不仅非常宝贵,而且通常无法替代。因此,确保这些重要数据的安全至关重要,定期举行备份就显得尤为重要。为了进一步加强数据的安全性,我们发起采用跨服务器备份策略,即将数据备份到不同的物理或假造服务器上。如许做可以作为一个额外的安全保障,有用防止因单点故障而导致的数据丢失风险。简单来说,就是把重要文件同时生存在几个不同的地方,如许即使一个地方出了问题,其他地方还有备份,从而更好地掩护我们的资料安全。
一、需要解决的问题
想要实现mysql数据跨服务器备份,需要先解决如下问题:
1、怎样传输文件?
在Linux系统中,我们可以使用scp下令来实现文件和目录的安全传输。scp是“secure copy”的缩写,它基于SSH协议,能够在远程服务器之间提供加密的文件拷贝服务,确保数据传输的安全性。简易语法如下:
scp file_source file_target
此处,我们是从本地复制文件到远程,所以,大概下令就如下:
scp /opt/backup/mysql/database.sql root@12.17.11.170:/opt/backup/mysql
上面下令的意思就是将本地文件/opt/backup/mysql/database.sql复制到12.17.11.170服务器的/opt/backup/mysql目录下。所以,执行这个下令之前,要包管本地对应目录和文件都存在。12.17.11.170服务器上的对应目录也应该存在。
2、怎样备份数据库?
备份数据库我们使用mysql自带的备份下令mysqldump即可。基本语法如下:
mysqldump -h [IP] -u[mysql用户] -p[mysql暗码] [数据库] >脚本名
3、怎样建立一个定时使命?
我们可以使用Linux系统的crontab定时使命,去实现固定时间自动执行脚本。基本语法如下:
[定时频率表达式] sh [sh脚本文件]
上述问题,解决后,我们就不难得出实行的步骤。
二、实行步骤
1、建立SSH公钥,实现无暗码登录
我们使用scp下令传输文件的时间,是需要输入对方服务器的暗码的。这里,我们为了不使用暗码登录,来采取建立公钥的方式,到达免登录的效果。
1)服务器A上添加ssh公匙
ssh-keygen -t rsa
直接按回车建默认目录生成即可。如果再提示已经生成过shh公钥,则取消,去/root/.ssh目录下查看即可。 产生如下两个文件:
2)将id_rsa.pub文件拷贝到服务器B的/root/.ssh目录下,并定名authorized_keys,如果B服务器已经有authorized_keys文件,就直接将id_rsa.pub文件内容直接拷贝到authorized_keys中即可。
2、编写备份数据库脚本
1)、创建如下sh脚本文件backupsql.sh
#!/bin/bash
#备份路径
BACKUP=/opt/backup/mysql
#当前时间
DATETIME=$(date +%Y-%m-%d)
echo "===备份开始==="
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql"
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库暗码
DB_PW=zhuoye521
#创建备份目录
#[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
#后台系统数据库
DATABASE=zhuoye
echo $DATABASE-$DATETIME
#mysqldump -u${DB_USER} -p${DB_PW} --single-transaction --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql
mysqldump -h localhost -u${DB_USER} -p${DB_PW} ${DATABASE} >${BACKUP}/$DATABASE-$DATETIME.sql
echo "===导出乐成,开始传输==="
#压缩成tar.gz包
cd $BACKUP
#tar -zcvf $DATETIME.tar.gz $DATETIME
#备份到服务器B
scp $DATABASE-$DATETIME.sql root@12.17.11.170:/opt/backup/mysql
#删除备份目录
#rm -rf ${BACKUP}/$DATETIME
#删除10天前备份的数据,这边可以自行更改
#find $BACKUP -mtime +10 -name "*.sql" -exec rm -rf {} \;
echo "===数据库备份到服务器乐成==="
注意:要包管A、B服务器上都已经有/opt/backup/mysql这个目录。
脚本赋权:
chmod 775 backupsql.sh
2)、执行脚本文件可以在B服务器上/opt/backup/mysql乐成出现sql脚本,即脚本无问题。
这一步手动执行不仅是验证你的脚本是不是能够精确产生并传输到B服务器的指定目录,还由于首次执行的时间会需要手动确认一次。如下图,输入yes即可:
如果你不手动执行一次,大概导致定时使命每次执行的时间都会卡到这个需要确认是否继承的步骤。
注意:仔细点你会发现navicate导出的sql脚本要比我们使用mysqldump导出的脚本要大,这并不是由于你的数据缺失了,而是使用mysqldump导出的sql文件中会把尽大概多的数据放到一条“insert”语句中,而navicat导出的sql文件每条“insert”语句只对应一条数据。这也就是,使用mysqldump导出的备份脚本,在执行的时间速度更快的缘故原由。
3、编写定时使命
1)、编辑定时使命文件
crontab -e
2)、输入如下内容,后生存退出
#表示天天23:59自动执行代码。需要注意的是前面是分钟,背面是小时
59 23 * * * sh /opt/backup/mysql/backupsql.sh
3)、重启服务
service crond restart
注:如果重启失败,大概就是你第二步的时间写错了。要注意前面是分钟,背面是小时,不要写反了!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
立聪堂德州十三局店
论坛元老
这个人很懒什么都没写!
楼主热帖
零信任介绍
哈夫曼应用
WPF开发随笔收录-获取软件当前目录的坑 ...
《微信小程序-基础篇》什么是组件化以 ...
【iOS逆向与安全】frida-trace入门 ...
VMware虚拟机安装Linux教程(超详细) ...
2021年7月整理--简单方法 暴力破解WIFI ...
django使用多个数据库实现
sqlserver字符串拼接
计算机等级考试二级C语言上机题集(第1 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表