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

Redis主从配置详细过程

2015-08-28 01:44 609 查看
创建相关目录

# mkdir -p /usr/local/redis/{etc,bin,var}

# mkdir -p /data/logs/redis /data/dbcache

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

编译安装

# tar -xvzf redis-2.4.13.tar.gz

# cd redis-2.4.13

# make

# cd src && cp redis-server redis-cli redis-benchmark /usr/local/redis/bin

# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

# /sbin/sysctl -p

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

主服务器设置【192.168.1.100】

# vim /usr/local/redis/etc/redis.conf

daemonize yes

pidfile /usr/local/redis/var/redis.pid

port 6379

bind 192.168.1.100

unixsocket /usr/local/redis/var/redis.sock

unixsocketperm 755

timeout 300

loglevel verbose

logfile /data/logs/redis/redis.log

# syslog-enabled no

# syslog-ident redis

# syslog-facility local0

databases 16

save 900 1

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /data/dbcache

# slaveof <masterip> <masterport>

# masterauth <master-password>

# repl-ping-slave-period 10

# repl-timeout 60

requirepass redis123

# rename-command CONFIG ""

maxclients 0

# maxmemory <bytes>

# maxmemory-policy volatile-lru

# maxmemory-samples 3

appendonly no

appendfilename appendonly.aof

appendfsync always

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000

slowlog-max-len 128

vm-enabled no

vm-swap-file /data/dbcache/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

glueoutputbuf yes

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes

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

从服务器设置【192.168.1.200】

daemonize yes

pidfile /usr/local/redis/var/redis.pid

port 6379

bind 192.168.1.200

unixsocket /usr/local/redis/var/redis.sock

unixsocketperm 755

timeout 300

loglevel verbose

logfile /data/logs/redis/redis.log

# syslog-enabled no

# syslog-ident redis

# syslog-facility local0

databases 16

save 900 1

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /data/dbcache

# slaveof <masterip> <masterport>

# masterauth <master-password>

# repl-ping-slave-period 10

# repl-timeout 60

# rename-command CONFIG ""

maxclients 0

# maxmemory <bytes>

# maxmemory-policy volatile-lru

# maxmemory-samples 3

appendonly no

appendfilename appendonly.aof

appendfsync always

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000

slowlog-max-len 128

vm-enabled no

vm-swap-file /data/dbcache/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

glueoutputbuf yes

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes

slave-serve-stale-data yes

slaveof 192.168.1.100 6379

masterauth redis123


启动服务:

# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

主服务器上执行:

# /usr/local/redis/bin/redis-cli -h 192.168.1.100 -a redis123 set test 123456

从服务器上执行:

# /usr/local/redis/bin/redis-cli -h 192.168.1.200 get test

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

启动脚本

# vim /etc/init.d/redis

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

启动服务

# chmod 700 /etc/init.d/redis

# chkconfig --add redis

# service redis start

测试是否已启动

# /usr/local/redis/bin/redis-cli ping

性能测试

# /usr/local/redis/bin/redis-benchmark

关闭服务

# /usr/local/redis/bin/redis-cli -p 6379 shutdown

强制刷新数据到磁盘【Redis默认是异步写入磁盘的】

# /usr/local/redis/bin/redis-cli -p 6379 save

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

phpredis扩展安装

# svn checkout http://phpredis.googlecode.com/svn/trunk/phpredis-read-only

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config

# make && make install

*******************************************************************************

redis主从配置及主从切换

环境描述:

主redis:192.168.10.1 6379

从redis:192.168.10.2 6380

一、主从配置

1、将主从redis配置文件redis.conf中的aemonize no 改为
yes


2、修改从redis配置文件redis.conf中的
port 6379 改为 6380,添加
slaveof 192.168.10.1 6379

3、启动主从服务

主redis:

[root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf

从redis:

[root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-slave/redis-2.8.3/redis.conf

4、测试数据同步

主redis:

[root@localhost redis-2.8.3]# src/redis-cli -p 6379

127.0.0.1:6379> set name abc

OK

127.0.0.1:6379> get name

"abc"

127.0.0.1:6379>

从redis:

[root@localhost redis-2.8.3]# src/redis-cli -p 6380

127.0.0.1:6380> get name

"abc"

127.0.0.1:6380>

5、默认是读写分离的

在从redis:

[root@localhost redis-2.8.3]# src/redis-cli -p 6380

127.0.0.1:6380> set name 123

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

二、主从切换

1、停止主redis

[root@localhost redis-2.8.3]# src/redis-cli -n 6379 shutdown

[root@localhost redis-2.8.3]# src/redis-cli -p 6379

Could not connect to Redis at 127.0.0.1:6379: Connection refused

not connected>

2、将从redis设成主redis

[root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof NO ONE

OK

3、测试从redis是否切换从主redis

[root@localhost redis-2.8.3]# src/redis-cli -p 6380

127.0.0.1:6380> set name 123

OK

127.0.0.1:6380> get name

"123"

127.0.0.1:6380>

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

1)将现在的主redis的数据进行保存

[root@localhost redis-2.8.3]# src/redis-cli -p 6380

127.0.0.1:6380> get name

"abc"

127.0.0.1:6380> set name 123

OK

127.0.0.1:6380> get name

"123"

127.0.0.1:6380> save

OK

127.0.0.1:6380> get name

"123"

127.0.0.1:6380>

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

3)启动原来的主redis

[root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf

4)在现在的主redis中切换

[root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof 192.168.10.1 6379

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