辽宁省建设厅网站升级,建设淘宝网站的市场分析,建站公司兴田德润在哪里,福步论坛[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一、什么是redis主从复制#xff1f; 主从复制#xff0c;当用户往Master端写入数据时#xff0c;通过Redis Sync机制将数据文件发送至Slave#xff0c;Slave也会执行相同的操作确…[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一、什么是redis主从复制 主从复制当用户往Master端写入数据时通过Redis Sync机制将数据文件发送至SlaveSlave也会执行相同的操作确保数据一致且实现Redis的主从复制非常简单。 二、redis主从复制特点 1、同一个Master可以拥有多个Slaves。 2、Master下的Slave还可以接受同一架构中其它slave的链接与同步请求实现数据的级联复制即Master-Slave-Slave模式 3、Master以非阻塞的方式同步数据至slave这将意味着Master会继续处理一个或多个slave的读写请求 4、Slave端同步数据也可以修改为非阻塞是的方式当slave在执行新的同步时它仍可以用旧的数据信息来提供查询否则当slave与master失去联系时slave会返回一个错误给客户端 5、主从复制具有可扩展性即多个slave专门提供只读查询与数据的冗余Master端专门提供写操作 6、通过配置禁用Master数据持久化机制将其数据持久化操作交给Slaves完成避免在Master中要有独立的进程来完成此操作。 三、redis主从复制原理 当启动一个Slave进程后它会向Master发送一个SYNC Command请求同步连接。无论是第一次连接还是重新连接Master都会启动一个后台进程将数据快照保存到数据文件中同时Master会记录所有修改数据的命令并缓存在数据文件中。后台进程完成缓存操作后Master就发送数据文件给SlaveSlave端将数据文件保存到硬盘上然后将其在加载到内存中接着Master就会所有修改数据的操作将其发送给Slave端。若Slave出现故障导致宕机恢复正常后会自动重新连接Master收到Slave的连接后将其完整的数据文件发送给Slave如果Mater同时收到多个Slave发来的同步请求Master只会在后台启动一个进程保存数据文件然后将其发送给所有的Slave确保Slave正常。 四、服务器资源列表 五、配置过程 关于Redis的安装与配置这里便不操作想了解的朋友请阅读高性能数据库缓存之redis一http://cfwlxf.blog.51cto.com/3966339/1423106 3、1 Master端操作如下 运行redis服务 [rootredis_master sh]# redis-server/etc/redis/redis.conf 查询redis运行日志 ##通过阅读日志文件输出的一些信息可以看出Master与Slave建立连接时需要执行的会话机制加载数据文件至硬盘用时0.012秒可想而知速度是多么的快当然得依据数据的大小去评测服务连接至6379端口收到Slave同步连接请求开启“BGSAVE”同步等 清除Master端数据库中所有Key [rootredis_master sh]# redis-cli 127.0.0.1:6379 FLUSHALL OK 127.0.0.1:6379 keys * (empty list or set) 3、2 Slave端操作如下 [rootredis_slave ~]# vim/etc/redis/redis.conf #添加Master端的IP与端口 # slaveof masteripmasterport slaveof 192.168.8.8 6379 运行redis [rootredis_slave ~]# redis-server/etc/redis/redis.conf 查询Slave运行日志 ##分析redis日志可以看出Slave与Master建立连接数据同步的过程如发送SYNC命令与Master端192.168.8.8:6379建立连接然后Slave sync started随后Master发送PING命令检查Slave的存活状态复制被继续…. 查询数据库中的所有key [rootredis_slave ~]# redis-cli 127.0.0.1:6379 keys * (empty list or set) 3、3 slave2端操作如下 [rootredis_slave2 ~]# vim/etc/redis/redis.conf #添加Slave端的IP与端口实现级联复制 # slaveof masteripmasterport slaveof 192.168.8.10 6379 #运行redis服务 [rootredis_slave2 ~]# redis-server/etc/redis/redis.conf 查询redis运行日志 ##结果与Slave1类似只不过Slave2与Slave1192.168.8.10:6379建立连接同步数据MySQL的级联复制便是这样Master-Slave1-Slave2; #查询数据库的所有key [rootredis_slave2 ~]# redis-cli 127.0.0.1:6379 keys * (empty list or set) 3、4 master端操作如下 [rootredis_master sh]# redis-cli 127.0.0.1:6379 MSET ID 1005 NAMEMariaDB City BeiJing OK 127.0.0.1:6379 MGET ID NAME City 1) 1005 2) MariaDB 3) BeiJing 127.0.0.1:6379 keys * 1) NAME 2) ID 3) City 3、5 客户端验证同步结果 slave1端验证 [rootredis_slave ~]# redis-cli 127.0.0.1:6379 auth !#aedf 127.0.0.1:6379 keys * 1) City 2) NAME 3) ID 127.0.0.1:6379 MGET ID NAME City 1) 1005 2) MariaDB 3) BeiJing slave2端验证 [rootredis_slave2 ~]# redis-cli 127.0.0.1:6379 keys * 1) ID 2) NAME 3) City 127.0.0.1:6379 MGET ID NAME City 1) 1005 2) MariaDB 3) BeiJing 四、Master writeSlave read机制 Redis的主从复制通过程序实现数据的读写分离让Master负责处理写请求Slave负责处理读请求通过扩展Slave处理更多的并发请求减轻Master端的负载如下图 此图画得比较简易展示了实现Redis读写分离的过程通过判断用户读写请求将write请求发送给Redis Master处理Read请求发送给Redis Slave处理文章中的不足之处欢迎大家指点。 博文地址http://cfwlxf.blog.51cto.com/3966339/1433637 【编辑推荐】 Redis高级实用特性安全性与主从复制Redis数据库高级实用特性事务控制一步完成MySQL向Redis迁移深入理解Redis主键失效原理及实现机制从应用角度谈新浪微博Redis服务平台 转载于:https://www.cnblogs.com/lsx1993/p/4614912.html