| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/bin/bash
- # Redis主从复制配置脚本
- # 用途:配置Redis主从复制
- set -e
- MASTER_IP="172.16.0.67"
- SLAVE_IP="172.16.0.68"
- REDIS_PASSWORD="Hzdyjs@123456"
- echo "=========================================="
- echo "Redis主从复制配置脚本"
- echo "=========================================="
- # 检查当前机器IP
- CURRENT_IP=$(hostname -I | awk '{print $1}')
- echo "当前机器IP: $CURRENT_IP"
- if [ "$CURRENT_IP" = "$MASTER_IP" ]; then
- echo "配置主节点 (Master)..."
-
- # 1. 配置主节点redis.conf
- REDIS_CONF="/etc/redis.conf"
- if [ ! -f "$REDIS_CONF" ]; then
- REDIS_CONF="/etc/redis/redis.conf"
- fi
-
- # 备份原配置
- cp "$REDIS_CONF" "${REDIS_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
-
- # 修改配置
- sed -i "s/^# bind 127.0.0.1/bind 0.0.0.0/" "$REDIS_CONF"
- sed -i "s/^# requirepass.*/requirepass $REDIS_PASSWORD/" "$REDIS_CONF"
- sed -i "s/^# masterauth.*/masterauth $REDIS_PASSWORD/" "$REDIS_CONF"
-
- # 2. 重启Redis
- systemctl restart redis
- sleep 3
-
- echo "主节点配置完成!"
-
- elif [ "$CURRENT_IP" = "$SLAVE_IP" ]; then
- echo "配置从节点 (Slave)..."
-
- # 1. 配置从节点redis.conf
- REDIS_CONF="/etc/redis.conf"
- if [ ! -f "$REDIS_CONF" ]; then
- REDIS_CONF="/etc/redis/redis.conf"
- fi
-
- # 备份原配置
- cp "$REDIS_CONF" "${REDIS_CONF}.backup.$(date +%Y%m%d_%H%M%S)"
-
- # 修改配置
- sed -i "s/^# bind 127.0.0.1/bind 0.0.0.0/" "$REDIS_CONF"
- sed -i "s/^# requirepass.*/requirepass $REDIS_PASSWORD/" "$REDIS_CONF"
- sed -i "s/^# replicaof.*/replicaof $MASTER_IP 6379/" "$REDIS_CONF"
- sed -i "s/^# masterauth.*/masterauth $REDIS_PASSWORD/" "$REDIS_CONF"
-
- # 2. 重启Redis
- systemctl restart redis
- sleep 3
-
- # 3. 验证主从状态
- echo "验证主从复制状态..."
- redis-cli -a "$REDIS_PASSWORD" INFO replication | grep -E "role|master_host|master_port|master_link_status"
-
- echo "从节点配置完成!"
-
- else
- echo "错误:当前机器IP ($CURRENT_IP) 不在配置范围内"
- exit 1
- fi
- echo "=========================================="
- echo "使用以下命令测试主从复制:"
- echo "主节点: redis-cli -a $REDIS_PASSWORD set test_key 'test_value'"
- echo "从节点: redis-cli -a $REDIS_PASSWORD get test_key"
- echo "=========================================="
|