Redis伪集群的实现:
1.复制redis.conf文件,修改相应配置
[root@iZwz92v9xcjopi734c76bdZ etc]# cp redis.conf redis80.conf
1.修改端口号
2.修改pid文件
3.修改log日志文件
4.修改dump.dbf文件
2.在从机上启动redis-server
[root@iZwz92v9xcjopi734c76bdZ bin]# redis-server /etc/redis80.conf
3.查看redis运行情况
ps aux | grep redis
结果:
[root@iZwz92v9xcjopi734c76bdZ bin]# ps aux | grep redis
root 30125 0.1 1.1 276712 22652 ? Ssl Dec06 1:29 /bin/redis-server *:6379
root 66276 0.0 0.5 23560 11572 pts/0 S+ 13:27 0:00 redis-cli
root 67417 0.0 0.9 274152 18148 ? Ssl 13:53 0:00 redis-server *:6380
root 67422 0.0 0.0 221460 848 pts/3 R+ 13:53 0:00 grep --color=auto redis
4.认主机当老大
默认条件下,每台Redis服务器都是主机,一般情况下只需配置从机就行了
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave #当前角色是从机
master_host:127.0.0.1 #主机的host
master_port:6379 #主机端口号
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:93f9651b946af22f23e99744e134b5102f892714
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>
5.主写从读(从不可以读)
主机的信息如下:
127.0.0.1:6379> keys *
1) "\xac\xed\x00\x05t\x00\x02gy"
2) "xj:name"
3) "gtl"
4) "\xac\xed\x00\x05t\x00\x03gyl"
5) "lis"
6) "money"
7) "list1"
8) "sa"
9) "gy"
从记可以获取,但不可以写入
127.0.0.1:6380> get gy
"User(name=gyl, id=2)"
127.0.0.1:6380> set wrnm sd
(error) READONLY You can't write against a read only replica.
127.0.0.1:6380>
最后
注意!!!
1.命令行配置重启服务就没救主从关系,就会重新变回主机。因为没有写入redis.conf配置文件里面。
2.但是主机一旦变回从机就能立马可以获取到主机里的数据。
3.设置密码的要在从机的redis.conf配置里设置masterauth属性
如:
masterauth 123456 #`123456`是密码
复制原理
Slave 启动成功连接到 master 后会发送一个sync同步命令Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步。
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行! 我们的数据一定可以在从机中看到!