Linux备份Docker的mysql数据并传输到其他服务器保证数据级容灾

news/2024/11/17 0:44:53/

目录

    • 简介
      • 什么是容灾 ?
      • 容灾的分类
      • 容灾和备份有什么连系 ?
    • 数据级容灾
      • 备份步骤
        • 1、scp命令:用于Linux之间复制文件和目录
        • 2、编写备份数据库脚本
        • 3、crontab定时任务执行脚本
        • 4、测试
    • 应用级容灾
    • 业务级容灾

简介

为了防止客户系统的数据丢失,比较常见的就是在客户服务器中使用脚本进行一个定时的数据备份,而现在大部分的项目为了保证系统不会出现问题都是想方设法的保证整个系统的独立和多机备份,例如独立就像SpringCloud,任何模块的损坏都不影响其他模块的运行,多机备份则是将数据库文件备份在多个服务器而保证数据文件的安全性。

以上方式总体上都是为了让系统稳步的运行,也可以说容灾,数据中心运行突发故障(如:天灾不可避免的灾难)是无法预测的,计算机里的数据就像扫雷游戏一样,十面埋伏充满雷区,随时都有可能Game Over,容灾备份就是数据安全的最后防线,但是你可以避免由数据中心发生故障而丢失数据引发的数据丢失的局面。今天为大家介绍数据库容灾的方式以及一些尽可能减少发生运行故障失败机会,并加强企业的数据备份环境的简单要点。

什么是容灾 ?

容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾、地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

容灾技术是系统的高可用性技术的一个组成部分,容灾系统更加强调处理外界环境对系统的影响,特别是灾难性事件对整个IT节点的影响,提供节点级别的系统恢复功能。

容灾的分类

从其对系统的保护程度来分,可以将容灾系统分为:数据容灾和应用容灾,数据容灾就是指建立一个异地的数据系统,该系统是本地关键应用数据的一个实时复制。

应用容灾是在数据容灾的基础上,在异地建立一套完整的与本地生产系统相当的备份应用系统(可以是互为备份),在灾难情况下,远程系统迅速接管业务运行,数据容灾是抗御灾难的保障,而应用容灾则是容灾系统建设的目标。

容灾和备份有什么连系 ?

容灾备份实际上是两个概念,容灾是为了在遭遇灾害时能保证信息系统能正常运行,帮助企业实现业务连续性的目标,备份是为了应对灾难来临时造成的数据丢失问题。在容灾备份一体化产品出现之前,容灾系统与备份系统是独立的。容灾备份产品的最终目标是帮助企业应对人为误操作、软件错误、病毒入侵等"软"性灾害以及硬件故障、自然灾害等“硬”性灾害。

数据级容灾

这是我们今天主要讲的位于软件层面的方式,也是最简单的一种方式。数据级容灾是最基础的手段,指通过建立异地容灾中心,做数据的远程备份,在灾难发生之后要确保原有的数据不会丢失或者遭到破坏,但在数据级容灾这个级别,发生灾难时应用是会中断的。可以简单的把这种容灾方式理解成一个远程的数据备份中心,就是建立一个数据的备份系统或者一个容灾系统,比如数据库、文件等等。

优点:费用比较低,构建实施相对简单

缺点:数据级容灾的恢复时间比较长

备份步骤

1、scp命令:用于Linux之间复制文件和目录
#在主服务器A上添加ssh公匙
ssh-keygen -t rsa
#回车直至完成,会在用户目录/root/.ssh/产生两个文件:id_rsa,id_rsa.pub#将id_rsa.pub文件拷贝到备份服务器B的/root/.ssh目录下
scp /root/.ssh/id_rsa.pub root@123.123.123.123:/root/.ssh/authorized_keys
#完成这一步后,从服务器A复制到服务器B就不需要密码了#在备份服务器B上创建被传输的目录
mkdir -p /backup/sanlong/mysql
2、编写备份数据库脚本
#进入一个目录,用于编写备份mysql的脚本(尽可能放在备份文件附近,比较好找)
vim /docker/mysql/backupsql#创建备份sh
vim backup.sh#以下为脚本内容,自行根据服务器修改
#!/bin/bash
#备份路径
BACKUP=/docker/mysql/backupsql/sql
#当前时间
DATETIME=$(date +%Y-%m-%d)
echo "===备份开始==="
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql"
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=123456
#创建备份目录
#[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"#后台系统数据库
DATABASE=dtsum-boot
echo $DATABASE-$DATETIME
#mysqldump -u${DB_USER} -p${DB_PW} --single-transaction --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql
docker exec mysql57 mysqldump -h localhost  -u${DB_USER} -p${DB_PW}  ${DATABASE} > /${BACKUP}/$DATABASE-$DATETIME.sqlecho "===导出成功,开始传输==="
#压缩成tar.gz包
cd $BACKUP
#tar -zcvf $DATETIME.tar.gz $DATETIME
#备份到服务器B
scp $DATABASE-$DATETIME.sql root@123.123.123.123:/backup/sanlong/mysql
#删除备份目录
#rm -rf ${BACKUP}/$DATETIME#删除10天前备份的数据,这边可以自行更改
#find $BACKUP -mtime +10 -name "*.sql" -exec rm -rf {} \;
echo "===数据库备份到服务器成功==="
3、crontab定时任务执行脚本
#编写cron脚本
crontab -e#输入内容(这边代表每天0点备份)
0 0 * * * sh /docker/mysql/backupsql/backup.sh#保存
:wq#重启cron服务
service crond restart
#或
/bin/systemctl restart crond.service
4、测试

在这里插入图片描述

应用级容灾

应用级容灾是在数据级容灾的基础之上,在备份站点同样构建一套相同的应用系统,通过同步或异步复制技术,这样可以保证关键应用在允许的时间范围内恢复运行,尽可能减少灾难带来的损失,让用户基本感受不到灾难的发生。应用级容灾就是建立一个应用的备份系统,比如一套OA系统正在运行,在另一个地方建立一套同样的OA系统。

优点:提供的服务是完整、可靠、安全的,确保业务的连续性

缺点:费用较高,需要更多软件的实现

业务级容灾

业务级容灾是全业务的灾备,除了必要的IT相关技术,还要求具备全部的基础设施。

优点:保障业务的连续性

缺点:费用很高,还需要场所费用的投入,实施难度大。


http://www.ppmy.cn/news/1173293.html

相关文章

数字化用户裂变怎么做?用户裂变系统推荐

移动互联网时代,企业获取流量的成本非常昂贵,因此需要考虑如何降低流量成本,如选择小程序等的私域运营方式。但流量只是结果,本质上是要打通用户的社交关系链,那又要怎么做呢? 裂变的要素就是以利益驱动&am…

基于springboot实现CSGO赛事管理系统【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现CSGO赛事管理系统演示 摘要 CSGO赛事管理系统是针对CSGO赛事管理方面必不可少的一个部分。在CSGO赛事管理的整个过程中,CSGO赛事管理系统担负着最重要的角色。为满足如今日益复杂的管理需求,各类的管理系统也在不断改进。本课题所设计…

ranger的只读(read)权限引起的

开发人员只要只读权限 在rang中只给了read的权限 ranger的read和select的权限区别 read 权限: read 权限允许用户读取(查看)文件或目录的内容。 具有 read 权限的用户可以查看文件的内容,读取目录中的文件列表和元数据&#xf…

Spring Security漏洞防护—HTTP 安全响应头

一、默认的 Security Header Spring Security提供了 一套默认的安全HTTP响应头,以提供安全默认值。虽然这些头信息中的每一个都被认为是最佳实践,但应该注意的是,并不是所有的客户端都使用这些头信息,所以鼓励进行额外的测试。 …

基于springboot实现漫画网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现漫画网站管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括…

H5前端开发——BOM

H5前端开发——BOM BOM(Browser Object Model)是指浏览器对象模型,它提供了一组对象和方法,用于与浏览器窗口进行交互。 通过 BOM 对象,开发人员可以操作浏览器窗口的行为和状态,实现与用户的交互和数据传…

业务应用前端实战经验总结

做业务项目和做产品工具有很大的不同,大多数前端工程师都有几个项目经验,不过有些人做了很多项目,却十分雷同,没有什么进步,今天,我斗胆把自己的一些感悟分享给需要的人,有用的话就吸收&#xf…

严重内卷的电商直播还有机会吗?教你如何在电商直播中脱颖而出!

用行业内的一句话来讲:如今的电商直播带货,没有最卷只有更卷! 过去,电商直播带货只是中规中矩的“叫卖式”直播。随着“全民直播带货”的潮流兴起,电商直播带货行业的竞争变得越来越激烈:同质化的内容不断…