zoukankan      html  css  js  c++  java
  • CentOS7下搭建Redis主从复制

    (1).实验环境

    youxi1  192.168.1.6  Master服务器

    youxi2  192.168.1.7  Slave服务器

    (2).实验

     1)两台服务器上yum安装Redis,启动并设置开机自启

      详细查看:CentOS7下yum安装Redis

     2)修改Master服务器上的配置

    [root@youxi1 ~]# vim /etc/redis.conf
    bind 0.0.0.0  //第69行,设置监听地址。0.0.0.0表示监听所有地址
    requirepass 123456  //第507行,设置认证密码
    [root@youxi1 ~]# systemctl restart redis
    

      如果防火墙是开启状态,记得添加端口号

    [root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=6379/tcp && firewall-cmd --reload
    success
    success
    

     3)修改Slave服务器上的配置

    [root@youxi2 ~]# vim /etc/redis.conf
    replicaof 192.168.1.6 6379  //第286行,设置master的IP地址和端口号
    masterauth 123456  //第293行,设置master的认证密码
    [root@youxi2 ~]# systemctl restart redis
    

     4)查看master和slave的状态信息

      查看master的状态信息

    [root@youxi1 ~]# redis-cli
    127.0.0.1:6379> auth 123456
    OK
    127.0.0.1:6379> info replication
    # Replication
    role:master  //这是一台master
    connected_slaves:1  //连接slave服务器的数量
    slave0:ip=192.168.1.7,port=6379,state=online,offset=350,lag=1  //slave服务器的信息
    master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:350
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:350

      查看slave的状态信息

    [root@youxi2 ~]# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:slave  //这是一台slave
    master_host:192.168.1.6  //master服务器的IP地址
    master_port:6379  //master服务器的端口号
    master_link_status:up  //连接状态
    master_last_io_seconds_ago:5
    master_sync_in_progress:0
    slave_repl_offset:112
    slave_priority:100
    slave_read_only:1  //成为slave服务器后,只读
    connected_slaves:0
    master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:112
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:112
    

     5)测试

      在master服务器上创建一个键值,然后到slave上查看

    [root@youxi1 ~]# redis-cli
    127.0.0.1:6379> auth 123456
    OK
    127.0.0.1:6379> set user youxi
    OK
    
    [root@youxi2 ~]# redis-cli
    127.0.0.1:6379> get user
    "youxi"
    

      这就成功了。

    (3).主从复制高级配置参数

      CentOS7下yum安装Redis已经记载了,这里复制一下,便于查看。

    /*第218到220行,快照存储策略,存到磁盘的持久化策略
    *第一个数字是单位时间,单位为秒;第二个数字是键值发生变化的次数
    * 例如第一个,900秒内至少发生1次键值变化,则做一次快照(持久化)
    * 第二个就是,300秒内至少发生10次键值变化,则做一次快照(持久化)
    * 所有条件是并列关系,根据不同的键值变化选择使用规则
    */
    save 900 1
    save 300 10
    save 60 10000
    //第235行,在进行快照备份时,一旦发生错误是否停止,默认yes即可
    stop-writes-on-bgsave-error yes
    //第241行,指定RDB文件是否压缩。yes表示压缩,会消耗CPU资源
    rdbcompression yes
    /*第250行,是否对RDB文件做校验码检测。
    *此项定义在redis启动时加载RDB文件是否对文件检查校验码,在redis生成RDB文件是会生成校验信息,在redis再次启动或装载RDB文件时,是否检测校验信息。
    *如果检测的情况下会消耗时间,会导致redis启动时慢,但是能够判断RDB文件是否产生错误。
    */
    rdbchecksum yes
    //第253行,RDB文件名称
     dbfilename dump.rdb
    //第263行,RDB文件存放的路径
    dir /var/lib/redis
     
    //第286行,定义Master服务器的IP和端口,主从复制的配置信息
    # replicaof <masterip> <masterport>
    //第293行,定义Master服务器的密码,主从复制的配置信息
    # masterauth <master-password>
    //第308行,当从端在主从复制过程中与主端断开连接,yes表示继续提供服务,即使数据可能不是最新的;no表示对请求返回错误信息
    replica-serve-stale-data yes
    //第324行,从端只读
    replica-read-only yes
    //第355行,默认不使用diskless(无磁盘)同步方式
    repl-diskless-sync no
    //第367行,diskless(无磁盘)方式进行数据传递之前会有一个时间的延迟,以便从端能够进行到待传送的目标队列中,默认5秒
    repl-diskless-sync-delay 5
    //第373行,从端向主端发送ping的时间间隔,默认10秒
    # repl-ping-replica-period 10
    //第385行,设置超时时间
    # repl-timeout 60
    /*第400行,是否启用TCP_NODELAY。
    * 如果启用则会使用少量的TCP包和带宽去进行数据传输到从端,速度较慢;
    * 如果不启用则使用较多的带宽进行数据传输,速度较快。
    */
    repl-disable-tcp-nodelay no
    /*第413行,设置backlog的大小。backlog是一个缓冲区,在从端失联时存放要同步到从端的数据。
    * 因此当从端重连时,一般是不需要完全同步的。backlog越大,从端可以失联的时间就越长(相对来说)
    */
    # repl-backlog-size 1mb
    //第426行,一段时间后,从端还没有连上master,那么backlog(缓冲区)的内存将被释放。0表示永不释放,默认3600秒
    # repl-backlog-ttl 3600
    //第441行,从端的优先级设置,数字越小优先级越高。主端故障会根据优先级高的从端来进行恢复。如果设置的是0,那么该从端永远不会被选中
    replica-priority 100
    //第457到458行,当主端的可用从端小于3个或网路延迟岛屿10秒时,主端拒绝接收用户的写请求。
    # min-replicas-to-write 3
    # min-replicas-max-lag 10
    

      

  • 相关阅读:
    2019课设---基于微信小程序的食堂订餐送餐系统设计 【构思】(12)
    宝塔安装
    win10添加新建文本文档的快捷方式
    Vue底部菜单模块
    CSS渐变
    记录页面位置及进入页面时跳转位置
    PHP获取微信JS-SDK接口设置(access_token、jsapi_ticket、signature)
    添加Notepad++至右键菜单
    win10卸载XShell6报错1603
    win10我的电脑左侧快捷方式的控制
  • 原文地址:https://www.cnblogs.com/diantong/p/11259368.html
Copyright © 2011-2022 走看看