设为首页 收藏本站
查看: 1144|回复: 0

[经验分享] redis 业务数据的主从设置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-8-14 17:34:53 | 显示全部楼层 |阅读模式
redis与mysql的主从很相似,而且比mysql设置主从更加简单:

分析:

1、redis主从复制特点:

(1)、master可以拥有多个slave

(2)、多个slave可以连接同一个master外,还可以连接到其他slave

(3)、主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

(4)、提高系统的伸缩性

2、redis主从复制过程:

当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。

3、如何配置

配置slave服务器很简单,只需要在slave的配置文件中加入如下配置

slaveof 192.168.1.1 6379 #指定master的ip和端口

下面我们做一个实验来演示如何搭建一个主从环境:

# slaveof <masterip> <masterport> slaveof localhost 6379

我们在一台机器上启动主库(端口6379),从库(端口6378)

启动后主库控制台日志如下:

[iyunv@localhost redis-2.2.12]# src/redis-server redis.conf   [7064] 09 Aug 20:13:12 * Server started, Redis version 2.2.12  [7064] 09 Aug 20:13:12 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.  [7064] 09 Aug 20:13:12 * The server is now ready to accept connections on port 6379  [7064] 09 Aug 20:13:13 - 0 clients connected (0 slaves), 539512 bytes in use  [7064] 09 Aug 20:13:18 - 0 clients connected (0 slaves), 539512 bytes in use  [7064] 09 Aug 20:13:20 - Accepted 127.0.0.1:37789  [7064] 09 Aug 20:13:20 * Slave ask for synchronization  [7064] 09 Aug 20:13:20 * Starting BGSAVE for SYNC  [7064] 09 Aug 20:13:20 * Background saving started by pid 7067  [7067] 09 Aug 20:13:20 * DB saved on disk  [7064] 09 Aug 20:13:20 * Background saving terminated with success  [7064] 09 Aug 20:13:20 * Synchronization with slave succeeded  [7064] 09 Aug 20:13:23 - 0 clients connected (1 slaves), 547380 bytes in use

启动后从库控制台日志如下:

[iyunv@localhost redis-2.2.12]# src/redis-server redis.slave   [7066] 09 Aug 20:13:20 * Server started, Redis version 2.2.12  [7066] 09 Aug 20:13:20 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.  [7066] 09 Aug 20:13:20 * The server is now ready to accept connections on port 6378  [7066] 09 Aug 20:13:20 - 0 clients connected (0 slaves), 539548 bytes in use  [7066] 09 Aug 20:13:20 * Connecting to MASTER...  [7066] 09 Aug 20:13:20 * MASTER <-> SLAVE sync started: SYNC sent  [7066] 09 Aug 20:13:20 * MASTER <-> SLAVE sync: receiving 10 bytes from master  [7066] 09 Aug 20:13:20 * MASTER <-> SLAVE sync: Loading DB in memory  [7066] 09 Aug 20:13:20 * MASTER <-> SLAVE sync: Finished with success  [7068] 09 Aug 20:13:20 * SYNC append only file rewrite performed  [7066] 09 Aug 20:13:20 * Background append only file rewriting started by pid 7068  [7066] 09 Aug 20:13:21 * Background append only file rewriting terminated with success  [7066] 09 Aug 20:13:21 * Parent diff flushed into the new append log file with success (0 bytes)  [7066] 09 Aug 20:13:21 * Append only file successfully rewritten.  [7066] 09 Aug 20:13:21 * The new append only file was selected for future appends.  [7066] 09 Aug 20:13:25 - 1 clients connected (0 slaves), 547396 bytes in use

注:日志的检查很重要

验证数据的同步性:

1、主库上设置一对键值对

redis 127.0.0.1:6379> set name HongWan  OK  redis 127.0.0.1:6379>

2、从库上取一下这个键

redis 127.0.0.1:6378> get name  "HongWan"  redis 127.0.0.1:6378>

说明主从是同步正常的.

调用info这个命令就可以得到主从的信息:

redis 127.0.0.1:6378> info  .  .  .  role:slave  master_host:localhost  master_port:6379  master_link_status:up  master_last_io_seconds_ago:10  master_sync_in_progress:0  db0:keys=1,expires=0 redis 127.0.0.1:6378>

里面有一个角色标识,来判断是主库还是从库,对于本例是一个从库,同时还有一个master_link_status用于标明主从是否异步,如果此值=up,说明同步正常;如果此值=down,说明同步异步;

db0:keys=1,expires=0, 用于说明数据库有几个key,以及过期key的数量。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-23819-1-1.html 上篇帖子: redis命令解析 下篇帖子: 线上修改redis内存分配大小
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表