zoukankan      html  css  js  c++  java
  • 通过repcached实现memcached主从复制

    一、环境

    服务器A:ubuntu server 12.04(192.168.1.111)

    服务器B:ubuntu server 12.04 (47.50.13.111)

    二、memcached安装

    sudo apt-get install memcached

    安装完成后可以启动一下,看是否安装好了:

    # sudo memcached -d -m 128 -p 11211 -u root

    # telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set name 0 0 5
    hello
    STORED
    get name
    hello

    可以存取数据即代表安装完成。

    三、repcached安装

    在 https://sourceforge.net/projects/repcached/files/repcached/ 下载repcached安装包(memcached-1.2.8-repcached-2.2.1.tar.gz),然后解压安装:

    # tar zxvf memcached-1.2.8-repcached-2.2.tar.gz

    # cd memcached-1.2.8-repcached-2.2/

    # ./configure --enable-replication

    # make

    # make install
    正常情况下按上面的安装就可以了,但也有可能会遇到以下问题:

    1、machine `i686-pc-linux' not recognized 错误

    解决办法是在./configure时加上参数:--build=i686-pc-linux-gnu

    2、configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.

    这是因为没有安装c编译器,安装gcc即可:

    # apt-get install gcc

    3、memcached.c:696:30: error: ‘IOV_MAX’ undeclared (first use in this function)

    把memcached.c中55行~60行代码:

      55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
      56 #ifndef IOV_MAX
      57 #if defined(__FreeBSD__)  defined(__APPLE__)
      58 # define IOV_MAX 1024
      59 #endif
      60 #endif

    换为:

      55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
      56 #ifndef IOV_MAX
      57 /*#if defined(__FreeBSD__)  defined(__APPLE__)*/
      58 # define IOV_MAX 1024
      59 #endif
      60 /*#endif*/
    

      

    即把 57 行和60行注释掉。

    四、主从配置

    我们要把服务器B作为Master,把服务器A作为Slave,首先在服务器A(Master)上配置如下:

    # /usr/local/bin/memcached -p 11211 -v -d -u root
    
    replication: listen

    在服务器B(Slave)上配置如下:

    # /usr/local/bin/repcached -p 11212 -x 47.50.13.111 -v -d -u root
    
    replication: connect (peer=47.50.13.111:11212) 
    
    replication: marugoto copying
    
    replication: accept

    这里看到出现了一个11212,Memcached默认服务端口是11211,默认同步监听端口是11212。

    这一步要确保在Slave上可以telnet上Master服务器。

    如果telnet失败,一般会是iptables把11211/11212端口阻止了,打开即可。

    可以通过netstat命令查看:

    # netstat -tupln  grep memcached
    
    tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      2044/memcached  
    tcp        0      0 0.0.0.0:11212           0.0.0.0:*               LISTEN      2044/memcached  
    tcp6       0      0 :::11211                :::*                    LISTEN      2044/memcached  
    udp        0      0 0.0.0.0:11211           0.0.0.0:*                           2044/memcached  
    udp6       0      0 :::11211                :::*                                2044/memcached

    五、验证

    在Master上创建数据:

    # telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set name 0 0 5
    atwal
    STORED
    

      

    在Slave上查看数据:

    $ telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    get name
    VALUE name 0 5
    atwal
    END
    

      

    可以看到数据已经同步了。

  • 相关阅读:
    虚拟机linux下git clone 报SSL connect error错误
    TooManyRedirects错误
    windows2008 使用 opencv_python 出现 DLL load failed错误
    禁止别人通过开发人员工具查看网站代码
    pipreqs 执行报错问题
    Vue-router 报NavigationDuplicated的解决方案
    git 记住用户密码
    获取python所有依赖包
    修改pip的安装源
    使用pycharm发布python程序到ubuntu中运行
  • 原文地址:https://www.cnblogs.com/lvcisco/p/10369025.html
Copyright © 2011-2022 走看看