Redis主从复制的配置

Redis 主从同步的过程

        配置好 slave 服务器连接的master后, slave 会建立和 master 的连接,然后发送 sync 命令。无论是第一次同步建立的连接还是连接断开后的重新连接, master 都会启动一个后台进程,将数据库快照保存到文件中.同时 master 主进程会开始收集新的写命令并缓存起来。当后台进程完成写文件后, master 就将快照文件发送给 slave , slave 将文件保存到磁盘上,然后加载到内存将数据库快照 恢复 到 slave 上。slave完成快照文件的恢复后, master 就会把缓存的命令都转发给 slave,slave更新内存数据库 。后续 master 收到的写命令都会通过开始建立的连接发送给 slave 。从 master 到 slave 的同步数据的命令和从 client到master 发送的命令使用相同的协议格式。当 master 和 slave 的连接断开时, slave 可以自动重新建立连接。如果 master 同时收到多个 slave 发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有 slave 。

 

Redis 主从同步的特点

        主从同步具有明显的分布式缓存特点,主要包括这些方面:

                1 )一个 master 可以有多个 slave,一个slave也可以有多个slave ;

                2 ) slave 不仅可以连接到 master , slave 也可以连接其他 slave 形成树状结构;

                3 )主从同步不会阻塞 master,但是会阻塞slave 。也就是说当一个或多个 slave 与 master 进行初次同步数据时, master 可以继续处理 client 发来的请求。相反 slave 在初次同步数据时则会阻塞不能处理 client 的请求;

                4 )主从同步可以用来提高系统的可伸缩性,我们可以用多个 slave 专门处理 client 的读请求, 也可以用来做简单的数据冗余或者只在slave上进行持久化从而提升集群的整体性能。

 

主从复制优化要点:

        Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。

        如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。

        为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。

        为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,即主从关系为:Master<--Slave1<--Slave2<--Slave3

 

 Redis主从配置步骤:

1、编辑主从配置文件

    主配置文件:

include ./redis.conf
daemonize yes
pidfile /var/run/redis.pid
port 6379
bind 192.168.10.128
logfile /opt/redis/logs/redis.log
requirepass 123456

 

     从配置文件:

include ./redis.conf
daemonize yes
pidfile /var/run/redis2.pid
port 6380
bind 192.168.10.128
logfile /opt/redis/logs/redis2.log

slaveof 192.168.10.128 6379
masterauth 123456

requirepass 234567

2、启动主Redis:

        cd /opt/redis/bin

        redis-server ./local-redis.conf

        tail -f /opt/redis/logs/redis.log查看日志

3、启动从Redis:

        cd /opt/redis/bin2

        redis-server ./local-redis.conf

        tail -f /opt/redis/logs/redis2.log查看日志

4、测试数据同步:

        终端一:

                cd /opt/redis/bin

                redis-cli -h 192.168.10.128 -p 6379 -a 123456

                set cjm 123

                get cjm

        终端二:

                cd /opt/redis/bin2

                redis-cli -h 192.168.10.128 -p 6380 -a 234567

                get cjm

主从切换的步骤:

        停止主Redis

                redis-cli -h 192.168.10.128 -p 6379 -a 123456

                shutdown

        将从redis设成主redis

                redis-cli -h 192.168.10.128 -p 6380 -a 234567

                slaveof NO ONE

                测试从redis是否切换为主redis

                        set cjm 111

                        get cjm

        原来的主redis恢复正常了,要重新切换回去

                将现在的主redis的数据进行保存

                        redis-cli -h 192.168.10.128 -p 6380 -a 234567

                        save

                将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

                        cp -frp /opt/redis/bin2/dump.rdb /opt/redis/bin/dump.rdb

                启动原来的主redis

                        redis-server ./local-redis.conf

                        tail -f /opt/redis/logs/redis.log

                在现在的主redis中切换

                        slaveof 192.168.10.128 6379

猜你喜欢

转载自chenjumin.iteye.com/blog/2296748