通过使用 Redis 自带“主从同步+哨兵守护”功能提高Redis稳定性。

主从同步:保障数据主从数据实时同步。

哨兵:实时监控主redis如果故障,将从redis作为主使用。

环境:

  • 系统:Centos7/Redhat7
  • 服务:Redis4.0.11
  • 服务器台数:1台(可多台)
  • Redis服务数量:3个
  • 192.168.1.100:6381(主)
  • 192.168.1.100:6382(从)
  • 192.168.1.100:6383(从)

Redis 主从同步

一、Redis主从同步搭建

1、解压缩包

tar -zxvf redis-4.0.11.tar.gz 

2、移动到指定目录

mv redis-4.0.11 /usr/local/redis

3、移动到指定目录并编译安装

cd /usr/local/redis
make && make install

 4、为每个Redis创建各自的目录

mkdir -p /usr/local/redis-ms/6381
mkdir -p /usr/local/redis-ms/6382
mkdir -p /usr/local/redis-ms/6383

5、将配置文件复制到创建目录下

cp /usr/local/redis/redis.conf /usr/local/redis-ms/6381/
cp /usr/local/redis/redis.conf /usr/local/redis-ms/6382/
cp /usr/local/redis/redis.conf /usr/local/redis-ms/6383/

6、redis 6381主 :修改如下配置参数

vim /usr/local/redis-ms/6381/redis.conf

# 任意ip都可以连接
bind 0.0.0.0
# 关闭保护,允许非本地连接
protected-mode no
# 端口号
port 6381
# 后台运行
daemonize yes
# 开启日志形式
appendonly yes
# 进程守护文件,就是存放该进程号相关信息的地方
pidfile "/var/run/redis_6381.pid"
# db等相关目录位置
dir /usr/local/redis-ms/6381/
# 缓存库数量
databases 50
# 设置redis密码
requirepass "123456"
# 设置主从复制密码
masterauth "123456"

7、redis 6382从 :修改如下配置参数

vim /usr/local/redis-ms/6382/redis.conf

# 任意ip都可以连接
bind 0.0.0.0
# 关闭保护,允许非本地连接
protected-mode no
# 端口号
port 6382
# 后台运行
daemonize yes
# 开启日志形式
appendonly yes
# 进程守护文件,就是存放该进程号相关信息的地方
pidfile "/var/run/redis_6382.pid"
# db等相关目录位置
dir /usr/local/redis-ms/6382/
# 缓存库数量
databases 50
# 设置redis密码
requirepass "123456"
# 设置主从复制密码
masterauth "123456"
# 主信息
slaveof 192.168.1.100 6381

8、redis 6383从 :修改如下配置参数

vim /usr/local/redis-ms/6383/redis.conf

# 任意ip都可以连接
bind 0.0.0.0
# 关闭保护,允许非本地连接
protected-mode no
# 端口号
port 6383
# 后台运行
daemonize yes
# 开启日志形式
appendonly yes
# 进程守护文件,就是存放该进程号相关信息的地方
pidfile "/var/run/redis_6383.pid"
# db等相关目录位置
dir /usr/local/redis-ms/6383/
# 缓存库数量
databases 50
# 设置redis密码
requirepass "123456"
# 设置主从复制密码
masterauth "123456"
# 主信息
slaveof 192.168.1.100 6381

9、启动

/usr/local/redis/src/redis-server /usr/local/redis-ms/6381/redis.conf
/usr/local/redis/src/redis-server /usr/local/redis-ms/6382/redis.conf
/usr/local/redis/src/redis-server /usr/local/redis-ms/6383/redis.conf

二、测试Redis主从同步

1、查看主从同步状态

/usr/local/redis/src/redis-cli -p 6381 -a 123456 info
# Server
redis_version:4.0.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c471ec760376b22e
redis_mode:standalone
os:Linux 3.10.0-123.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.2
process_id:2788
run_id:3e7540f2dbcf55921c4e6bf5ac6de8f0c0d48625
tcp_port:6381
uptime_in_seconds:3196
uptime_in_days:0
hz:10
lru_clock:15365847
executable:/usr/local/redis/src/redis-server
config_file:/usr/local/redis-ms/6381/redis.conf

# Clients
connected_clients:3
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1960456
used_memory_human:1.87M
used_memory_rss:10055680
used_memory_rss_human:9.59M
used_memory_peak:2001448
used_memory_peak_human:1.91M
used_memory_peak_perc:97.95%
used_memory_overhead:1935516
used_memory_startup:786632
used_memory_dataset:24940
used_memory_dataset_perc:2.12%
total_system_memory:499048448
total_system_memory_human:475.93M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:5.13
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1575644640
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:6475776
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:8507392
aof_current_size:113
aof_base_size:58
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0

# Stats
total_connections_received:17
total_commands_processed:8041
instantaneous_ops_per_sec:2
total_net_input_bytes:402231
total_net_output_bytes:1561243
instantaneous_input_kbps:0.14
instantaneous_output_kbps:0.18
rejected_connections:0
sync_full:0
sync_partial_ok:1
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:1
keyspace_misses:0
pubsub_channels:1
pubsub_patterns:0
latest_fork_usec:1179
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.100,port=6383,state=online,offset=224730,lag=1
master_replid:ca1e338e226a084983510088b89c15c556e7a945
master_replid2:f5f36c27bd86377158a1f2e85064f55924601b00
master_repl_offset:224871
second_repl_offset:22486
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224871

# CPU
used_cpu_sys:2.09
used_cpu_user:1.02
used_cpu_sys_children:0.13
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=1,expires=0,avg_ttl=0
redis状态

相关文章: