复制原理:(1)slave启动成功连接到master后会发送一个sync命令
(2)Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步;第一次连接会全量复制,后面增量;
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步。
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件。
第一步:三台主机,也可以用一台主机,三份redis.conf 配置文件,将其port端口改掉即可
1:改端口步骤:
在redis目录中cp三份redis.conf文件,命名为redis6379.conf, redis6380.conf
,redis6381.conf
2:vim 修改其内容,第一修改pid号,port号,logfile 文件名称,例如6379.log
Dump文件,dump6379.rdb
3:启动三个redis窗口 启动命令:redis-server /myredis/redis6379.conf
Redis-cli -p 6379
关闭命令:SHUTDOWN
4:进程查看命令:ps –ef|grep redis
5: info replication 查看配置命令;查看redis所处地位,此时三个都为master,同级;
6:主从设置命令:SLAVEOF 127.0.0.1 6379
这里可以将SLAVEOF 127.0.0.1 6379设置到redis.conf文件里 ,否则如slave机挂了,需要重新SLAVEOF一下master机;
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。
中途变更转向:会清除之前的数据,重新建立拷贝最新的。
2:6380 redis :SLAVEOF 127.0.0.1 6379 role角色还是slave info replication
6381 redis :SLAVEOF 127.0.0.1 6380
使当前数据库停止与其他数据库的同步,转成主数据库;以前的主数据库即是重新起来,也不会再做master了,与其他分开了;
运行命令:SLAVEOF no one
80redis : set kye10 v10
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
1:自定义的/myredis目录下新建sentinel.conf文件。
2: vim sentinel.conf
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
3:挂掉的后的主机会变为salve机
启动哨兵:redis-sentinel /myredis/sentinel.conf
缺点:复制延时,由于所有的写操作都是先写在Master上操作,然后同步更新到Slave上,所以Master同步到Slave机器上有一定的延时,当系统很繁忙时,延时问题会更严重,Slave机器数量的增加也会使之问题更加严重;