mysql数据库远程备份至其他主机_Linux下定时自动备份远程主机mysql数据库并拷贝到其他主机...

环境:

操作系统CentOS6.5、mysql5.1

主数据库服务器(A)、备数据库服务器(B)、异地备份服务器(C)

主、备数据库服务器的mysql数据库完全一致,异地备份服务器用于存储备份文件。

实施方案:在主机B建立计划任务,每天凌晨3:00自动定时备份主机A的数据库到主机B,备份文件从主机B拷贝至主机C存储,再删除主机B的数据库备份文件。

实施步骤:

1)在主机B的目录 /usr/local/bin 下新建脚本文件dbbak.sh,实现功能逻辑:

#!/bin/bash

#这是一个简单的mysql数据库逻辑备份脚本

#1.定义数据库连接、目标库信息

MY_USER="这里是主机A的mysql数据库的用户"

MY_PASS="  这里是主机A的mysql数据库的密码 "

MY_HOST="192.168.1.X"     #这里是主机A的IP

MY_CONN="-u $MY_USER -p$MY_PASS -h $MY_HOST"

MY_DB1="这里是主机A的mysql数据库的库名"

#2.定义备份目录、工具、时间、文件名主体

BF_DIR="/data/BAK/"

BF_CMD="/usr/bin/mysqldump"

BF_TIME=`date +%Y%m%d`

NAME_1="$MY_DB1-$BF_TIME"

#3.先导出为.sql脚本,然后再进行压缩(打包后删除原文件)

cd $BF_DIR/

$BF_CMD $MY_CONN $MY_DB1 --default-character-set=utf8 --opt -Q -R --skip-lock-tables | gzip > $BF_DIR$NAME_1.sql.gz

scp $BF_DIR$NAME_1.sql.gz root@192.168.1.X:/data/BAK/DB/FullBackup/      #这里的IP是主机C的IP

rm -rf $BF_DIR$NAME_1.sql.gz

建立好以上脚本内容后,用命令chmod 修改一下.sh权限即可:

如chmod u+x *.sh赋予.sh权限

2)实现主机B和主机C之间用SCP命令免密码传输数据。

在主机B运行:

#ssh-keygen -t rsa

结果如下

QUOTE:

Generating public/private rsa key pair.

Enter file in which to save the key (/home/.username/ssh/id_rsa):#回车

Enter passphrase (empty for no passphrase):#回车

Enter same passphrase again:#回车

Your identification has been saved in /home/.username /.ssh/id_rsa.

Your public key has been saved in /home/.username /.ssh/id_rsa.pub.

The key fingerprint is:

38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c username@localhost

Generating RSA keys:

Key generation complete.

会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub

将id_rsa.pub文件拷贝到主机C的root用户主目录下的.ssh目录下,并且改名为authorized_keys(即:cd ~/.ssh)

这样主机B上使用scp命令复制文件到主机C上将不提示输入密码了,直接自动复制了。也可在主机B上使用scp命令将主机C上文件复制到本机;总之不需要验证,就可以在主机B访问主机C。

注:如果有多台计算机需要与主机C进行复制,则只需将id_rsa.pub中的内容复制到主机C的authorized_keys文件中即可。(经在ssh上验证不可以,主机C只可以与一台服务器不需要验证)。

3)在主机B建立计划任务

# crontab -e

30 2 * * * /root/bin/dbbak.sh      #此处代表凌晨2:30执行dbbak.sh脚本

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

# chkconfig crond on

# service crond status

crond (pid 3263) 正在运行...

#修改计划任务后需重启服务:service crond restart

自此整个方案实施完毕,经笔者测试,功能正常。

特别注意:

后期因进行安全等保合规性的测评工作后,更改了SSH远程连接端口号,以上相关脚本要作相应配置修改。

当主机的SSH远程端口修改后,本文涉及的SCP免密码传输的机制将失效,解决办法如下:

1.SCP指令要加上端口号:scp -P 55822 $BF_DIR$NAME_1.sql.gz root@192.168.1.X:/data/BAK/DB/FullBackup/      #这里的IP是主机C的IP

2.重新执行本文的2)步骤,重建SCP免密码传输机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值