`

大量小文件实时同步方案

阅读更多

一、csync2+inotify实现

http://bbs.linuxtone.org/thread-2707-1-1.html

【关键技术
利用csync2+sqlite实现数据 的高效实时的增量备份,相关目录及文件 信息都存储在sqlite数据库 中,
大大提升了同步的速率和效率;利用intoify触发式(实时)执行csync同步命令 更新文件。

【方案适用】
图片服务器 集群 方案: ReiserFS4+csync2+inotify
网站服务 程序分布式方 案:csync2+inotify+NFS
[注](如,网站程序中存在缓存 目录则排除此目录同步,将缓存目录挂载在NFS上)
分布式集群软件 配置更新同步方案: csync2+inotify
[注](如,集群中heartbeat 相关的配置文件,如apache,nginx 的配置文件,并能执行相关脚本 )

【实战方案范例配置介绍】
系统 :CentOS5.2
结构:bbs.linuxtone.org (负载 均衡后面有三台realserver)
# vi /etc/hosts

引用
bbs1.linuxtone.org 192.168.169.112
bbs2.linuxtone.org 192.168.169.113
bbs3.linuxtone.org 192.168.169.114




一、安装配置csync2
1、相关软件包下载
# mkidr /usr/local/src/csync2
# cd /usr/local/src/csync2
# vi list


# wget –i list

2、编译安装这些软件

引用
# cd /usr/local/src/csync2
tar zxvf libgpg-error-1.7.tar.gz
cd libgpg-error-1.7
./configure && make && make install

tar zxvf libgcrypt-1.4.4.tar.gz
cd libgcrypt-1.4.4
./configure --with-gpg-error-prefix=/usr/local
make && make install

tar zxvf libtasn1-2.1.tar.gz
cd libtasn1-2.1
./configure && make && make install

tar zxvf sqlite-2.8.17.tar.gz
cd sqlite-2.8.17
./configure && make && make install

tar zxvf librsync-0.9.7.tar.gz
cd librsync-0.9.7
./configure
make && make install

tar jxvf gnutls-2.6.6.tar.bz2
cd gnutls-2.6.6
./configure --with-libgcrypt-prefix=/usr/local/
make && make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

tar zxvf csync2-1.34.tar.gz
cd csync2-1.34
./configure
make && make install
make cert
echo "csync2 30865/tcp" >> /etc/services




# vi /etc/xinetd.d/csync2

引用
service csync2
{
disable = no
protocol = tcp
flags = REUSE
socket_type = stream
wait = no
user = root
group = root
server = /usr/local/sbin/csync2
server_args = -i
#only_from = 192.168.169.112 192.168.169.113 192.168.169.114
}


# chkconfig xinetd on
# service xinetd start

# csync2 -k /etc/csync2.bbs.key //生成密解
# scp -P3231 /etc/csync2.bbs.key root@192.168.169.113 :/etc
# scp -P3231 /etc/csync2.bbs.key root@192.168.169.114 :/etc
【注】linuxtone服务器SSH端口 是3231,分别将key文件复制到集群的另外两台 机器上。

# vi /etc/hosts //配置主机名,分别添加到3台机器的hosts文件中.
192.168.169.112 bbs1.linuxtone.org
192.168.169.113 bbs2.linuxtone.org
192.168.169.114 bbs3.linuxtone.org

# mkdir /data/csync_backup //创建备份相关的目录(用于防止修改错误恢复),
如果启用了,分别在三台机器上建立相应的目录。

# vi /etc/csync2.cfg

引用
# csync for bbs.linuxtone.org cluster
# http://www.linuxtone.org
#nossl * *;
group bbsfarm
{
host bbs1.linuxtone.org bbs2.linuxtone.org bbs3.linuxtone.org ; //定义组成员
#
key /etc/csync2.bbs.key;
#
include /data/www/wwwroot/bbs ; //需要同步的目 录

exclude /data/www/wwwroot/bbs/attachments ; // 需要排除的目录。
exclude /data/www/wwwroot/bbs/forumdata ; // 需要排除同步的缓存目录。
# include /etc/apache;
# include %homedir%/bob;
# exclude %homedir%/bob/temp;
exclude *~ .*; //排除同步.开头的文件
#
# action
# {
# pattern /etc/apache/httpd.conf;
# pattern /etc/apache/sites-available/*;
# exec "/usr/sbin/apache2ctl graceful"; //可以匹配相关配置文件,并执行重启脚本 .
# logfile "/var/log/csync2_action.log";
# do-local;
# }
#
backup-directory /data/csync_backup; //防错备份目录,根据自己的需求设置。
backup-generations 3;
auto younger; //同步以最新的文件为标准更新.
}
#
# prefix homedir
# {
# on host[12]: /export/users;
# on *: /home;
# }



3、csync2相关命令介绍
# csync2 –vvv –T 测试csync配置是否正确,可以看到相关SQL执行过程.
# csync2 –xv 执行同步命令
# csync2 –xvvv 执行同步命令,并显示出详细的信息.

二、利用inotify实现数据的实时同步更新.
1、
安装inotify-tools
# cd /usr/local/src/csync2
# tar zxvf inotify-tools-3.13.tar.gz
# inotify-tools-3.13
# ./configure && make && make install

2、配置inotify触发同步脚本.
# cd /usr/local/sbin
# vi csync2_bbs.sh

引用
#!/bin/bash
src=/data/www/wwwroot/bbs
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
--exclude "\.swp$" \
-e close_write,mod ify,delete,create,attrib \
${src} \
| while read file
do
#csync2 -x >/dev/null 2>&1
csync2 -xv
echo "${src} was csynced....."
done


# chmod a+x csync2_bbs.sh
# ./csync2_bbs.sh //分别在三台机器上创建并执行此脚本,并将其加入/etc/rc.local 中。

3.测试同步是否正常
在三台机器中的任一台创建或者删除一个文件,然后查看其它机器是否创建或删除。
如果遇到问题就用csync2 –xv命令手动调试并,根据错误信息作调整。

三、相关参考及注意事项.
1、相关参考资料:
http://oss.linbit.com/csync2/paper.pdf
http://zhenhuiliang.blogspot.com/2006/04/csync2-is-so-cool.html

【注】目前csync2的资料比较少,在国内基本上没有看到有人编写此类文档,大家遇
到问题可以看官方的mailist或者到http://bbs.linuxtone.org 和相关版主们一起交流,同
时你有什么好的应用 心得和意见也欢迎反馈。

2、应该注意的问题.
缓存相关的目录尽量不要用csync2去处理,这个程序目录尽量交给NFS处理.

配置文件中的backup-directory,如果定义了别忘记在各机器上建立,否则删除相关文件的时候会出现SQL错误。
你也可以把这个backup-directory相关的配置注掉不启用。

 

 

二、

rsync+inotify

三、

google开源项目Openduckbill(依赖于inotify- tools)

四、
分享到:
评论

相关推荐

    linux下Rsync+sersync实现文件数据实时同步

    在Linux环境中,文件数据的实时同步是系统管理中的重要...两者结合使用,可以构建出既实时又稳定的数据同步方案,满足各种复杂的企业级需求。在实际操作中,应根据具体的业务场景和需求,灵活选择和配置这两个工具。

    hashtree的小文件同步方案

    综上所述,"hashtree的小文件同步方案"利用哈希树数据结构和文件监控技术,实现了一个高效、实时的文件同步系统。通过Python脚本`mirror.py`、`watch.py`和`server.py`,我们可以了解到这一方案的具体实现细节,包括...

    unison实现双系统文件实时同步

    2. 考虑网络状况,避免在带宽有限的环境中进行大量文件同步。 3. 对于敏感数据,使用加密的SSH连接以保护数据安全。 4. 定期检查同步日志,确保同步过程无误。 总之,通过Unison、inotify-tools、SSH和其他相关工具...

    C#实现的文件同步软件

    本项目"用C#实现的文件同步软件"聚焦于这个需求,旨在提供一种高效、可靠的文件传输解决方案。C#作为.NET框架的主要编程语言,具有丰富的类库和强大的跨平台能力,使得它成为开发此类应用的理想选择。 首先,我们要...

    跨Windows和Linux操作系统的开源文件同步工具

    综上所述,这个开源文件同步工具提供了一种跨平台、高效率的解决方案,适用于网站备份、多服务器环境的数据一致性维护,以及在Windows和Linux系统间的数据迁移。其内置的rsync特性,结合开源社区的支持,使其在性能...

    基于 Electron & Vue.js 的文件同步客户端

    例如,对敏感的云服务凭据进行加密存储,使用安全的传输协议(如 HTTPS)进行网络通信,以及合理管理内存和磁盘资源,避免因大量文件同步导致的性能瓶颈。 总的来说,这个基于 Electron & Vue.js 的文件同步客户端...

    rsync+inotify实时同步

    rsync+inotify 的实时同步方案解决了传统 rsync 的效率和实时性问题,特别是在处理大量文件时。通过 inotify 实时监控文件系统事件,一旦检测到变化,rsync 立即进行同步,确保了数据的一致性。这种方法特别适合对...

    个人文件同步备份系统

    个人文件同步备份系统的应用广泛,无论是日常办公、学习还是创作,都可以提供高效的数据管理解决方案。尤其对于那些依赖大量文件的专业人士,如设计师、程序员、作家等,这样的系统更是不可或缺。 总的来说,个人...

    FTP文件同步服务

    FTP文件同步服务是一种基于FTP(File Transfer Protocol)协议的解决方案,用于在本地计算机与远程服务器之间自动保持文件和文件夹的同步。FTP是互联网上广泛使用的标准协议之一,主要用于在不同系统之间交换文件。...

    文件系统同步器

    这种方法虽然简单,但在处理大量文件时可能会效率低下,因为每次同步都需要检查所有文件。 第二个解决方案,"FileSystemSyncher2",可能在前一个基础上进行了优化。它可能引入了更高级的同步算法,例如哈希检查,...

    用SWT写的文件同步程序

    通过上述分析,我们可以看到这个基于SWT的文件同步程序涵盖了文件系统操作、同步算法、用户界面设计等多个方面的技术知识,对于开发人员来说,这些都是构建高效、可靠的文件同步解决方案所需掌握的关键技能。

    自同步局域网免费文件同步工具

    【自同步局域网免费文件同步工具】是一种实用的解决方案,尤其对于那些在同一个局域网环境下工作的用户。它能够实现在多台计算机之间自动、实时地同步指定文件夹的内容,确保所有设备上的文件数量和内容保持一致。...

    文件同步下载程序示例.rar_文件同步

    在IT领域,文件同步下载程序是一个常见的需求,特别是在分布式系统、多设备协同工作或云存储服务中。...通过这个示例,开发者可以了解到文件同步的基本原理和技术实现,为构建自己的同步解决方案打下基础。

    eclipse,Myeclipse修改js文件同步插件

    "eclipse,Myeclipse修改js文件同步插件"就是为了解决这个问题而存在的,它允许开发者在不重启项目的情况下即时查看和测试JavaScript文件的修改效果。这个插件适用于Eclipse和MyEclipse集成开发环境(IDE),极大地...

    一款轻量级的开源分布式文件系统,功能包括:文件存储、文件同步、文件上传、文件下载等,解决了文件大容量存储和高性能访问问题

    2. **文件同步**:文件的更新和修改会自动同步到集群中的其他节点,确保所有副本的一致性。这种实时同步机制使得在多台服务器之间保持文件的最新状态变得简单。 3. **文件上传**:FastDFS提供了一套简单易用的API...

    数据库同步热备解决方案(某区政府)

    1. **日志传输**:这是通过复制数据库的日志文件来实现同步的方法。主数据库的操作会被记录在日志中,这些日志会被发送到备份数据库,然后应用到备份数据库上,以保持同步。 2. **事务复制**:这种方法关注的是单个...

    多线程的批量线程同步解决方案

    在这种情况下,可能会采用批处理技术,将大量小任务合并为少数大任务,减少线程切换开销。以下是一些策略: 1. **工作窃取队列(Work Stealing Queue)**:线程可以从公共队列中获取任务,也可以从其他线程的工作队列...

    FTP自动文件同步软件FileGee.docx

    文件同步对于企业而言至关重要,尤其是对于那些依赖大量数据运行的企业,如数据库管理,能够实时保护文件免受意外丢失或损坏。 文件同步的基本概念是指将两个或多个文件夹内的内容保持一致。这可以通过在一台计算机...

    NAS海量文件存储数据异地容灾方案.docx

    另一种实时同步方案则通过在所有前端业务服务器上安装监控客户端,结合一台专门的“英方NAS监控服务器”。当任何一台服务器修改数据时,监控服务器会实时读取并发送到容灾端,实现秒级同步。这种方式旁路监听,不对...

Global site tag (gtag.js) - Google Analytics