centos定时备份?centos7维护到2024年

大家好,今天来为大家解答centos定时备份这个问题的一些问题点,包括centos7维护到2024年也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

GitLab 远程 定时备份

一、环境准备

1.gitlab所在的服务器A(centos7,192.168.1.1)

2.备份服务器B(centos7,192.168.1.2)

3.gitlab本地备份目录设置为/var/opt/gitlab/backups/log,本篇也是以此展开

gitlab已经配置了本地备份。如果没有配置,可以参考 。

二、通过密钥配对取消scp传输密码的限制

手动备份数据费时费力。最好的方法就是通过脚本实现远程自动备份。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码。

为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用 rsync,scp,rexec等命令来做的远程备份了。

2.1生成密钥对

假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码。那我们可按照下面的步骤来做:

** 1)在gitlab服务器A上生成rsa证书**

1、生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。

2、因为之前已经有/root/.ssh/id_rsa文件存在,因此提示你是否覆盖,输入y表示覆盖

3、接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。

4、接着输入确认密码,输入完之后,回车密钥对就生成完了。

这样,在/root/.ssh下生成id_rsa和 id_rsa.pub两个文件,其中公共密钥保存在/root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

** 2)在gitlab服务器A上cp生成rsa公钥证书**

在/root/.ssh下复制备份一份id_rsa.pub命名为 id_rsa.pub.A,以便拷贝到远程服务器B。

2.2生成rsa公钥证书上传到备份服务器B

先在服务器B上创建目录/root/.ssh。

使用scp命令进行远程复制,将服务器A生成的id_rsa.pub.A拷贝到服务器B的/root/.ssh目录下。

此时使用scp命令需要输入密码,当把下面的“2.3密钥配对”执行后,以后gitlab服务器A使用scp命令复制文件到备份服务器B的话,就不需要输入密码了。

2.3密钥配对

1)创建authorized_keys文件

在备份服务器B的/root/.ssh下创建authorized_keys文件。

2)将id_rsa.pub.A文件内容追加到authorized_keys文件中

通过 cat命令把id_rsa.pub.A追写到 authorized_keys文件中。

3)修改authorized_keys文件的权限

authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。

4)测试上传文件是否还要输入密码

不放心的话,立刻测试下gitlab服务器A使用scp命令复制文件到备份服务器B是否还要输入密码。

发现在2.3之前,由于没有设置ssh证书授权认证时,上传需要输入密码;2.3操作完后,由于授权认证,已经不需要输入密码了。

三、定时将备份文件传到备份服务器

3.1创建远程备份脚本

在gitlab服务器A上,在/root目录下创建定期备份脚本auto_backup_to_remote.sh。

添加下面的内容,并wq保存。

3.2修改远程备份脚本auto_backup_to_remote.sh的权限

要能让系统执行 auto_backup_to_remote.sh,必须修改该脚本的权限。

3.3创建日志存放目录

3.4测试远程备份脚本的功能是否可用

现在为了验证脚本是否可以正常运行,我们需要手动执行脚本。

在gitlab服务器A上执行find命令,看是否能够正常查找出我们要scp到远程服务器的Gitlab备份文件。

手动执行脚本auto_backup_to_remote.sh,看是否能够正常上传

等待1-2分钟左右,查看备份服务器B的目录/root/gitlab_backup下是否有服务器A传过来的备份文件。

在备份服务器B上能找到服务器A传过来的备份文件,说明远程备份脚本的功能OK。

如果每次上传都通过人工运行脚本的方式,人工的消耗太大,接着配置定时执行该脚本。

3.5添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab-e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab-e。

结合我之前对公司gitlab本地备份的设计,故设计在备份完10分钟后上传,故分别在每天12:10、19:10进行备份,故添加下面的内容,wq保存。

重启crontab

四、定时删除备份服务器上的备份文件

每个Gitlab备份文件都很大。因此每天备份两次,过不了多久的话,备份服务器B上的磁盘空间可能就会被Gitlab备份文件占用完。

故需要定期清理备份文件,参考备份服务器的空间,暂定保留14天的备份文件。

4.1创建删除过期备份文件的脚本

设计备份服务器B的/root/gitlab_backup作为接收远程上传备份文件的目录,故在备份服务器B上,先创建该目录。

创建删除过期备份文件的脚本auto_remove_old_backup.sh。

添加下面的内容,并wq保存。

4.2修改auto_remove_old_backup.sh脚本的权限

4.3添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab-e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab-e。

设计凌晨0点执行删除过期备份文件的脚本,故添加下面的内容,wq保存。

重启crontab

Linux下设置每天自动备份数据库的方法

本文以Centos7.6系统与Oracle11g为例:

一.先找到数据库的环境变量

如果是在root账户下,须先登录到数据库所在账户

su oracle

cat~/.bash_profile

export PATH

export ORACLE_BASE=/home/nnc_db/app

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_SID=orcl环境变量就已经找到了!

二.编辑备份的脚本文件

vi bak.sh

先把环境变量复制粘贴到bak.sh文件,

然后定义一个变量date(它的作用是为每天备份的文件命名便于识别),使用expdp命令导出数据库,代码如下:

date=$(date+%Y%m%d)

expdp数据库账号/数据库密码@数据库实例名 dumpfile=${date}_db_auto_backup.dmp schemas=数据库账号名 compression=all退出保存。

三.使用Linux的crontab命令设置定时任务

crontab-e

crontab-e的作用是使用文本编辑器设置定时任务(crontab具体用法在此不赘述);

输入后在文本编辑器输入

0 0***/home/nnc_db/bak.sh

以上代码意为每天的0点0分执行/home/nnc_db下的bak.sh文件,也就是第二步所创建的文件,需根据自身的备份时间以及文件目录调整;

然后重启crond服务即可

service crond restart

四.测试任务是否成功运行

根据我在网上收集的资料来看,有朋友说crontab-e设置成功后三分钟不会生效!也就是说假如你在上午10:00设置好任务,想要测试能否成功,把下次的定时任务设到10:02分,有可能会出现问题!但是这里我用

*****/home/nnc_db/bak.sh

设置为每一分钟运行一次,发现没有问题。

还有一个新手大坑就是你直接运行脚本文件会在命令行输出详细过程,而设置定时任务运行是没有反应的!所以想要看自己的脚本是否自动运行了需要到/var/spool/mail/下看日志文件,如图

总结

以上所述是小编给大家介绍的Linux下设置每天自动备份数据库的方法,大家如有疑问可以留言,或者联系站长。感谢亲们支持!!!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

怎么全盘备份系统centos系统备份与恢复教程

一套完整的生产应用系统,其部署和实施可能需要涉及多方厂商的协助和配合,如有硬件工程师、软件开发商、操作系统厂商、数据库厂商、系统集成商等等。若应用架构比较复杂,可能就完成基础的部署都需要一个不短的周期。项目开始时,协调这些人力、物理可能是比较简单的,但系统是不可能不发生问题的,若因某些原因,后期更换了服务器硬件或需重新部署整套应用,那该是多麻烦的一件事情。另外,如果需要同时在多台服务器上安装几乎完全相同的软件,一台一台安装相信也不是一个好办法吧。

这时,Mondo Rescue软件或许可以帮到您。有点像Windows下的Ghost,但也有点不同。Ghost对Linux的操作,若采用全盘复制功能时,两边的硬盘大小不一会很难处理;若采用分区复制,那MBR需要手动创建,操作比较麻烦。而Mondo采用自带启动镜像的方式,不需要依赖第三方的操作系统软件,可直接进行系统复制的工作,操作简单。

一、Mondo Rescue简介

Mondo Rescue是一个开源免费的故障恢复和备份工具,用户可以轻松地创建系统(Linux或Windows)克隆或备份的ISO镜像,可以将这些镜像存放在CD、DVD、磁带、USB设备、硬盘和NFS上。

Mondo Rescue还可以用来快速恢复或者重新部署工作镜像到其他系统中,万一碰到数据丢失,你还可以从备份介质恢复尽可能完整的系统数据

Mondo Rescue(以下简称Mondo)可以说是Linux下的Ghost,它可以将你的系统像照相一样备份至磁带,CD-R,CD-RW,NFS或硬盘分区。

Mondo广泛支援LVM,RAID,ext2, ext3, JFS, XFS,ReiserFS,VFAT等。这个软件可以一步一步地将Linux系统备份出来,一旦今后出了问题,只要用创建好的MondoCD将系统还原至上次备份时的状态即可。与Ghost相似,在进行备份的使用,应把应用与数据的备份分开处理。也就是说,使用Mondo来备份系统的基本应用配置,生产数据使用资料备份的方式处理,如定时备份到磁带等。

二、Mondo Rescue的官方网站:

三、架构:

Mondo Rescue由Mondo和Mindi两个包组成。Mondo是主程序用来备份和还原。Mindi则类似一个迷你的Linux,它包括核心,模块,函数库及一些做系统维护的重要工具。

免责声明:部分转载内容均有注明出处,转载此文章仅为个人收藏,分享知识,如有侵权,请联系yuanfan2012进行删除

下面介绍安装mondo rescure对系统进行备份与恢复1、在线安装

1)CentOS yum源配置

curl-o/etc/yum.repos.d/CentOS-Base.repo

curl-o/etc/yum.repos.d/epel.repo

sed-i-e'/mirrors.cloud.aliyuncs.com/d'-e'/mirrors.aliyuncs.com/d'/etc/yum.repos.d/CentOS-Base.repo

2)mondorescue.repo源配置

cd/etc/yum.repos.d/

wget

sed-i"s/gpgcheck=1/gpgcheck=0/g" mondorescue.repo

cat mondorescue.repo

3)yum安装mondo

yum makecache

yum install mondo

2、修改分区挂载文件/etc/fstab

分区挂载格式要用盘符去挂载不要用UUID去挂载,不然做好镜像在还原的时候会识别不了

vi修改分区挂载文件:/etc/fstab改成对应的盘符

为了演示方便,下面安装JDK+Zookeeper+Kafka,搭建单节点的kafka服务器进行备份,后面进行利用备份出的镜像进行恢复验证效果

3、运行mondoarchive进行备份

选择备份到本地磁盘Hard disk

选择备份路径

使用gzip方式压缩

压缩率:平均Average

设置ISO镜像的大小

设置镜像名称,这里就kafka_template

需要备份的路径,/代表全系统

需要排除的目录,若没有,留空即可

临时目录

是否备份扩展属性

确认kernel系统内核

备份后是否verify检查

确认是否Proceed开始备份

收集Mindi启动必须的文件信息

备份后的镜像文件

4、利用备份镜像进行恢复

先SFTP下载镜像文件

准备一台虚拟机,加载备份镜像文件

开机启动

输入nuke,格式化分区并恢复所有文件

恢复完成exit退出,待机器重启成功,可以正常登录

下面可以看出恢复成功,系统正常启动,文件均在

阅读剩余
THE END