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 三台都一样
1 | ./bin/redis-server ./redis.conf |
1 2 3 4 5 | [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目录
1 | cd bin |
1 | ./redis-cli -h 192.168 . 146.128 -p 6379 -a 123456 |
1 2 3 4 5 | 进入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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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里的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 4 5 | [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的持久化文件
1 2 3 4 5 6 | [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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [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启动的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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从机就只能读操作了,不能进行写操作
1 2 3 | 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查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 > |
这样主从复制就完成了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南