IT技术博客大学习 共学习 共进步

kvproxy的数据主从复制简介

博学无忧 2015-02-26 22:35:56 浏览 1,502 次
简介

   kvproxy的一个很重要的特性是能实现主从集群间的数据同步。有点类似于mysql和redis的主从数据同步。之所以实现这个功能,是因为在使用memcached的时候,有些时候需要两个集群间保持数据一致。而memcached又没有提供类似的功能。如果想了解更多的kvproxy的一些特性,请查看博文

应用场景

   一般需要搭建主从两个数据库集群的时候,可能会需要数据的同步。什么时候需要搭建两个集群呢?大概有这么几种情况。

   场景一:

   解决单点问题。如,用户登录的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是以+开头的,都使用同步复制。否则,使用异步复制。

   配置文件示例如下:

   [memcached]

   ; 扩展文件名。

   extension=memcached.so

   ; 设置默认后端集群。

   hosts=master

   ; 设置备份集群。所有的写操作命令都会同步到此集群一份。如果未设置,将不进行数据的同步或者异步复制。

   ;hosts_backup=slave

   ; 同步数据复制前缀符号。默认的数据复制为异步复制。如果想数据复制为同步复制,可以把key的前缀设置为指定字符串

   sync_str = “+”

   ; 使用的协议类型 binary 二级制协议 text 文本协议

   proto = binary

   ;;;;;;;;;;;;;;;;

   ; 集群设置 ;

   ;;;;;;;;;;;;;;;;

   ; 集群名

   [master]

   ; ip : 端口号 = “在集群中的标示数字id : 权重”

   ; 同一组中每个后端服务器的标示数字id不能重复

   127.0.0.1:11211=”1:50″

   127.0.0.1:11212=”2:50″

   [slave]

   127.0.0.1:11212=”1:50″

   127.0.0.1:11213=”2:100″

   127.0.0.1:11214=”3:50″

建议继续学习

  1. mysql 主从配置中的server-id的作用 (阅读 7,662)
  2. 内存表在同步环境注意事项 (阅读 5,585)
  3. 也谈PostgreSQL的同步配置(Slony) (阅读 5,407)
  4. MySQL5.5数据库复制搭建报错之Could not initialize master info structure (阅读 5,284)
  5. PHP查询MySQL大量数据的内存占用分析 (阅读 4,924)
  6. MTU值的调整导致MySQL复制异常 (阅读 4,663)
  7. MySQL复制的概述、安装、故障、技巧、工具 (阅读 4,264)
  8. mysql主从同步快速设置 (阅读 3,842)
  9. [MySQL优化案例] — slave延迟很大优化方法 (阅读 3,845)
  10. 如何监控主从之间的延时:seconds_behind_master OR mk-heartbeat (阅读 3,824)