分享Redis主从配置的详细步骤---不同主机

本文详细介绍Redis主从配置过程,包括目录创建、编译安装、主服务器与从服务器配置、启动脚本编写等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为大家介绍redis主从配置的具体方法,从安装到配置,到启动脚本,很全面的。
是一篇不错的有关redsi主从配置的文章。

1,创建目录
 

复制代码代码示例:
# mkdir -p /usr/local/redis/{etc,bin,var}
# mkdir -p /data/logs/redis /data/dbcache

2,编译安装redis
 

复制代码代码示例:
# 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

3,主服务器设置【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

4,从服务器设置【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

6,启动脚本
 

复制代码代码示例:

# vim /etc/init.d/redis
#!/bin/sh
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig:   - 85 15
# description:  Redis is a persistent key-value database
# processname: redis-server
# config:      /usr/local/redis/etc/redis.conf
# pidfile:     /usr/local/redis/var/redis.pid
# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0
redis="/usr/local/redis/bin/redis-server"
prog=$(basename $redis)
REDIS_CONF_FILE="/usr/local/redis/etc/redis.conf"
lockfile="/var/lock/subsys/redis"
start() {
        [ -x $redis ] || exit 5
        [ -f $REDIS_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        $redis $REDIS_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
}

stop() {
        echo -n $"Stopping $prog: "
        /sbin/killproc $prog -QUIT

        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
}
restart() {
        stop
        sleep 1
        start
}
reload() {
        echo -n $"Reloading $prog: " 
        /sbin/killproc $redis -HUP

        RETVAL=$?
        echo
}

case "$1" in
start)
    $1
    ;;
stop)
    $1
    ;;
restart)
    $1
    ;;
reload)
    $1
    ;;
*)
    echo $"Usage: $0 {start|stop|restart|reload}"
    exit 2
esac

7,启动服务
 

复制代码代码示例:
# 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 -p6379 save

8,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

在使用 Docker 部署 Redis 主从复制配置时,主要通过容器化的方式将 Redis 的主节点和从节点分别运行,并利用 Docker 的卷(volumes)机制实现数据的持久化存储。以下是详细的部署步骤: ### 创建目录结构 首先需要为 Redis 主从节点创建对应的目录结构,以便挂载配置文件和数据存储路径。例如: ```bash mkdir -p /home/docker/redis6379/conf mkdir -p /home/docker/redis6379/data ``` 类似地,可以为从节点创建对应的目录结构,如 `/usr/local/software/redis/6380` 等 [^4]。 ### 拉取 Redis 镜像 使用以下命令拉取最新版本的 Redis 镜像: ```bash docker pull redis ``` ### 启动 Redis 主节点 启动 Redis 主节点时,需要指定挂载的配置文件和数据目录: ```bash docker run -v /usr/redis/redis_master.conf:/usr/redis/redis.conf -v /usr/redis/data:/data --privileged=true -p 6388:6388 --name redis_master -d redis redis-server /usr/redis/redis.conf ``` 此命令将宿主机上的 `redis_master.conf` 文件挂载到容器中,并将数据目录映射到宿主机上,以确保数据持久化 [^3]。 ### 启动 Redis 从节点 启动 Redis 从节点时,同样需要挂载相应的配置文件和数据目录: ```bash docker run -v /usr/redis/redis_slave1.conf:/usr/redis/redis.conf -v /usr/redis/data_slave1:/data --privileged=true -p 6389:6388 --name redis_slave1 -d redis redis-server /usr/redis/redis.conf ``` 需要注意的是,每个从节点应使用不同的端口和数据目录,以避免冲突 [^3]。 ### 配置 Redis 主从复制 在 Redis 的配置文件中,需要进行如下设置来启用主从复制功能。对于从节点,在其配置文件中添加以下内容: ```conf replicaof <masterip> <masterport> ``` 其中 `<masterip>` 是主节点的 IP 地址,`<masterport>` 是主节点的端口号。如果主节点设置了密码,则还需要在从节点的配置文件中添加: ```conf masterauth <password> ``` 这一步骤确保了从节点能够正确连接到主节点并开始同步数据 [^1]。 ### 数据持久化与安全性 为了防止因容器故障而导致的数据丢失,建议将 Redis 的数据和日志持久化到宿主机上。可以通过 Docker 的卷(volumes)功能实现这一点。例如,在 `docker-compose.yml` 文件中定义服务时,可以指定卷映射: ```yaml volumes: - ./redis/data:/data - ./redis/log:/var/log ``` 这样可以确保即使容器被删除或重启,数据仍然保留在宿主机上 [^2]。 ### 验证主从复制 最后,验证主从复制是否正常工作。可以通过向主节点写入数据,然后检查从节点是否能正确读取这些数据。例如,使用 `redis-cli` 工具连接到主节点并执行写操作: ```bash redis-cli -h localhost -p 6388 set test "value" ``` 接着,连接到从节点并执行读取操作: ```bash redis-cli -h localhost -p 6389 get test ``` 如果从节点返回了正确的值,则说明主从复制已经成功建立 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值