redis主从复制-读写分离
由于没有多台服务器,又懒得创建多个虚拟机 此处使用多进程进行模拟
一、创建三个目录用来存放数据文件、日志文件、配置文件
mkdir -p /opt/redis/data mkdir -p /opt/redis/log mkdir -p /opt/redis/conf
二、复制redis.conf文件到/opt/redis/conf目录下 为 redis-public.conf 作为公共配置文件
三、修改redis-public.conf 文件
# bind 127.0.0.1 注释
protected-mode no 关闭保护模式
# port 6379 注释掉port 此步骤如果放在多台服务器可以不做修改 因为即使port相同但是ip不同
daemonize yes 修改为后台启动
# pidfile /var/run/redis_6379.pid 注释进程编号记录文件 此步骤如果放在多台服务器可以不做修改
# logfile "" 注释日志文件 此步骤如果放在多台服务器可以不做修改 或者指定路径存放
# dbfilename dump.rdb 注释公共配置数据文件
dir /opt/redis/data 修改数据文件路径
masterauth 123456 添加从服务器访问主服务器认证
requirepass 123456 设置密码
appendonly no 设置成no
# appendfilename "appendonly.aof" 注释公共配置追加文件
replica-read-only yes 从服务器默认只读不允许写 不需要修改 需注意 之前的版本里好像是 slave-read-only
四、创建三个配置文件
touch redis-6379.conf touch redis-6380.conf touch redis-6381.conf
五、填写三个配置文件
主服务器
# 引用公共配置 include /opt/redis/conf/redis-public.conf # 进程编号记录文件 pidfile /var/run/redis-6379.pid # 进程端口号 port 6379 # 日志记录文件 logfile "/opt/redis/log/redis-6379.log" # 数据记录文件 dbfilename dump-6379.rdb # 追加文件名称 appendfilename "appendonly-6379.aof" # 下面的配置无需在主服务器上配置 # 备份服务器从属于主服务器 推荐配置局域网ip # slaveof 222.111.213.55 6379
slave1 服务器
# 引用公共配置 include /opt/redis/conf/redis-public.conf # 进程编号记录文件 pidfile /var/run/redis-6380.pid # 进程端口号 port 6380 # 日志记录文件 logfile "/opt/redis/log/redis-6380.log" # 数据记录文件 dbfilename dump-6380.rdb # 追加文件名称 appendfilename "appendonly-6380.aof" # 下面的配置无需在主服务器上配置 # 备份服务器从属于主服务器 推荐配置局域网ip slaveof 222.111.213.55 6379
slave2 服务器
# 引用公共配置 include /opt/redis/conf/redis-public.conf # 进程编号记录文件 pidfile /var/run/redis-6381.pid # 进程端口号 port 6381 # 日志记录文件 logfile "/opt/redis/log/redis-6381.log" # 数据记录文件 dbfilename dump-6381.rdb # 追加文件名称 appendfilename "appendonly-6381.aof" # 下面的配置无需在主服务器上配置 # 备份服务器从属于主服务器 推荐配置局域网ip slaveof 222.111.213.55 6379
六、启动三个redis
/usr/local/bin/redis-server /opt/redis/conf/redis-6379.conf /usr/local/bin/redis-server /opt/redis/conf/redis-6380.conf /usr/local/bin/redis-server /opt/redis/conf/redis-6381.conf
七、 查看redis的主从状态
6379: 进入 redis-cli -p 6379
命令:info replication
# Replication role:master connected_slaves:2 slave0:ip=47.97.223.155,port=6380,state=online,offset=532,lag=0 slave1:ip=47.97.223.155,port=6381,state=online,offset=532,lag=0 master_failover_state:no-failover master_replid:c2e0aeeb9bcf8d7a16914afbe0125f333599d402 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:532 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:532
验证:主服务器存入键值对a:111
set a 111
6380: 进入 redis-cli -p 6380
命令:info replication
# Replication role:slave master_host:47.97.223.155 master_port:6379 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_read_repl_offset:644 slave_repl_offset:644 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:c2e0aeeb9bcf8d7a16914afbe0125f333599d402 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:644 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:644
6381: 进入 redis-cli -p 6381
命令:info replication
# Replication role:slave master_host:47.97.223.155 master_port:6379 master_link_status:up master_last_io_seconds_ago:6 master_sync_in_progress:0 slave_read_repl_offset:700 slave_repl_offset:700 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:c2e0aeeb9bcf8d7a16914afbe0125f333599d402 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:700 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:15 repl_backlog_histlen:686
完结