ZODB复制存储
项目描述
ZODB复制存储(ZRS)为ZODB提供数据库复制功能。对于每个数据库,可以定义一个主存储和一个或多个次级存储。次级存储将自动从主存储复制数据。
复制优于备份,因为只要次级存储正在运行,次级数据就会保持更新。在主存储失败的情况下,只需重新配置一个次级存储为主存储,它就可以开始处理应用程序请求。
功能
主/次级复制
只读次级存储的支持
要求
ZODB 3.9或更高版本。
安装
ZRS与其他Python包一样安装,通过安装zc.zrs包使用easy_install、zc.buildout、pip等。
使用ZRS
ZRS提供了两种ZODB存储实现:主存储和辅助存储。这两种存储都使用文件存储。
主存储是可读可写的存储。
辅助存储是只读的。
辅助存储可以被只读应用程序客户端使用,以减少服务器负载。
辅助存储从主存储或其他辅助存储复制数据。
理论上,ZRS存储可以在需要ZODB存储的任何地方使用。然而,在实践中,它们通常用于ZEO服务器。
使用ZConfig配置
如果使用ZConfig来配置ZODB存储的应用程序,例如ZEO服务器或Zope,则ZRS主存储或辅助存储的配置可以像其他存储一样包含在配置文件中。例如,要配置主存储,可以使用以下内容:
%import zc.zrs <zrs> replicate-to 5000 <filestorage> path /path/to/data/file </filestorage> </zrs>
以下是对每一行的解释
%import zc.zrs
导入语句是必需的,用于加载ZRS的ZConfig模式定义。
<zrs>
zrs部分定义了一个ZRS存储。一个ZRS存储可以是主存储或辅助存储。没有replicate-from选项的ZRS存储(如上面的示例)是一个主存储。
replicate-to 5000
replicate-to选项指定了复制地址。辅助存储将连接到该地址以下载复制数据。此地址可以是端口号或主机名(接口名称)和端口号,由冒号分隔。
<filestorage> path /path/to/data/file </filestorage>
一个ZRS存储部分必须包含一个filestorage部分,指定一个包含数据的文件存储。
配置辅助存储与配置主存储类似
%import zc.zrs <zrs> replicate-from primary-host:5000 replicate-to 5000 keep-alive-delay 60 <filestorage> path /path/to/secondary/data/file </filestorage> </zrs>
对于辅助存储,使用replicate-from选项指定从何处复制数据。
由于主存储和辅助存储通常位于不同的机器上,因此通常在replicate-from选项中指定主机。
辅助存储还可以指定一个replicate-to选项。如果使用此选项,则其他辅助存储可以从辅助存储而不是从主存储复制。
辅助存储还支持以下可选选项
- keep-alive-delay SECONDS
在某些网络配置中,TCP连接在长时间无活动后会被中断。这甚至可能以一种客户端无法检测到断开连接的方式完成。为了防止这种情况,可以使用keep-alive-delay选项使辅助存储定期向服务器发送无操作消息。
代码和贡献
最近更改
有关早期更改,请参阅HISTORY.rst。
3.1.0 (2017-04-07)
Python 3(3.4和3.5)支持。
当Twisted支持Python 3.6时,将添加3.6支持。(在Python 3.6下存在一些令人担忧的测试失败。)
API的细微便利性更改:在实例化主存储或辅助存储时,您可以传递一个文件名而不是存储实例,系统将自动创建文件存储。
3.0.0 (2017-04-04)
添加对ZODB 5的支持
删除ZooKeeper支持。