Redis主从复制
1.准备3台服务器,一台master ,两台 slave
Master 192.168.146.128
Slave 192.168.146.129
slave 192.168.146.130
2.每台服务器安装redis
redis安装的详细文档地址:
https://www.cnblogs.com/Amywangqing/p/12732742.html
3.进入第一台Maste 192.168.146.128服务器
cd /usr/local/redis进入redis目录
对应的修改
注意(需要修改redis.conf文件的bind 192.168.146.128 127.0.0.1)
注意(需要修改redis.conf文件的bind 192.168.146.129 127.0.0.1)
注意(需要修改redis.conf文件的bind 192.168.146.130 127.0.0.1)
4.启动redis 三台都一样
./bin/redis-server ./redis.conf
[root@localhost redis]# ./bin/redis-server ./redis.conf 2859:C 21 Apr 2020 20:37:21.282 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 2859:C 21 Apr 2020 20:37:21.282 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=2859, just started 2859:C 21 Apr 2020 20:37:21.282 # Configuration loaded [root@localhost redis]#
5.进入bin目录
cd bin
./redis-cli -h 192.168.146.128 -p 6379 -a 123456
进入redid客户端Slave 192.168.146.129 ./redis-cli -h 192.168.146.129 -p 6379 -a 123456 进入redid客户端Slave 192.168.146.130 ./redis-cli -h 192.168.146.130 -p 6379 -a 123456
6.通过info replication查看redis主从信息
主机92.168.146.128
192.168.146.128:6379> info replication # Replication role:master connected_slaves:0 master_replid:22df065d1113b3458a187d70dee08d0f39baaeee 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 192.168.146.128:6379>
主机92.168.146.129
192.168.146.129:6379> info replication # Replication role:master connected_slaves:0 master_replid:818ffa04e22d35c5c15b5ea1f227c0cf6297984e 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 192.168.146.129:6379>
主机192.168.146.130
192.168.146.130:6379> info replication # Replication role:master connected_slaves:0 master_replid:1da39532e2d39e6dcfd2b7b17883bc3ec659b527 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 192.168.146.130:6379>
可以看出来现在它们都是master
我们把主机192.168.146.128作为master,就不需要修改了
这主机192.168.146.128Redis里的数据
192.168.146.128:6379> keys * 1) "subCat:2" 2) "shopcart:1908017YR51G1XWH" 3) "subCat:3" 4) "subCat:6" 5) "subCat:1" 6) "subCat:8" 7) "subCat:9" 8) "subCat:4" 9) "shopcart:2004209Z3KCNCD1P" 10) "subCat:7" 11) "subCat:10" 12) "carousel" 13) "subCat:5" 14) "cats" 192.168.146.128:6379>
7.修改主机192.168.146.129
进入cd /usr/local/redis
修改redisd.conf文件
添加
replicaof 192.168.146.128 6379
masterauth 123456
添加完成,保存
8.关闭redis
[root@localhost bin]# ps aux | grep redis root 3586 0.1 1.2 161628 12452 ? Ssl 21:19 0:05 ./bin/redis-server 192.168.146.129:6379 root 4208 0.0 0.0 103248 832 pts/0 S+ 22:11 0:00 grep redis [root@localhost bin]# kill -9 3586 [root@localhost bin]#
9.删除我们redis的持久化文件
[root@localhost log]# ls appendonly.aof dump.rdb [root@localhost log]# rm appendonly.aof dump.rdb rm: remove regular file `appendonly.aof'? y rm: remove regular file `dump.rdb'? y [root@localhost log]#
10.开启redis
./bin/redis-server ./redis.conf
进入redis客户
./redis-cli -h 192.168.146.129 -p 6379 -a 123456
[root@localhost bin]# ./redis-cli -h 192.168.146.129 -p 6379 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.146.129:6379> keys * 1) "subCat:4" 2) "subCat:9" 3) "subCat:8" 4) "subCat:1" 5) "shopcart:2004209Z3KCNCD1P" 6) "subCat:3" 7) "shopcart:1908017YR51G1XWH" 8) "subCat:10" 9) "carousel" 10) "cats" 11) "subCat:5" 12) "subCat:7" 13) "subCat:6" 14) "subCat:2" 192.168.146.129:6379>
这里的数据又有了,这跟192.168.146.128上的redis同步了
11.通过info replication查看
这里它已经变为slave从机了
它的主机master_host:192.168.146.128
master_link_status:up 主机master启动的
192.168.146.129:6379> info replication # Replication role:slave master_host:192.168.146.128 master_port:6379 master_link_status:up master_last_io_seconds_ago:6 master_sync_in_progress:0 slave_repl_offset:1831 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1831 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1831 192.168.146.129:6379>
12.从为了slave从机就只能读操作了,不能进行写操作
192.168.146.129:6379> set name aaa (error) READONLY You can't write against a read only replica. 192.168.146.129:6379>
这里主从复制就成功了
修改主机192.168.146.130
192.168.146.130同上修改就可以了
添加
replicaof 192.168.146.128 6379
masterauth 123456
添加完成,保存
后面的步骤同上面的192.168.146.129一样
在192.168.146.130通过info replication查看
192.168.146.130:6379> info replication # Replication role:slave master_host:192.168.146.128 master_port:6379 master_link_status:up master_last_io_seconds_ago:9 master_sync_in_progress:0 slave_repl_offset:2741 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:2741 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1359 repl_backlog_histlen:1383 192.168.146.130:6379>
在192.168.146.128nfo replication查看
192.168.146.128:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=192.168.146.129,port=6379,state=online,offset=2895,lag=0 slave1:ip=192.168.146.130,port=6379,state=online,offset=2895,lag=0 master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:2895 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:2895 192.168.146.128:6379>
这样主从复制就完成了