前面的文章已经介绍了redis作为缓存数据库的说明,本文主要说下redis主从复制及集群管理配置的操作记录:

Redis主从复制(目前redis仅支持主从复制模式,可以支持在线备份、读写分离等功能。)

  1. 1Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master),一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动
  2. 将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
  3. 2)通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。

Redis主从复制流程图

复制过程:

  1. 1)当一个从数据库启动时,会向主数据库发送sync命令,
  2. 2)主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
  3. 3)当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
  4. 4)从数据库收到后,会载入快照文件并执行收到的缓存的命令。

下面简单记录下Redis主从复制的操作记录:

  1. 1)机器信息
  2. Redis主从结构支持一主多从,这里我使用一主两从(一主一从也行,配置一样)
  3. 主节点 182.48.115.236 master-node
  4. 从节点 182.48.115.237 slave-node1
  5. 从节点 182.48.115.238 slave-node2
  6.  
  7. 关闭三个节点机的iptables防火墙和selinux
  8.  
  9. 2)安装redis
  10. 三台节点机的安装步骤一样
  11. [root@master-node ~]# wget http://download.redis.io/redis-stable.tar.gz
  12. [root@master-node ~]# tar -zvxf redis-stable.tar.gz
  13. [root@master-node ~]# cd redis-stable
  14. [root@master-node redis-stable]# make
  15. [root@master-node redis-stable]# cd src/
  16. [root@master-node src]# cp redis-server redis-cli redis-check-aof redis-check-rdb redis-sentinel redis-trib.rb /usr/local/bin/
  17.  
  18. 然后新建目录,存放配置文件
  19. [root@master-node src]# mkdir /etc/redis
  20. [root@master-node src]# mkdir /var/redis
  21. [root@master-node src]# mkdir /var/redis/log
  22. [root@master-node src]# mkdir /var/redis/run
  23. [root@master-node src]# mkdir /var/redis/redis
  24.  
  25. redis解压根目录中找到配置文件模板
  26. [root@master-node src]# cd ../
  27. [root@master-node redis-stable]# cp redis.conf /etc/redis/redis.conf
  28.  
  29. 设置启动脚本
  30. [root@master-node redis-stable]# cp utils/redis_init_script /etc/init.d/redis
  31. [root@master-node redis-stable]# chmod 755 /etc/init.d/redis
  32.  
  33. 修改脚本pidconf路径为实际路径
  34. [root@master-node redis-stable]# vim /etc/init.d/redis
  35. ......
  36. REDISPORT=6379
  37. EXEC=/usr/local/bin/redis-server
  38. CLIEXEC=/usr/local/bin/redis-cli
  39.  
  40. PIDFILE=/var/redis/run/redis_6379.pid
  41. CONF="/etc/redis/redis.conf"
  42. .......
  43.  
  44. 3)主从复制配置
  45. master-node
  46. [root@master-node ~]# vim /etc/redis/redis.conf
  47. .......
  48. port 6379
  49. .......
  50. daemonize yes //这个修改为yes
  51. .......
  52. bind 0.0.0.0 //绑定的主机地址。说明只能通过这个ip地址连接本机的redis。最好绑定0.0.0.0;注意这个不能配置成127.0.0.1,否则复制会失败!用0.0.0.0或者本机ip地址都可以
  53. .......
  54. pidfile /var/redis/run/redis_6379.pid
  55. .......
  56. logfile /var/redis/log/redis_6379.log
  57. .......
  58. dir /var/redis/redis redis数据目录
  59. .......
  60. appendonly yes #启用AOF持久化方式
  61. appendfilename "appendonly.aof" #AOF文件的名称,默认为appendonly.aof
  62. appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。
  63. .....
  64. save 900 1 #启用RDB快照功能,默认就是启用的
  65. save 300 10
  66. save 60 10000 #即在多少秒的时间内,有多少key被改变的数据添加到.rdb文件里
  67. .......
  68. dbfilename dump.rdb #快照文件名称
  69. ......
  70.  
  71. slave-node1slave-node2两个从节点相比于master-node主节点的redis.conf配置,只是多了下面一行配置,其它都一样:
  72. slaveof 182.48.115.236 6379
  73.  
  74. 启动三个节点的redis(启动命令一样)
  75. [root@master-node ~]# /etc/init.d/redis start
  76. Starting Redis server...
  77. [root@master-node ~]# lsof -i:6379
  78. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  79. redis-ser 10475 root 4u IPv4 88640 0t0 TCP localhost:6379 (LISTEN)
  80.  
  81. 登陆主节点master-noderedis,查看状态
  82. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379 //使用182.48.115.236也可以登录,或者直接使用redis-cli也可以登录
  83. 127.0.0.1:6379> info
  84. ......
  85. ......
  86. # Replication
  87. role:master //节点在集群中的状态
  88. connected_slaves:2 //slave节点的个数
  89. slave0:ip=182.48.115.238,port=6379,state=online,offset=1,lag=1
  90. slave1:ip=182.48.115.237,port=6379,state=online,offset=1,lag=1
  91. ........
  92.  
  93. 登录从节点slave-node1redis,查看状态
  94. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379
  95. 127.0.0.1:6379> info
  96. .......
  97. .......
  98. # Replication
  99. role:slave
  100. master_host:182.48.115.236
  101. master_port:6379
  102. master_link_status:up
  103. ......
  104.  
  105. 登录从节点slave-node2redis,查看状态
  106. [root@slave-node2 ~]# redis-cli -h 127.0.0.1 -p 6379
  107. 127.0.0.1:6379> info
  108. ......
  109. # Replication
  110. role:slave
  111. master_host:182.48.115.236
  112. master_port:6379
  113. master_link_status:up
  114. ......
  115.  
  116. 4)测试数据同步
  117.  
  118. 主节点master-node上写入新数据
  119. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379
  120. 127.0.0.1:6379> set name wangshibo
  121. OK
  122. 127.0.0.1:6379> get name
  123. "wangshibo"
  124.  
  125. 然后到两台从节点上查看是否同步了上面写入的数据
  126. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379
  127. 127.0.0.1:6379> get name
  128. "wangshibo"
  129.  
  130. [root@slave-node2 ~]# redis-cli -h 127.0.0.1 -p 6379
  131. 127.0.0.1:6379> get name
  132. "wangshibo"
  133.  
  134. redis主从复制默认是读写分离的,即:
  135. 主节点上可以读写操作;从节点上只能进行读操作,不能写数据
  136. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379
  137. 127.0.0.1:6379> set name huanqiu
  138. (error) READONLY You can't write against a read only slave.
  139.  
  140. [root@slave-node2 ~]# redis-cli -h 127.0.0.1 -p 6379
  141. 127.0.0.1:6379> set name huanqiu
  142. (error) READONLY You can't write against a read only slave.
  143.  
  144. 5)主从切换
  145.  
  146. 5.1)停止主节点master-noderedis
  147. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379 shutdown
  148. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379
  149. Could not connect to Redis at 127.0.0.1:6379: Connection refused
  150. Could not connect to Redis at 127.0.0.1:6379: Connection refused
  151.  
  152. 将从节点slave-node1redis设成主redis
  153. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE //这条命了只是临时将该节点设置为主节点;当redis重启后,就会失效;可以登录redis,通过info信息查看!
  154. OK
  155. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379 //变为主redis后,slave-node1就可以进行写入操作了
  156. 127.0.0.1:6379> set name huanqiu
  157. OK
  158. 127.0.0.1:6379> info
  159. ......
  160. # Replication
  161. role:master //可知已经变成master主节点了
  162. connected_slaves:0
  163. master_repl_offset:0
  164.  
  165. 这时候master-node节点已经故障了,而另一个从节点slave-node2还跟它有主从关系。此时slave-node1已经变成主redis了,所以可以将slave-node2的主从关系中的主节点
  166. 配置修改为slave-node1(即182.48.115.237
  167.  
  168. 5.2)原来的主redis恢复正常了,要重新切换回去
  169. 比如原来的主redis节点master-node现在恢复了
  170. [root@master-node ~]# /etc/init.d/redis start
  171. Starting Redis server...
  172. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379
  173. 127.0.0.1:6379> info
  174. ......
  175. # Replication
  176. role:master //原来的主节点恢复了,发现只有一个从节点save-node2。另一个从节点slave-node1在master-node故障期间临时变为主节点
  177. connected_slaves:1
  178. slave0:ip=182.48.115.238,port=6379,state=online,offset=1,lag=0
  179. ......
  180.  
  181. 那么现在要重新将主节点切换回去。步骤如下:
  182.  
  183. a)登录临时切换的主节点slave-node1
  184. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379
  185. 127.0.0.1:6379> set name hahahha
  186. OK
  187. 127.0.0.1:6379> get name
  188. "hahahha"
  189. 127.0.0.1:6379> save //将数据保存
  190. OK
  191.  
  192. b)将现在的主redis(即slave-node1节点,临时设置的主节点)根目录下app文件和dump.rdb文件拷贝覆盖到原来主redis的根目录(覆盖前将原来主redis下的持久化文件备份下)
  193. [root@slave-node1 ~]# rsync -e "ssh -p22" -avpgolr /var/redis/redis/dump.rdb 182.48.115.236:/var/redis/redis/
  194. [root@slave-node1 ~]# rsync -e "ssh -p22" -avpgolr /var/redis/redis/appendonly.aof 182.48.115.236:/var/redis/redis/
  195.  
  196. c)重启原来的主redis(即master-node节点)
  197. [root@master-node ~]# /etc/init.d/redis stop
  198. [root@master-node ~]# /etc/init.d/redis start
  199.  
  200. d)在现在的主redis(即slave-node1)中切换(或者直接重启该节点的redis,因为redis.conf文件中已经配置了;如果不想重启redis,就使用下面的命令)
  201. [root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379 slaveof 182.48.115.236 6379
  202. OK
  203.  
  204. e)登录原来的主redis(也就是masternode)查看
  205. [root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379
  206. 127.0.0.1:6379> info
  207. .......
  208. # Replication
  209. role:master
  210. connected_slaves:2
  211. slave0:ip=182.48.115.237,port=6379,state=online,offset=1,lag=0
  212. slave1:ip=182.48.115.238,port=6379,state=online,offset=1,lag=0
  213. master_repl_offset:1
  214. ......
  215. ------------------------------------------------------------------------------------------------------------------
  216. 注意事项
  217. 如果使用主从复制,那么要确保你的master激活了持久化,或者确保它不会在当掉后自动重启,原因:
  218. aslavemaster的完整备份,因此如果master通过一个空数据集重启,slave也会被清掉。
  219. b)在配置redis复制功能的时候,如果主数据库设置了密码,需要在从数据的配置文件中通过masterauth参数设置主数据库的密码,这样从数据库在连接
  220. 主数据库时就会自动使用auth命令认证了。相当于做了一个免密码登录。(我上面的例子中没有设置密码)

Redis的主从自动切换(failover)可以通过Redis自带的Sentinel工具来实现(具体操作这里就先不介绍了)。redis的sentinel系统用于管理多个redis服务器,
该系统主要执行三个任务:监控、提醒、自动故障转移
1)监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
2)提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
3)自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,
让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。

注意:
在使用sentinel监控主从节点的时候,从节点需要是使用动态方式配置的,如果直接修改配置文件,后期sentinel实现故障转移的时候会出问题。

------------------------------------------------------------------------------------------------------------------------------------------------ 

Redis默认只支持主从模式,不支持主主模式,可以使用SSDB主主模式代替Redis实现主主同步环境。SSDB是一个快速的用来存储十亿级别列表数据的开源 NoSQL 数据库。支持Key-value, Keyhashmap, Key-zset(sorted set) 等数据结构,十分适合存储数亿条级别的列表, 排序表等集合数据, 是Redis的替代和增强方案。
SSDB特性:

  1. 1)替代 Redis 数据库, Redis 100倍容量
  2. 2LevelDB 网络支持, 使用C/C++ 开发
  3. 3Redis API 兼容, 支持 Redis 客户端
  4. 4)适合存储集合数据, list, hash, zset...
  5. 5)客户端 API 支持的语言包括: C++, PHP, Python,Cpy,Java,Nodejs,Ruby, Go
  6. 6)持久化的队列服务
  7. 7)主从复制,支持双主(双master)和多主架构, 负载均衡
  8. 8)图形化管理工具(phpssdbadmin)

SSDB的主从同步策略非常简单, 就是把主(Master)上的所有写操作(Binlogs), 在从(Slave)上再执行一遍. MySQL 的主从同步也是一样. 而多主可以理解为互为主从.

SSDB的双主和多主配置
SSDB 数据库是支持双主(双 Master)和多主架构的. 而且, 我们的应用也是部署双主架构, 但当作单主来用. 也就是说, 平时只往其中一个写, 当出现故障时, 整体切换到另一个主上面. 如果应用层已经解决了数据拆分, 也即不会两个节点同时操作一个 key, 那么就可以放心使用双主同时写入.

SSDB 双主的配置非常简单:

server1服务器

  1. replication:
  2. slaveof:
  3. id: svc_2
  4. # sync|mirror, default is sync
  5. type: mirror
  6. ip: 192.168.1.10
  7. port: 8888

server2服务器

  1. replication:
  2. slaveof:
  3. id: svc_1
  4. # sync|mirror, default is sync
  5. type: mirror
  6. ip: 192.168.1.11
  7. port: 8888

只需要将type设置为mirror, 然后每个节点各指向对方即可。如果是多主, 则每个节点要指向其它 n-1 个节点。

SSDB 主主同步模式部署记录

  1. SSDB主主模式的部署记录:
  2.  
  3. 182.48.115.236 master-node1
  4. 182.48.115.237 master-node2
  5.  
  6. 1)安装SSDB(在两个节点机上安装步骤一样,如下)
  7. [root@master-node1 ~]# mkdir -p /home/slim/ssdb
  8. [root@master-node1 ~]# wget https://github.com/ideawu/ssdb/archive/master.zip
  9. [root@master-node1 ~]# unzip master.zip
  10. [root@master-node1 ~]# cd ssdb-master/
  11. [root@master-node1 ssdb-master]# make PREFIX=/home/slim/ssdb
  12. [root@master-node1 ssdb-master]# make PREFIX=/home/slim/ssdb install
  13.  
  14. 2)主主模式配置
  15. master-node1节点上的配置
  16. [root@master-node1 ~]# cd /home/slim/ssdb/
  17. [root@master-node1 ssdb]# cp ssdb.conf ssdb.conf.bak
  18. [root@master-node1 ssdb]# vim ssdb.conf
  19. # ssdb-server config
  20. # MUST indent by TAB!
  21.  
  22. # relative to path of this file, directory must exists
  23. work_dir = ./var
  24. pidfile = ./var/ssdb.pid
  25.  
  26. server:
  27. ip: 182.48.115.236
  28. port: 8888
  29. # bind to public ip
  30. #ip: 0.0.0.0
  31. # format: allow|deny: all|ip_prefix
  32. # multiple allows or denys is supported
  33. #deny: all
  34. #allow: 127.0.0.1
  35. #allow: 192.168
  36. # auth password must be at least 32 characters
  37. #auth: very-strong-password
  38. #readonly: yes
  39.  
  40. replication:
  41. binlog: yes
  42. # Limit sync speed to *MB/s, -1: no limit
  43. sync_speed: -1
  44. slaveof:
  45. # to identify a master even if it moved(ip, port changed)
  46. # if set to empty or not defined, ip:port will be used.
  47. id: svc_1
  48. # sync|mirror, default is sync
  49. type: mirror
  50. host: 182.48.115.237
  51. port: 8888
  52.  
  53. logger:
  54. level: debug
  55. output: log.txt
  56. rotate:
  57. size: 1000000000
  58.  
  59. leveldb:
  60. # in MB
  61. cache_size: 500
  62. # in MB
  63. write_buffer_size: 64
  64. # in MB/s
  65. compaction_speed: 1000
  66. # yes|no
  67. compression: yes
  68.  
  69. master-node2节点上的配置
  70. [root@master-node2 ~]# cd /home/slim/ssdb/
  71. [root@master-node2 ssdb]# cp ssdb.conf ssdb.conf.bak
  72. [root@master-node2 ssdb]# vim ssdb.conf
  73. # ssdb-server config
  74. # MUST indent by TAB!
  75.  
  76. # relative to path of this file, directory must exists
  77. work_dir = ./var
  78. pidfile = ./var/ssdb.pid
  79.  
  80. server:
  81. ip: 182.48.115.237
  82. port: 8888
  83. # bind to public ip
  84. #ip: 0.0.0.0
  85. # format: allow|deny: all|ip_prefix
  86. # multiple allows or denys is supported
  87. #deny: all
  88. #allow: 127.0.0.1
  89. #allow: 192.168
  90. # auth password must be at least 32 characters
  91. #auth: very-strong-password
  92. #readonly: yes
  93.  
  94. replication:
  95. binlog: yes
  96. # Limit sync speed to *MB/s, -1: no limit
  97. sync_speed: -1
  98. slaveof:
  99. # to identify a master even if it moved(ip, port changed)
  100. # if set to empty or not defined, ip:port will be used.
  101. id: svc_2
  102. # sync|mirror, default is sync
  103. type: mirror
  104. host: 182.48.115.236
  105. port: 8888
  106.  
  107. logger:
  108. level: debug
  109. output: log.txt
  110. rotate:
  111. size: 1000000000
  112.  
  113. leveldb:
  114. # in MB
  115. cache_size: 500
  116. # in MB
  117. write_buffer_size: 64
  118. # in MB/s
  119. compaction_speed: 1000
  120. # yes|no
  121. compression: yes
  122.  
  123. 3)启动服务(两节点启动命令一样)
  124. [root@master-node1 ~]# /home/slim/ssdb/ssdb-server -d /home/slim/ssdb/ssdb.conf
  125. ssdb-server 1.9.4
  126. Copyright (c) 2012-2015 ssdb.io
  127.  
  128. [root@master-node1 ~]# ps -ef|grep ssdb
  129. root 23803 1 0 21:05 ? 00:00:00 /home/slim/ssdb/ssdb-server -d /home/slim/ssdb/ssdb.conf
  130. root 23819 23719 0 21:05 pts/0 00:00:00 grep ssdb
  131. .........................................................................................................
  132. 关闭命令:
  133. /home/slim/ssdb/ssdb-server /home/slim/ssdb/ssdb.conf -s stop
  134.  
  135. 帮忙命令
  136. /home/slim/ssdb/ssdb-server -h
  137. .........................................................................................................
  138.  
  139. 4)数据同步测试
  140. master-node1节点上写入数据
  141. [root@master-node1 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.236 -p 8888
  142. ssdb (cli) - ssdb command line tool.
  143. Copyright (c) 2012-2016 ssdb.io
  144.  
  145. 'h' or 'help' for help, 'q' to quit.
  146.  
  147. ssdb-server 1.9.4
  148.  
  149. ssdb 182.48.115.236:8888> set name wangshibo
  150. ok
  151. (0.001 sec)
  152. ssdb 182.48.115.236:8888> get name
  153. wangshibo
  154. (0.001 sec)
  155. ssdb 182.48.115.236:8888>
  156.  
  157. master-node2节点上查看:
  158. [root@master-node2 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.237 -p 8888
  159. ssdb (cli) - ssdb command line tool.
  160. Copyright (c) 2012-2016 ssdb.io
  161.  
  162. 'h' or 'help' for help, 'q' to quit.
  163.  
  164. ssdb-server 1.9.4
  165.  
  166. ssdb 182.48.115.237:8888> get name
  167. wangshibo
  168. (0.001 sec)
  169.  
  170. 同理,在master-node2节点上写入数据
  171. [root@master-node2 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.237 -p 8888
  172. ssdb (cli) - ssdb command line tool.
  173. Copyright (c) 2012-2016 ssdb.io
  174.  
  175. 'h' or 'help' for help, 'q' to quit.
  176.  
  177. ssdb-server 1.9.4
  178.  
  179. ssdb 182.48.115.237:8888> set huanqiutest hahahah
  180. ok
  181. (0.001 sec)
  182. ssdb 182.48.115.237:8888>
  183.  
  184. 然后在另一台master-node1节点上查看
  185. [root@master-node1 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.236 -p 8888
  186. ssdb (cli) - ssdb command line tool.
  187. Copyright (c) 2012-2016 ssdb.io
  188.  
  189. 'h' or 'help' for help, 'q' to quit.
  190.  
  191. ssdb-server 1.9.4
  192.  
  193. ssdb 182.48.115.236:8888> get huanqiutest
  194. hahahah
  195. (0.001 sec)
  196.  
  197. 以上说明ssdb主主同步环境已经实现!
  198.  
  199. ..............................................................................
  200. ssdb服务监控
  201. info 命令返回的信息
  202.  
  203. [root@master-node1 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.236 -p 8888
  204. ........
  205. ssdb 182.48.115.236:8888> info
  206. ........
  207. replication
  208. client 182.48.115.237:56014
  209. type : mirror
  210. status : SYNC
  211. last_seq : 3
  212. replication
  213. slaveof 182.48.115.237:8888
  214. id : svc_1
  215. type : mirror
  216. status : SYNC
  217. last_seq : 2
  218. copy_count : 1
  219. sync_count : 1
  220.  
  221. [root@master-node2 ~]# /home/slim/ssdb/ssdb-cli -h 182.48.115.237 -p 8888
  222. .........
  223. ssdb 182.48.115.237:8888> info
  224. .........
  225. replication
  226. client 182.48.115.236:50210
  227. type : mirror
  228. status : SYNC
  229. last_seq : 2
  230. replication
  231. slaveof 182.48.115.236:8888
  232. id : svc_2
  233. type : mirror
  234. status : SYNC
  235. last_seq : 3
  236. copy_count : 1
  237. sync_count : 0
  238.  
  239. ............................................................................
  240. info命令后的消息参数解释:
  241. 1binlogs
  242. 当前实例的写操作状态.
  243. capacity: binlog 队列的最大长度
  244. min_seq: 当前队列中的最小 binlog 序号
  245. max_seq: 当前队列中的最大 binlog 序号
  246.  
  247. 2replication
  248. 可以有多条 replication 记录. 每一条表示一个连接进来的 slave(client), 或者一个当前服务器所连接的 master(slaveof).
  249. slaveof|client ip:port, 远端 master/slave ip:port
  250. type: 类型, sync|mirror.
  251. status: 当前同步状态, DISCONNECTED|INIT|OUT_OF_SYNC|COPY|SYNC
  252. last_seq: 上一条发送或者收到的 binlog 的序号。
  253. slaveof.id: master id(这是从 slave's 角度来看的, 你永远不需要在 master 上配置它自己的 id)。
  254. slaveof.copy_count: 在全量同步时, 已经复制的 key 的数量。
  255. slaveof.sync_count: 发送或者收到的 binlog 的数量。
  256.  
  257. 3)关于 status:
  258. DISCONNECTED: 与 master 断开了连接, 一般是网络中断。
  259. INIT: 初始化状态。
  260. OUT_OF_SYNC: 由于短时间内在 master 有大量写操作, 导致 binlog 队列淘汰, slave 丢失同步点, 只好重新复制全部的数据。
  261. COPY: 正在复制基准数据的过程中, 新的写操作可能无法及时地同步。
  262. SYNC: 同步状态是健康的.
  263. 4)判断同步状态
  264. binlogs.max_seq 是指当前实例上的最新一次的写(写/更新/删除)操作的序号, replication.client.last_seq 是指已发送给 slave 的最新一条 binlog 的序号。所以, 如果你想判断主从同步是否已经同步到位(实时更新), 那么就判断 binlogs.max_seq 和 replication.client.last_seq 是否相等。
  265.  
  266. ---------------------SSDB备份与恢复----------------------
  267. 1)备份
  268. 支持了在线备份功能, 可以在不停止服务的情况下备份服务器数据,这个功能让 SSDB 更加成为一个真正生产环境的存储服务器。
  269. [root@master-node1 ~]# /home/slim/ssdb/ssdb-dump 182.48.115.237 8888 ./backup_dir
  270. 这条命令从监听在182.48.115.237:8888 的SSDB服务器上备份全量的数据, 保存到本地新创建的目录 backup_dir, 这个目录其实是一个 LevelDB 的数据库(db)。
  271.  
  272. 2)恢复
  273. 将 backup_dir 传输到服务器, 修改新ssdb服务器的配置文件, 将 SSDB 使用的数据库名改为 backup_dir, 然后重启 SSDB 即可。
  274.  
  275. 3)使用主从(Master-Slave)架构实时备份
  276.  
  277. 注意:
  278. a)一般, 建议你将 logger.level 设置为 debug 级别。详情参考:日志解读
  279. b)利用配置文件的 deny, allow 指令限制可信的来源 IP 访问,提高服务的安全。
  280. c)SSDB 的配置文件使用一个 TAB 来表示一级缩进, 不要使用空格来缩进, 无论你用2个, 3个, 4个, 或者无数个空格都不行!
  281. d)一定要记得修改你的 Linux 内核参数, 关于 max open files(最大文件描述符数)的内容,详情参考:构建C1000K的服务器

Linux下Redis主从复制以及SSDB主主复制环境部署记录的更多相关文章

  1. redis主从复制以及SSDB主主复制环境部署记录(四)

    redis配置主从和ssdb主主复制 参考:散尽浮华Linux下Redis主从复制以及SSDB主主复制环境部署记录 只做自己查阅. 环境要求:三台虚拟机一台做主,两台做从. 通过SSDB在redis做 ...

  2. Centos7下ELK+Redis日志分析平台的集群环境部署记录

    之前的文档介绍了ELK架构的基础知识,日志集中分析系统的实施方案:- ELK+Redis- ELK+Filebeat - ELK+Filebeat+Redis- ELK+Filebeat+Kafka+ ...

  3. linux下Redis主从复制

    Redis的主从配置比起MySQL主从配置简单多了,而且Redis主从复制中一个主服务可以有多个从服务,一个从服务又可以有多个从服务. MySQL主从配置http://www.cnblogs.com/ ...

  4. windows下和linux下 Redis 安装

    Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...

  5. Linux下Redis服务器安装配置

    说明:操作系统:CentOS1.安装编译工具yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel ...

  6. linux下Redis与phpredis扩展安装

    ++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...

  7. linux下redis的安装及配置启动

    linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报  分类: 数据与性能(41)  wget http:/ ...

  8. linux下redis服务器安装使用 安装php的redis扩展 安装laravel下的redis

    linux下redis服务器安装使用 学习源头: https://blog.csdn.net/itmanba/article/details/77335012 安装完毕试运行redis的时候,可能会出 ...

  9. 莫小安 Linux下Redis的安装与配置

    转载自--Linux下Redis的安装与配置 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它 ...

随机推荐

  1. 【 PostgreSQL】查询某模式下所有表的分布键信息

    想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! ​SELECT     aaa.nspname AS "模式名", ...

  2. oracle权限管理学习

      Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户pub ...

  3. Node.js中文乱码解决方法

  4. Red5视频流服务器安装

    一.安装jre JAVA运行时下载地址: https://www.java.com/zh_CN/download/manual.jsp 安装后设置环境变量,变量值是jre的安装路径 二.安装 red5 ...

  5. Deepin系统手动安装oracle jdk8详细教程

    Deepin系统手动安装oracle jdk8详细教程 oracle官网下载jdk压缩包,使用 sudo tar -zxf jdk***解压文件,我放在在了home/diy/java/jdk路径下. ...

  6. js如何获得局部变量的值

    方法一: <script> var a; //全局变量 function test(){ var b=20; //局部变量   return b; //返回局部变量的值 }; a=test ...

  7. P2665 [USACO08FEB]连线游戏Game of Lines

    本着dp的心情,结果是道水题STL  set就行了 题意:看有多少种斜率(题在那里半天说多少直线(不平行的)),其实就是找斜率的种类 #include<cstdio> #include&l ...

  8. Linux系统中将普通用户添加到sudoers

    我们经常会在普通用户下用到sudo命令,为了不用频繁切换root用户,我们可以将普通用户添加到sudoers里面.Linux默认是没有将用户添加到sudoers列表中的,需要root手动将账户添加到s ...

  9. P2731 骑马修栅栏 欧拉函数

    题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...

  10. MATLAB——神经网络构造线性层函数linearlayer

    % example5_7.m x=-:; y=*x-; randn(); % 设置种子,便于重复执行 y=y+randn(,length(y))*1.5; % 加入噪声的直线 plot(x,y,'o' ...