前言:
-
数据库的安全性需要做一个保证,那么,本地备份策略显然是不太安全的,如果,本地磁盘有突发损坏问题,将无法恢复数据库。
因此,远程备份也就是把备份文件拷贝到远端服务器是一个必要的措施。
- 远程备份策略的几种方案对比
远程备份的具体实现我们可以使用的工具是比较多的,其中比较高效的是再生龙,scp,rsync以及pg_dump命令远程连接数据库备份。
那么,这几种工具到底使用哪个比较好呢?
- 1,再生龙的配置比较复杂,对系统的侵入比较多,因此,这个工具并不适用于我们的场景。
- 2,Scp命令需要配置服务器免密或者明文使用服务器的密码,对服务器的安全是有一定损害的,因此,scp也不太适用于我们的场景。,
- 3,Pg_dump命令同样需要postgresql数据库的特权账号和密码,基本是明文形式,对服务器的安全也是有一定的损害,因此,pg_dump也是不太适用的,并且,网络直连数据库也是对磁盘有一定的损害。
- 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_backcomment = ftp export arearead only = noauth users = rsyncsecrets file = /etc/rsyncd.passwd
[etc_back]
path = /mnt/etc_backcomment = etc export arearead only = noauth users = rsyncsecrets 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
未完待续