centos6.8 安装redis 4.0 搭建主从

前端之家收集整理的这篇文章主要介绍了centos6.8 安装redis 4.0 搭建主从前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

centos6.8 安装redis 4.0 搭建主从

环境:

master:172.17.165.245

slave :172.17.165.230

redis 版本:redis 4.0

1.下载并进行安装包

  1. [root@iZ2zejbqrpwrmr4mjy0u9fZ ~]#wget http://download.redis.io/releases/redis-4.0.8.tar.gz
  2. [root@iZ2zejbqrpwrmr4mjy0u9fZ ~]#tar zxvf redis-4.0.8.tar.gz -C /usr/local/
  3. [root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# cd !$
  4. [root@iZ2zejbqrpwrmr4mjy0u9fZ redis-4.0.8]# ls
  5. 00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-sentinel src utils
  6. BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster sentinel.conf tests
  7. [root@iZ2zejbqrpwrmr4mjy0u9fZ redis-4.0.8]#make

2.修改配置文件

  1. [root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# cp redis.conf /etc/redis/
  2. [root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# cp utils/redis_init_script /etc/init.d/redis
  3. [root@iZ2zejbqrpwrmr4mjy0u9fZ redis]# mv redis.conf 6379.conf
  4. [root@iZ2zegc312qxcxs61cotxlZ ~]# vim /etc/redis/6379.conf
  5. 修改守护进程
  6. #daemonize no
  7. #修改为yes
  8. daemonize yes #Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
  9. 绑定的主机地址
  10. bind 127.0.0.1 172.17.165.245 #bind后面再添加主机的ip,后面主从复制 从Redis需要通过IP连接。
  11. 端口号
  12. port 6379
  13. 开启AOF
  14. appendonly yes

3.修改启动文件

  1. REDISPORT=6379
  2. #EXEC=/usr/local/bin/redis-server
  3. EXEC=/usr/local/redis-4.0.8/src/redis-server #服务端绝对地址
  4. #CLIEXEC=/usr/local/bin/redis-cli
  5. CLIEXEC=/usr/local/redis-4.0.8/src/redis-cli #客户端端绝对地址
  6.  
  7. PIDFILE=/var/run/redis_${REDISPORT}.pid
  8. CONF="/etc/redis/${REDISPORT}.conf" #配置文件
  9. #CONF="/etc/redis/redis-master.conf"
  10. case "$1" in
  11. start)
  12. if [ -f $PIDFILE ]
  13. then
  14. echo "$PIDFILE exists,process is already running or crashed"
  15. else
  16. echo "Starting Redis server..."
  17. $EXEC $CONF & #后台启动
  18. fi
  19. ;;
  20. stop)
  21. if [ ! -f $PIDFILE ]
  22. then
  23. echo "$PIDFILE does not exist,process is not running"
  24. else
  25. PID=$(cat $PIDFILE)
  26. echo "Stopping ..."
  27. $CLIEXEC -p $REDISPORT shutdown
  28. while [ -x /proc/${PID} ]
  29. do
  30. echo "Waiting for Redis to shutdown ..."
  31. sleep 1
  32. done
  33. echo "Redis stopped"
  34. fi
  35. ;;
  36. restart) #自己添加的重启动选择
  37. if [ -f $PIDFILE ]
  38. then
  39. $CLIEXEC -p $REDISPORT shutdown
  40. $EXEC $CONF
  41. echo "Waiting for Reids is restart ..."
  42. else
  43. $EXEC $CONF
  44. #echo "Please use start or stop as first argument"
  45. echo "Waiting for Reids is restart ..."
  46. fi
  47. ;;
  48. esac

4.配置主从

从slave上修改配置文件

  1. [root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# vim /etc/redis/6379.conf
  2. # slaveof <masterip> <masterport>
  3. slaveof 172.17.165.245 6379

5.主master 上进行查看状态

  1. [root@iZ2zegc312qxcxs61cotxlZ ~]# redis-cli
  2. 127.0.0.1:6379>info
  3. ...
  4. # Replication
  5. role:master #节点状态master
  6. connected_slaves:1 #链接slave数为1
  7. slave0:ip=172.17.165.230,port=6379,state=online,offset=588,lag=0 #slave节点
  8. master_replid:f7a4830f3b523187d959b4929dcb79f6cfca7c37
  9. master_replid2:0000000000000000000000000000000000000000
  10. master_repl_offset:588
  11. second_repl_offset:-1
  12. repl_backlog_active:1
  13. repl_backlog_size:1048576
  14. repl_backlog_first_byte_offset:1
  15. repl_backlog_histlen:588
  16. ...

6.从slave 上进行查看状态

  1. [root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# redis-cli
  2. 127.0.0.1:6379> info
  3. ...
  4. # Replication
  5. role:slave #节点状态slave
  6. master_host:172.17.165.245 #链接到master 地址为172.17.165.245
  7. master_port:6379
  8. master_link_status:up
  9. master_last_io_seconds_ago:1
  10. master_sync_in_progress:0
  11. slave_repl_offset:140
  12. slave_priority:100
  13. slave_read_only:1
  14. connected_slaves:0 #链接slave的数目为0
  15. master_replid:f7a4830f3b523187d959b4929dcb79f6cfca7c37
  16. master_replid2:0000000000000000000000000000000000000000
  17. master_repl_offset:140
  18. second_repl_offset:-1
  19. repl_backlog_active:1
  20. repl_backlog_size:1048576
  21. repl_backlog_first_byte_offset:1
  22. repl_backlog_histlen:140
  23. ...

7.主从同步进行测试

主master 进行设置一个键值:

  1. [root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# redis-cli
  2. 127.0.0.1:6379> SET test-sync wiwiiwi20180217
  3. OK

从slave 检查是否已经自动同步到了从库:

  1. 127.0.0.1:6379> get test-sync
  2. "wiwiiwi20180217"

可以看到,数据确实是从主库同步到了从库。

注意:主库用来写数据,从库用来读取数据

因为从库中修改的数据不会被同步到任何其他数据库,并且一旦主库修改了数据,从库的数据就会因为自动同步被覆盖,所以一般情况下,不建议将从库设置为可写

主从同步的原理:

  1. 当一个从数据库启动时,会向主数据库发送SYNC命令,主数据库收到命令后会开始在后台保存快照(即RDB持久化过程),并将保存快照期间接收到的命令缓存起来。当快照完成后,Redis会将快照文件和缓存的命令发给从数据库,从数据库收到数据后,会载入快照文件并执行缓存的命令。以上过程称为复制初始化。复制初始化之结束后,主数据库每收到写命令时就会将命令同步给从数据库,从而保证主从数据库数据一致,这一过程称为复制同步阶段。

猜你在找的CentOS相关文章