文章目录
1 是什么
主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主
2 能干嘛
读写分离,性能扩展
容灾快速恢复
3 主从复制搭建
3.1 根目录下创建目录/myredis
将/etc/redis.conf 配置文件拷贝到/myredis中
[root@localhost chengwen]# mkdir /myredis
[root@localhost chengwen]# cd /myredis/
[root@localhost myredis]# cp /etc/redis.conf /myredis/redis.conf
[root@localhost myredis]# ls
redis.conf
3.2 修改/myredis中redis.conf
appendonly 修改为 no
appendonly no
3.3 vim redis6379.conf
3.3.1 在/myredis 目录下增加配置文件redis6379.conf,并添加配置
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
3.3.1 在/myredis 目录下增加配置文件redis6380.conf,并修改配置
[root@localhost myredis]# cp redis6379.conf redis6380.conf
[root@localhost myredis]# vim redis6380.conf
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
3.3.1 在/myredis 目录下增加配置文件redis6381.conf,并修改配置
[root@localhost myredis]# cp redis6379.conf redis6381.conf
[root@localhost myredis]# vim redis6381.conf
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
3.4 分别启动三个redis服务
[root@localhost myredis]# redis-server redis6379.conf
[root@localhost myredis]# redis-server redis6380.conf
[root@localhost myredis]# redis-server redis6381.conf
[root@localhost myredis]#
3.4.1 查看进程是否正常启动
[root@localhost myredis]# ps -ef|grep redis
root 152843 2158 0 04:30 ? 00:00:00 redis-server *:6380
root 152856 2158 0 04:31 ? 00:00:00 redis-server *:6381
root 152966 2158 0 04:33 ? 00:00:00 redis-server *:6379
root 152972 123376 0 04:33 pts/0 00:00:00 grep --color=auto redis
[root@localhost myredis]#
3.5 通过客户端连接加端口号查看redis信息
3.5.1 通过客户端连接加端口号查看redis6379信息 info replication
role:master 说明是角色是主机Master
[root@localhost myredis]# redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:1ecba680652395416fe8bd719da26c6564a957d5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
3.5.2 通过客户端连接加端口号查看redis6380信息 info replication
role:master 说明是角色是主机Master
[chengwen@localhost redis]$ redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:ad3b7ea9b5309fe5b1974333a68cd95a2c60e2df
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6380>
3.5.3 通过客户端连接加端口号查看redis6381信息 info replication
role:master 说明是角色是主机Master
[chengwen@localhost ~]$ redis-cli -p 6381
127.0.0.1:6381> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:08aebaa422e9096f8efb3ec263e8334f208ae017
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6381>
3.6 配置从库不配置主库
slaveof
ip为主库的ip
port为主库的port
3.6.1 在6380客户端执行slaveof 127.0.0.1 6379
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
6380 角色变为role:slave
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
127.0.0.1:6380>
6379主库信息显示了从库信息 slave0:ip=127.0.0.1,port=6380
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=154,lag=1
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154
127.0.0.1:6379>
3.6.1 在6381客户端执行slaveof 127.0.0.1 6379
在6381客户端执行
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK
6381 角色变为role:slave
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:1120
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1120
second_repl_offset:-1
repl_backlog_active
6379主库信息显示了从库信息slave1:ip=127.0.0.1,port=6381
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=1232,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=1232,lag=1
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1232
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1232
127.0.0.1:6379>
3.7 验证主从复制
3.7.1 在主库写入键值对,在从机查看可以复制成功
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k1 v1