您的位置:首页 > 数据库 > Redis

Redis主从配置及测试

2018-01-09 14:35 141 查看
下载相应版本安装包

我这里使用的是redis-3.2.9版本

官网下载地址:http://download.redis.io/releases/redis-3.2.9.tar.gz

安装

1.主机环境
主机名IP地址操作系统
jia3.ty.com192.168.10.103CentOS release 6.6 (Final)
jia4.ty.com192.168.10.104CentOS release 6.6 (Final)
2.上传安装包

使用上传工具上传

3.解压

[root@jia3 ~]# tar -xvf redis-3.2.9.tar.gz

[root@jia3 ~]# cd redis-3.2.9

4.编译安装

[root@jia3 redis-3.2.9]# cd src

[root@jia3 src]# make install PREFIX=/app/redis

5.创建目录,拷贝配置文件

[root@jia3 src]# mkdir /app/redis/{conf,data,log}

[root@jia3 src]# cd ..

[root@jia3 redis-3.2.9]# cp redis.conf /app/redis/conf/

[root@jia3 redis-3.2.9]# cp sentinel.conf /app/redis/conf/

6.另一台主机做相同安装操作

配置

需要修改103,104两台主机上的/app/redis/conf/redis.conf文件:

bind 127.0.0.1 改为 bind 0.0.0.0


daemonize no 改为 daemonize yes


logfile "" <
4000
/span>
改为 logfile "/app/redis/log/redis.log"


dir ./ 改为 dir /app/redis/data/


修改104机器上的/app/redis/conf/redis.conf文件添加如下一行:
slaveof 192.168.10.103 6379

Redis的详解配置
  daemonize:如需要在后台运行,把该项的值改为yes
  pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
  bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
  port:监听端口,默认为6379
  timeout:设置客户端连接时的超时时间,单位为秒
  loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
  logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
  database:设置数据库的个数,默认使用的数据库是0
  save:设置redis进行数据库镜像的频率
  rdbcompression:在进行镜像备份时,是否进行压缩

  dbfilename:镜像备份文件的文件名

  dir:数据库镜像备份的文件放置的路径

  slaveof:设置该数据库为其他数据库的从数据库

  masterauth:当主数据库连接需要密码验证时,在这里设定

  requirepass:设置客户端连接后进行任何其他指定前需要使用的密码

  maxclients:限制同时连接的客户端数量

  maxmemory:设置redis能够使用的最大内存

  appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态

  appendfsync:设置appendonly.aof文件进行同步的频率

  vm_enabled:是否开启虚拟内存支持

  vm_swap_file:设置虚拟内存的交换文件的路径

  vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0

  vm_page_size:设置虚拟内存页的大小

  vm_pages:设置交换文件的总的page数量

  vm_max_thrrads:设置vm IO同时使用的线程数量

启动测试
启动两台机器上的redis服务:

[root@jia3 bin]# /app/redis/bin/redis-server /app/redis/conf/redis.conf

[root@jia4 bin]# /app/redis/bin/redis-server /app/redis/conf/redis.conf

查看状态:
103机器, 主redis

[root@jia3 bin]# /app/redis/bin/redis-cli -h 192.168.10.103

192.168.10.103:6379> info replication #查看主从复制段信息

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.10.104,port=6379,state=online,offset=169,lag=0

master_repl_offset:169

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:168

104机器, 从redis

[root@jia4 bin]# /app/redis/bin/redis-cli -h 192.168.10.104

192.168.10.104:6379> info replication #查看主从复制段信息

# Replication

role:slave

master_host:192.168.10.103

master_port:6379

master_link_status:up

master_last_io_seconds_ago:7

master_sync_in_progress:0

slave_repl_offset:239

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

测试数据同步:
103机器, 主redis

192.168.10.103:6379> set key1 abc

OK

192.168.10.103:6379> get key1

"abc"

104机器, 从redis

192.168.10.104:6379> get key1 #已经同步了key1,可以获取到

"abc"

从库默认只读:
104机器, 从redis

192.168.10.104:6379> set key2 def

(error) READONLY You can't write against a read only slave.

主从切换

1.停掉主库103机器的redis服务

[root@jia3 bin]# /app/redis/bin/redis-cli -h 192.168.10.103 shutdown

2.将从库104机器的redis服务变成主库
192.168.10.104:6379> slaveof no one

OK
192.168.10.104:6379> info replication

# Replication

role:master

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

变成主库之后可以进行写入:
192.168.10.104:6379> set key3 aaa

OK
192.168.10.104:6379> get key3

"aaa"
192.168.10.104:6379> save

OK

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

1)将现在的主redis(104机器)的数据进行保存
192.168.10.104:6379> save

OK

2)将现在的主redis(104机器)数据目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

[root@jia4 data]# scp /app/redis/data/dump.rdb 192.168.10.103:/app/redis/data/

3)启动原来的主redis(103机器)

[root@jia3 bin]# /app/redis/bin/redis-server /app/redis/conf/redis.conf

[root@jia3 bin]# /app/redis/bin/redis-cli -h 192.168.10.103

192.168.10.103:6379> get key3 #数据是一致的

"aaa"

4)在现在的主redis中切换(104机器)
192.168.10.104:6379> slaveof 192.168.10.103 6379 #将104变成103的从库,恢复初始状态

OK
192.168.10.104:6379> info replication

# Replication

role:slave

master_host:192.168.10.103

master_port:6379

master_link_status:up

master_last_io_seconds_ago:6

master_sync_in_progress:0

slave_repl_offset:43

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: