**
redis 主从分布配置操作步骤详解
**
一、 准备工作
1、在 CentOS 上已经安装好了 redis,确认redis 功能正常。
2、 复制redis安装文件,分别为 redis6666,redis 7777
drwxr-xr-x. 2 root root 4096 12月 24 21:49 redis6666
drwxr-xr-x. 2 root root 4096 12月 24 21:49 redis7777
3、 redis6666 设置为 master,端口设置为6666
vim redis.conf ; port 6666 , requirepass 123
4、 redis7777 设置为 slave,端口设置为 7777, 操作同上
二、Master 和 Slave 配置
1、首先,修改 Master (redis7777)上的如下配置(在 redis.conf 修改配置):
a. 禁用 主服务器 snapshot
#save 900 1 #禁用Snapshot
#save 300 10
#save 60 10000
b. 禁用 AOF
`appendonly no #禁用AOF (该操作默认就是禁用的)
`c. 设置 master 密码 (可选)
requirepass 123456
2、修改 Slave(redis6666)上的如下配置:
a. 启动 从服务器的 Snapshot
save 900 1 #启用Snapshot (默认开启)
save 300 10
save 60 10000
b. 启动 从服务器 AOF
appendonly yes #启用AOF(默认关闭)
appendfilename appendonly.aof #AOF文件的名称
c. 设置 slaveof
slaveof 192.168.3.16 6666
masterauth 123456 # 可选操作,若Master设置了密码,需要此配置; 对应 Master/redis.conf requirepass 属性。
三、启动 Master 和 Slave
a. 启动 master server:./redis6666/redis-server redis6666/redis.conf
b. 连接 master cli: ./redis6666/redis-cli -p 6666
c. 查看主服务器连接状态: info replication
d. 启动 slave server: ./redis7777/redis-server redis7777/redis.conf
e. 启动 slave cli : ./redis7777/redis-cli -p 7777
f. 查看 从服务器连接状态: info replication
四、 备份数据测试
1、 Master 插入一条数据:
127.0.0.1:6666> set name helloworld
OK
2、Slave 获取数据:
127.0.0.1:7777> get name
"helloworld"
操作到这里: redis 主从配置成功了。
五、容灾机制测试
1、Master 挂掉了:
127.0.0.1:6666> SHUTDOWN # 或者 直接 kill 掉 Master 进程
not connected>
2、 Slave 再次获取数据:
127.0.0.1:7777> get name
"helloworld"
3、数据恢复
将Slave上数据文件 dump.rdb 和 appendonly.aof 复制到 Master 目录上。
4、启动 Master ,分别在 Master 和 Slave 获取数据。
注意: 操作步骤3、4 不可互换,否则会造成数据丢失。 Master 启动后,Slave 会自动去同步数据。
5、 关闭 Slave 同步状态:SLAVEOF NO ONE
六、Slave 连接补上 Master 问题排除
1、 确认是否ip过滤?
Master操作: config get bind (" "表示[任意ip访问](http://blog.csdn.net/haha_sir/article/details/78081100))
127.0.0.1:6666> config get bind
1) "bind"
2) ""
2、 确认Master 是否设置了密码?
Master 操作: config get requirepass (” “表示没密码)
127.0.0.1:6666> config get requirepass
1) "requirepass"
2) ""
若不为” “,则进行如下操作:
Slave 操作: config get masterauth
127.0.0.1:7777> config get masterauth
1) "masterauth"
2) "123456"
若和 Master/ config get requirepass 不一致,则进行修改:
config set masterauth “xx” # xx = config get requirepass
CONFIG REWRITE # 写入配置文件,避免下次设置
若您有更好的见解或遇到了问题,欢迎私信和交流,谢谢。