• redis主从复制及配置


    !数据的复制都是单向的,只能从主节点到从节点 一个爸爸有多个儿子,但是一个儿子不能有多个爸爸

    主机以写为主,从机以读为主

    主从复制 ,读写 分离, 80%的情况下都在读 减缓服务器压力

    默认情况下 每台redis服务器都是主节点

    主要作用

    1. 数组冗余 只从复制实现了数据的热备份 ,是持久化之外的一种数据冗余方式

    2. 故障恢复:

    3. 负载均衡:

    4. 高可用基石:

    一般在项目中只用一台redis是不行的(宕机 一主二从)

    原因:

    1. 单个redis服务器会发生单点故障 并且一台服务器需要处理所有的请求负载 压力大

    2. 单个redis服务器内存容量有限, 单个redis服务器最大用内存容量不应该超过20G

    主从配置

    1.在三台服务器上进行安装Redis

    安装如下链接,三台服务器配置都一样即可,

    https://www.cnblogs.com/9080dlb/p/15712625.html

    2.从机配置

    找到启动配置文件

     配置完从机保存退出,启动服务

    [root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-server myconfig/redis.conf 
    [root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-cli -p 6379
    127.0.0.1:6379> AUTH Amxxxxx
    OK
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> 

    此时就已经完成了主从复制,只需要配置从机就行了

    确认完成

    ####从机信息
    127.0.0.1:6379> info replication #从机查看信息
    # Replication
    role:slave                   #角色从机
    master_host:192.168.123.12   #主机的ip
    master_port:6379            
    master_link_status:up
    master_last_io_seconds_ago:6
    master_sync_in_progress:0
    slave_read_repl_offset:1834
    slave_repl_offset:1834
    slave_priority:100
    slave_read_only:1
    replica_announced:1
    connected_slaves:0
    master_failover_state:no-failover
    master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1834
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1807
    repl_backlog_histlen:28
    ################
    ####主机信息
    127.0.0.1:6379> info replication   #查看主机信息
    # Replication
    role:master               #角色主机
    connected_slaves:1     #从机节点有1个,如果有多个从机就显示从机数量
    slave0:ip=47.97.32.153,port=6379,state=online,offset=2114,lag=0
    master_failover_state:no-failover
    master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2114
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:2114

    第二种主从复制方法(一般不用这样)

    127.0.0.1:6379> slaveof 123.222.555.22 6379 
    OK
    #如果有密码就配置密码,此处略
    127.0.0.1:6379> info replication  #认主完成就看信息
    # Replication
    role:slave                     #角色从机
    master_host:123.222.555.22    #主机
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:5
    master_sync_in_progress:0
    slave_read_repl_offset:0
    slave_repl_offset:0
    slave_priority:100
    slave_read_only:1
    replica_announced:1
    connected_slaves:0
    master_failover_state:no-failover
    master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:0

    总结

    配置完就行了

    1. 主机可以写 从机不能写只能读

    2. 主机中的所有信息都会被从机保存

    3. 如果老大死了, 小弟还是小弟 但是没有写操作了

    4. 老大活了,小弟自动连接

    5. 用命令行配置的, 小弟死了再复活就会变成主机(变回原来安装好的样子)

    6. 再变回小弟,立马能拿到大哥的数据

      • 原理: 小弟联系到大哥会发同步命令 ,大哥知道小弟回来消息 启动后台的存盘进程,同时把所有的数据都放进去打包完成进程后, 把所有东西给小弟,完成一次同步全量复制

      • 增量复制 平时老大收集到的发给小弟

      • 只要重新连接老大就完成一次全量复制 自动执行

    思考 1 ---->2<====> 3 人体蜈蚣式的

    经过测试, 中间的服务器不能写入, 但是1号写的东西2号和3号都能拿到

    老大如果死了,选一个小弟当老大 篡夺皇位 老大回来也没用

     slaveof no one  #告诉当前从机没有老大了!你可以当老大了!!!
  • 相关阅读:
    MySQL 一致性读 深入研究
    Operating System Error Codes
    5分钟了解MySQL5.7的Online DDL雷区
    pt-osc原理、限制、及与原生online-ddl比较
    学习笔记:Rick's RoTs -- Rules of Thumb for MySQL
    学习笔记:The Best of MySQL Forum
    学习笔记:Analyze MySQL Performance及慢日志的开启
    MySQL: Building the best INDEX for a given SELECT
    学习笔记:ALTERing a Huge MySQL Table
    Google common_schema 2.2 documentation
  • 原文地址:https://www.cnblogs.com/9080dlb/p/15726277.html
Copyright © 2020-2023  润新知