数据库异地备份(脚本)

一:前期准备

至少需要两台主机

192.168.175.200       vip

192.168.175.250       node1

做密钥否则不能拷贝过去

命令:[[email protected] ~]#cd /root/.ssh

命令:[[email protected] .ssh]#ssh-copy-id -i id_rsa.pub 192.168.175.250

测试一下,命令:[[email protected] .ssh]# ssh 192.168.175.250             #不需要密码直接连接

1.另一台主机最好提前创建一个数据存放地

命令:[[email protected] ~]# mkdir -p /data/rsyncdata/databak/

2..备份脚本内容

命令:[[email protected] ~]# vim databak.sh

#!/bin/bash
date=$(date +%Y%m%d%H%M%S)              #设置时间变量,括号内是设置时间的格式
mysqldump -uroot -p‘123456‘ -A > /root/$date-192.168.175.200.sql                                          
#MySQL所有数据导出复制到/root/$date-192.168.175.200.sql文件中
#注意:yum安装最好是用命令mysqldump的绝对路径而用tar包安装,可以不用
if [ $? -eq 0 ];then      #判断上次执行命令是否正确,正确为0,不正确非0
echo "数据备份完成"       #正确执行,输出结果
scp /root/$date-192.168.175.200.sql 192.168.175.250:/data/rsyncdata/databak/
#将导出的文件远程复制到192.168.175.250主机上的/data/rsyncdata/databak/文件中
sleep  4    #睡眠4秒
echo "远程备份完成"      #输出结果
rm -rf /root/$date-192.168.175.200.sql       #删除本地主机导出的数据
fi      #结束

3.设置执行计划任务

(1)先将脚本加执行权限(x)

命令:[[email protected] ~]# chmod +x databak.sh

(2)周期性任务要用的命令是crontab,那么这里有个选项-e(edit)表示编辑输入

命令:[[email protected] ~]# crontab -e

0 * * * * sh /root/databak.sh             #分时日月周的顺序,这是每小时执行一次脚本

(3)编写完这个计划任务以后,还是要检查一下这个任务是否在启动

命令:[[email protected] ~]# ps -le | grep cron

S表示确实是启动的,如果没有启动可以输入命令:/etc/rc.d/init.d/cron start就可以了

远程复制数据库就已经搭建好了,接下来在192.168.175.250上需要搭建rsync同步服务然后通过防火墙映射出去

二:搭建rsync同步服务

1.安装rsync并查看端口号

命令:[[email protected] ~]# yum -y install xinetd rsync

命令:[[email protected] ~]# rsync --daemon

命令:[[email protected] ~]# netstat -antup | grep 873

tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2897/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2897/rsync

2.[[email protected] ~]# vim /etc/rsyncd.conf

uid = root     #运行进程的身份
gid = root     #运行进程的组
address =192.168.1.64      #监听IP是南阳IP
port=873        #监听端口
hosts allow=192.168.0.0/24        #允许同步客户端的IP地址,可以是网段,或者用*表示所有192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes       #是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes
max connections=5     #最大连接数
pid file =/var/run/rsyncd.pid     #进程PID,自动生成
lock file =/var/run/rsync.lock       #指max connectios参数的锁文件
log file =/var/log/rsyncd.log    #日志文件位置
motd file =/etc/rsyncd.motd
#客户端登陆之后弹出的消息,需要创建

[wwwroot] #共享模块名称
path =/web-back/ #路径
comment=used for web-data root  #描述
readonly=false  #设置服务端文件读写权限
list=yes  #是否允许查看模块信息
auth users=rsyncuser  #备份的用户,和系统用户无关
secrets file=/etc/rsync.passwd  #存放用户的密码文件,格式是用户名:密码

创建客户端弹出消息文件和用户密码

命令:[[email protected] ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd             #提示文件

命令:[[email protected] ~]# vi /etc/rsync.passwd

rsyncuser:password123

命令:[[email protected] ~]# chmod 600 /etc/rsync.passwd

测试说明:格式(不需要操作)

命令:[[email protected] ~]# rsync -avz --delete /var/www/html [email protected]::wwwroot --password-file=/etc/rsync.passwd
   #rsync语法:rsync选项 用户名@备份源服务器IP::共享模块名 目标目录,新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可

3.启动服务使配置生效

命令:[[email protected] ~]# rsync --daemon --config=/etc/rsyncd.conf

命令:[[email protected] ~]# netstat -antup | grep :873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2897/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2897/rsync

4.设置脚本

(1)南阳数据到本地执行脚本

命令:[[email protected] ~]# mkdir -p /data/nanyang

命令:[[email protected] ~]# cd /data/ && vim /data/nanyangto-bendi.sh

#!/bin/bash
export RSYNC_PASSWORD="password123"
rsync -avz --progress [email protected]::wwwroot  /data/nanyang/                 #通过南阳外网将数据传到本地,rsyncuser是rsync自带用户
exit

命令:[[email protected] ~]# chmod +x /data/nanyangto-bendi.sh

(2)每天删除一次旧的数据 因为打包的数据也同步过来了

命令:[[email protected] ~]# vim /data/rm-jiubao.sh

#!/bin/bash
rm -rf /data/nanyang/databak/*
命令:[[email protected] ~]# chmod +x /data/rm-jiubao.sh[[email protected] ~]# chmod +x /data/rm-jiubao.sh

5.设置分时日月周

本地服务器

命令:[[email protected] ~]# crontab -e

0 * * * * sh /root/databak.sh
*/2 * * * * sh /data/nanyangto-bendi.sh
1 0 * * * sh /data/rm-jiubao.sh
命令:[[email protected] ~]# crontab -l

总结:。。。。。。。。。。。。。此处省略一万字

原文地址:https://www.cnblogs.com/zgqbky/p/12172914.html

时间: 2024-11-13 08:17:39

数据库异地备份(脚本)的相关文章

windows下oracle数据库自动备份脚本

1.根据日期自动生成 Oracle 备份文件 @echo off echo 正在备份Oracle数据库,请稍等...... exp userid='用户名/密码@SID' file=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=res echo 任务完成! 2.根据日期时间分秒自动生成 Oracle 备份文件 @echo off

mysql数据库自动备份脚本分享

前几篇博客已经相继公开了去转盘网的所有技术细节,如下: 百度网盘爬虫 中文分词算法 邀请好友注册 js分页部分代码 这篇博客我将继续公开数据库自动备份的代码.可以这么说,没有数据库,一切就是个蛋,没有数据库备份,一切还是个蛋,你可以想象数据库备份多么重要.不会linux,不会写shell的朋友麻烦先去补补.不过你说我牛逼,不补也能看懂,那没问题,哈哈,废话不说了.老规矩,上代码: #!/bin/bash time=$(date +"%d-%m-%Y") pre=/home/ubuntu

oracle数据库shell备份脚本

1.root用户下创建备份路径: mkdir /opt/backup chown oralce:oinstall /opt/backup 2.oracle用户创建备份脚本路径: mkdir /opt/app/oracle/bin cd /opt/app/oracle/bin 3.创建备份脚本 vi backup.sh #!/bin/sh export ORACLE_BASE=/opt/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.

Python 生产环境Mysql数据库增量备份脚本

Mysql数据库常用的办法是通过mysqldump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍blog介绍xtrabackup的热备工具.下面的脚本是基于xtrabackup实现自动备份数据库的功能. 需求描述: 每天晚上23点,对数据库进行一次完整备份.第二天0-22点,每小时进行一次增量备份.每次备份前把上次的完整备份和23次增量备份移动到指定目录里,保留7天的数据. ps:不要问我,为什么是23点执行完整备份,0点不更好处理吗?bingo,这是

Oracle数据库定时备份脚本

一.编写脚本 vim /home/backup/oraclebk.sh #! /usr/bin #路径名,指定备份的路径 FILEPATH=/home/backup/oracledata #根据指定日期格式,定义备份数据库文件名 FILENAME=`date +"%Y%m%d_%H%M"` #切换至指定路径,并创建文件夹 cd $FILEPATH mkdir $FILENAME chmod 775 $FILENAME #oracle变量设置 export USER=oracle; ex

oracle数据库自动备份脚本

::通过exp命令导出远程机器(192.168.2.1)上指定服务(orcl)指定用户(pmis)及密码(pmis)的数据 ::运行该脚本的机器必须安装oracle @echo off @echo [备份pmis系统的数据] set hh=%time:~0,2% set hh=%hh: =0% set sid=127.0.0.1/orcl set backdir=D:\oracle_bak set backfile=%backdir%\%date:~0,4%%date:~5,2%%date:~8

sqlserver2008R2数据库自动备份脚本

1 CREATE proc [dbo].[usp_autoBackupDB] 2 @dbname sysname=null --要备份的数据库名,不指定即为全部备份 3 ,@path nvarchar(128)='d:\' --备份目录路径 4 ,@backup_type varchar(16)='database' --备份类型,可以为database,log 5 ,@backup_sysdb int=0 --是否备份系统数据库,0为不备份,1为备份 6 as 7 set nocount on

sqlserver2008数据库自动备份脚本

CREATE proc [dbo].[usp_autoBackupDB] @dbname sysname=null --要备份的数据库名,不指定即为全部备份 ,@path nvarchar(128)='d:\' --备份目录路径 ,@backup_type varchar(16)='database' --备份类型,可以为database,log ,@backup_sysdb int=0 --是否备份系统数据库,0为不备份,1为备份 as set nocount on; declare @dbc

mysql数据库分库备份脚本

版本1 for dbname in `mysql -uroot -poldboy123 -e "show databases;" |grep -Evi "database|informa|perfor"` do mysqldump -uroot -poldboy123 --events -B $dbname|gzip >/opt/bak/${dbname}_bak.sql.gz done 版本2 #!/bin/bash MYUSER=root MYPASS=o