1、Redis 主从同步
Redis主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave 也会执行相同的操作确保数据一致。同时slave上还可以开启二级slave、三级slave从库,和MySQL的主从类似。 Redis主从配置非常简单,只需要在Redis从库配置中指定slaveof ip port 即可,IP表示指定主库的ip,port表示redis监听端口。
准备机器两台
master:10.0.0.147
slave:10.0.0.149
1.1 配置主从同步
1.1.1 主库配置
# 修改配置文件
bind 0.0.0.0
#以守护进程在后台运行
daemonize yes
#可选设置认证密码,从库需要指定master的密码才能完成同步
requirepass "123456"
1.1.2 从库配置
# 修改配置文件设置
bind 0.0.0.0
# 指定主库
slaveof 10.0.0.147 6379
或者
REPLICAOF 10.0.0.147 6379
#指定master的认证密码(如果远程服务器设置了密码,则需要认证密码)
masterauth "123456"
也可在命令行设置,设置完直接生效但重启服务则失效
# 指定主库
slaveof 10.0.0.147 6379
或者
REPLICAOF 10.0.0.147 6379
# 设置master的认证密码
CONFIG set masterauth 123456
# 取消主从关系,恢复master身份
SLAVEOF no one
1.1.3 从库查看状态
127.0.0.1:6379> info replication
# Replication
#角色
role:slave
master_host:10.0.0.147
master_port:6379
#主库连接状态必须为up,表示成功
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:1960
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:1eba7a05ef5159b5b2ba02a58571810be5b32230
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1960
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1079
repl_backlog_histlen:882
1.1.4 主库查看状态
10.0.0.147:6379> info replication
# Replication
#角色
role:master
#当前有一个从库连接
connected_slaves:1
#从库信息
slave0:ip=10.0.0.149,port=6379,state=online,offset=2086,lag=0
master_replid:1eba7a05ef5159b5b2ba02a58571810be5b32230
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2086
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2086
1.1.5 从库同步过程日志分析
#连接主库
6190:S 08 Jan 2020 14:44:25.483 * Connecting to MASTER 10.0.0.147:6379
6190:S 08 Jan 2020 14:44:25.483 * MASTER <-> REPLICA sync started
#开始非阻塞同步
6190:S 08 Jan 2020 14:44:25.483 * Non blocking connect for SYNC fired the event.
6190:S 08 Jan 2020 14:44:25.484 * Master replied to PING, replication can continue...
6190:S 08 Jan 2020 14:44:25.485 * Partial resynchronization not possible (no cached master)
#全量同步
6190:S 08 Jan 2020 14:44:25.486 * Full resync from master: 1eba7a05ef5159b5b2ba02a58571810be5b32230:1078
#接收数据
6190:S 08 Jan 2020 14:44:25.526 * MASTER <-> REPLICA sync: receiving 5687 bytes from master
#清空以前缓存的数据
6190:S 08 Jan 2020 14:44:25.526 * MASTER <-> REPLICA sync: Flushing old data
#加载数据库到内存中
6190:S 08 Jan 2020 14:44:25.526 * MASTER <-> REPLICA sync: Loading DB in memory
#同步完成
6190:S 08 Jan 2020 14:44:25.527 * MASTER <-> REPLICA sync: Finished with success
1.1.6 主从同步相关配置解析
# 指定主库IP和端口
replicaof 10.0.0.147 6379
# 指定主库的认证密码
masterauth 1234