一般需要搭建主从两个数据库集群的时候,可能会需要数据的同步。什么时候需要搭建两个集群呢?大概有这么几种情况。
场景一:
解决单点问题。如,用户登录的session使用一台memcached存储。如果这台memcached机器故障,可能会导致全部用户登录状态丢失。这种情况下,可以再启动一个memcached,用于备份。
场景二:
解决网络延迟问题。如,你的应用部署在两个机房。而两个机房的网络延迟比较大。如果只在一个机房部署memcached集群,可能会导致响应时间明显加大,很大的影响了用户体验。这时,就需要在两个机房各部署一个memcached集群。处理请求时,只使用本机房的memcached。
kvproxy支持两种类型的数据复制策略。即,同步复制和异步复制。
同步复制就是,当有数据写操作(set delete add 等)时,先写主集群,然后写从集群,两个集群都写完后,最后给客户端响应。
优点:能保证数据的及时同步到从集群。
缺点:客户端等待时间过长。
异步复制就是,当数据写操作(set add 等)时,先谢主集群,然后给客户端响应,最后写从集群。
优点:能快速响应客户端。
确定:数据同步有延迟。
首先,在配置文件中建立两个集群。组名可以随意定。主集群叫master,从集群叫slave。
其次,在配置文件中修改hosts和hosts_backup两个配置项。hosts配置项用于设置主集群名。hosts_backup配置项用于设置从集群名。
最后,设置同步复制key前缀。如,我们设置sync_str = '+',那么只要key是以+开头的,都使用同步复制。否则,使用异步复制。
配置文件示例如下: