最具影响力的数字化技术在线社区

168主编 发表于 2017-2-7 18:15:34

如何在 Linux 下进行实时增量数据备份

备份的目的是为了防止自然灾害、病毒侵入、人为破坏等,随着数据量的增长,基于安全、性能以及存储空间的考虑,实时且增量地对数据进行备份成为企业的普遍需求。
今天,我们将和大家分享如何在 Linux 下将本地业务数据实时备份至 QingStor 对象存储的存储空间中。
本方案采用 lsyncd 实时地监控指定目录在文件系统层次的变化,当该目录下发生文件创建、重命名 、删除等操作时,qsctl 便会被自动调用以将数据同步至指定的 QingSor 对象存储的存储空间中。
因为 qsctl 支持增量同步,所以整个方案可以做到实时且增量的数据备份。
下面给大家介绍完整的配置步骤。
环境要求
本方案仅支持 Linux Kernel 2.6.13 及其以后的版本,且要求 Kernel 编译选项 CONFIG_INOTIFY_USER 为开启状态 (默认为开启状态)。用户可以使用如下命令来确认自己的系统是否支持该方案:$ grep INOTIFY_USER /boot/config-$(uname -r)如果返回CONFIG_INOTIFY_USER=y则说明可以采用该方案。
软件配置
第一步:安装 lsyncd 。
使用系统对应的包管理器进行安装即可。

[*]Debian、Ubuntu 等系统:
$ sudo apt install lsyncd
[*]CentOS、Fedora 等系统:
$ sudo yum install epel-release && yum makecache$ sudo yum install lsyncd
第二步:使用 pip 安装并配置 qsctl。
qsctl 的详细配置可以参考 qsctl 的文档。$ pip install qsctl -U
使用方法
假设需要同步的目录为 /tmp/example , 待同步的 Bucket 为 example-bucket , lsyncd 的配置文件为 ~/qingstor-backup.conf(lsyncd 没有默认的配置文件,需要在命令行中通过参数的形式给出)。
第一步:编辑 lsyncd 的配置文件settings {logfile    = "/tmp/lsyncd.log",statusFile = "/tmp/lsyncd.status",maxDelays = 10,}bash = {delay = 5,maxProcesses = 1,onCreate = "/path/to/qsctl sync ^source ^target --delete",onModify = "/path/to/qsctl sync ^source ^target",onDelete = "/path/to/qsctl sync ^source ^target --delete",onMove   = "/path/to/qsctl sync ^source ^target --delete",onStartup = "/path/to/qsctl sync ^source ^target --delete",}sync { bash, source = "/tmp/example", target = "qs://example-bucket"}注解: 如果不知道 qsctl 的完整路径,可以使用 which qsctl 以获取。
上述各配置项的含义如下:

[*]logfile: 日志文件配置。
[*]statusFile: 状态文件配置。
[*]maxDelays: 当延时的事件到达此限制后将会直接运行,即使还没有到达延时的事件,单位为秒。
[*]delay: 延时设置,事件触发后将会等待对应时间再运行,单位为秒。
[*]maxProcesses: 最大进程数配置,最多允许同时运行的进程数。

第二步:测试配置

[*]前台运行 lsyncd。
$ lsyncd -nodaemon ~/qingstor-backup.conf
[*]创建一个文件并等待五秒左右。
echo "Hello, QingStor!" > /tmp/example/hello.txt
[*]查看 “hello.txt” 是否在 Bucket “example-bucket” 中存在,若存在,则表示配置成功,否则表示配置存在问题。
$ qsctl ls qs://example-bucket
第三步:后台运行 lsyncd

[*]当测试配置没有问题,且测试时运行结果符合预期时,可以将 lsyncd 放入后台运行。
$ lsyncd ~/qingstor-backup.conf
[*]查看配置文件中指定的状态文件以了解 lsyncd 运行的状态。
$ cat /tmp/lsyncd.statusLsyncd status report at Mon Jan 16 02:31:48 2017Sync1 source=/tmp/incron/There are 0 delaysExcluding:nothing.Inotify watching 2 directories1: /tmp/incron/2: /tmp/incron/test/
[*]查看配置文件中指定的日志文件地址以了解 lsyncd 的运行日志。
$ cat /tmp/lsyncd.logMon Jan 16 02:10:49 2017 Normal: ——Event Init spawns action "/home/xuanwo/.pyenv/shims/qsctl"
Mon Jan 16 02:10:51 2017 Error: ——Failure on startup of "/tmp/incron/".
......Mon Jan 16 02:31:38 2017 Normal: ——Startup of "/tmp/incron/" finished.
Mon Jan 16 02:33:46 2017 Normal: ——--- TERM signal, fading ---
页: [1]
查看完整版本: 如何在 Linux 下进行实时增量数据备份