前言:

  • 数据库的安全性需要做一个保证,那么,本地备份策略显然是不太安全的,如果,本地磁盘有突发损坏问题,将无法恢复数据库。

    因此,远程备份也就是把备份文件拷贝到远端服务器是一个必要的措施。

  • 远程备份策略的几种方案对比

远程备份的具体实现我们可以使用的工具是比较多的,其中比较高效的是再生龙,scp,rsync以及pg_dump命令远程连接数据库备份。

那么,这几种工具到底使用哪个比较好呢?

  1. 1,再生龙的配置比较复杂,对系统的侵入比较多,因此,这个工具并不适用于我们的场景。
  2. 2,Scp命令需要配置服务器免密或者明文使用服务器的密码,对服务器的安全是有一定损害的,因此,scp也不太适用于我们的场景。,
  3. 3,Pg_dump命令同样需要postgresql数据库的特权账号和密码,基本是明文形式,对服务器的安全也是有一定的损害,因此,pg_dump也是不太适用的,并且,网络直连数据库也是对磁盘有一定的损害。
  4. 4,Rsync远程备份

Rsync作为一个专业的数据同步软件,支持增量同步,因此,该工具是十分适合远程备份的,该工具具有配置简单,安全性有保证(可设置密码),备份效率高的特点。

一,

数据库的远程备份的实现案例

计划使用两台服务器,一台服务器安装了postgresql,该服务器的IP地址为192.168.123.60,在远备中的角色为客户端,推送数据的。

另一台服务器只安装了rsync,该服务器的ip地址为192.168.123.61,在远备中的角色为服务器,接受数据的,也就是说60服务器上的本地备份文件以及物理文件推送到该服务器上进行保存,从而达到远备的目的。

二,

Rsync远程备份的实现步骤

1,

在61上执行以下:

安装rsync,如果是最小化安装,通常没有rsync,需要yum安装, yum install rsync -y

2,

编辑 /etc/sysconfig/rsyncd ,内容如下:

OPTIONS="/etc/rsyncd.conf"

3,

编辑/etc/rsyncd.conf,内容如下:

uid = root
gid = root
port = 11873
use chroot = yes
max connections = 4
hosts allow = *
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd/rsyncd.log
lock file =/var/run/rsync.lock
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[httpd_back]
       path = /mnt/httpd_back
       comment = ftp export area
        read only = no
        auth users = rsync
        secrets file = /etc/rsyncd.passwd
[etc_back]
path = /mnt/etc_back
       comment = etc export area
        read only = no
        auth users = rsync
        secrets file = /etc/rsyncd.passwd

4. 日志文件的生成

mkdir -p /var/log/rsyncd/  && touch /var/log/rsyncd/rsyncd.log && chmod 755 /var/log/rsyncd/rsyncd.log

5.根据  /etc/rsyncd.conf这个配置文件,生成账号和密码保存文件

vim /etc/rsyncd.passwd    #文件内容如下:

rsync:你要设定的密码,客户端60使用的。

6. 设定账号密码文件权限为600


chmod 600 /etc/rsyncd.passwd

7.根据 /etc/rsyncd.conf 这个配置文件,生成存放同步及备份文件或目录的目录

mkdir -p /mnt/httpd_back/
mkdir -p /mnt/etc_back/

8.启动服务并加入开机启动,查看服务状态

systemctl enable rsyncd && systemctl start rsyncd && systemctl status rsyncd

在60服务器,也就是备份文件存放的服务器执行推送:

vim /etc/rsync.passwd

密码,和服务器端设定的密码一致,只写密码什么都不写

chmod 600 /etc/rsync.passwd

编写推送脚本(按实际情况填写):

#!/bin/bash
#!auther zsk
rsync -avz --port=11873 /usr/local/pgsql/ rsync@192.168.123.61::httpd_back --password-file=/etc/rsync.passwd

未完待续

06-10 07:03