Redis 主从同步配置
主从功能:
为了防止 Redis 磁盘损坏,导致数据丢失,Redis 提供了复制功能,将一个主数据库的数据自动同步到从数据库,防止数据丢失。
同时还可以配置一主多从来分担主压力,主只接受写的操作,将读的操作给从来实现;其中从库也可以接受其它从库的同步请求。
如果主、从因为网络原因出现连接断开,网络正常后从可以自动连接主,连接成功后主会将完整的数据同步一次给从,保证数据一致性。
主从原理:
1、从数据库启动后,向主数据库发送 SYNC 命令
2、主数据库收到 SYNC 命令后开始保存快照,在此期间所有发给主数据库的命令都被缓存起来
3、快照保存完后,主数据库把快照和缓存的命令一起发给从数据库
4、从数据库保存主数据发来的快照文件,并依次执行主数据库发来的缓存命令
在同步过程中,主、从数据库都不会阻塞:
-----> 主库可以继续接受客户端提交的查询或修改请求;
-----> 从库默认使用同步之前的数据继续响应客户端发来的命令
一、配置 Redis 主从
## 这里可以使用一台服务器启动两个 Redis 服务,只需指定不同的配置文件,不同的端口即可
## 为了加入防火墙规则,我使用两台服务器来完成
Redis Master :192.168.1.88
Redis Slave :192.168.1.80
1、Redis Master ( 这里不写安装过程了,写到 Slave 位置 )
[root@master ~]# vim /usr/local/redis/redis.conf daemonize yes
port
timeout
loglevel verbose
pidfile /usr/local/redis/logs/redis.pid
logfile /usr/local/redis/logs/redis.log requirepass redispassword
databases save
save
save
rdbcompression yes
dbfilename dump.rdb dir /usr/local/redis/data/ appendonly no
appendfilename appendonly.aof
appendfsync everysec no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage
auto-aof-rewrite-min-size 64mb [root@master ~]# redis-server /usr/local/redis/redis.conf [root@master ~]# netstat -anpt | grep redis
tcp 0.0.0.0: 0.0.0.0:* LISTEN /redis-server [root@master ~]# iptables -I INPUT -s 192.168.1.80 -p tcp --dport -j ACCEPT
2、Redis Slave
下载地址:https://code.google.com/p/redis/downloads/list
[root@slave ~]# cd /usr/local/src/
[root@slave src]# tar zxf redis-2.6..tar.gz
[root@slave src]# cd redis-2.6.
[root@slave redis-2.6.]# make ; make install [root@slave ~]# mkdir /usr/local/redis
[root@slave ~]# cd !$
cd /usr/local/redis
[root@slave redis]# cp ../src/redis-2.6./redis.conf .
[root@slave redis]# cp ../src/redis-2.6./src/redis-cli .
[root@slave redis]# cp ../src/redis-2.6./src/redis-server .
[root@slave redis]# cp ../src/redis-2.6./src/redis-sentinel .
[root@slave redis]# cp ../src/redis-2.6./src/redis-benchmark .
[root@slave redis]# cp ../src/redis-2.6./src/redis-check-aof .
[root@slave redis]# cp ../src/redis-2.6./src/redis-check-dump . [root@slave redis]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
[root@slave redis]# sysctl vm.overcommit_memory=
[root@slave redis]# mkdir data logs
[root@slave redis]# vim redis.conf daemonize yes
port
timeout
loglevel verbose
pidfile /usr/local/redis/logs/redis.pid
logfile /usr/local/redis/logs/redis.log #requirepass redispassword
databases save
save
save
rdbcompression yes
dbfilename dump.rdb dir /usr/local/redis/data/ appendonly no
appendfilename appendonly.aof
appendfsync everysec no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage
auto-aof-rewrite-min-size 64mb masterauth redispassword
slaveof 192.168.1.88
## 直接复制 Master 的配置文件,添加最后两行即可
[root@slave ~]# redis-server /usr/local/redis/redis.conf [root@slave ~]# netstat -anpt | grep redis
tcp 0.0.0.0: 0.0.0.0:* LISTEN /redis-server
tcp 192.168.1.80: 192.168.1.88: ESTABLISHED /redis-server
## 可以看到启动成功,并且建立了一条到 Master 的连接
[root@slave ~]# ls /usr/local/redis/data/
dump.rdb
## data 目录下也有了 master 同步过来的数据( 虽然主库并没有写入数据 )
二、测试 Redis 主从
[root@master ~]# redis-cli -a redispassword
redis 127.0.0.1:> keys *
(empty list or set)
redis 127.0.0.1:> set name wang
OK
redis 127.0.0.1:> set id
OK
redis 127.0.0.1:> keys *
) "id"
) "name"
redis 127.0.0.1:> quit
## 这是在 master 上的操作,-a 指定认证密码
[root@slave ~]# redis-cli
redis 127.0.0.1:> keys *
) "id"
) "name"
redis 127.0.0.1:> get name
"wang"
redis 127.0.0.1:> get id
""
redis 127.0.0.1:> set cc
(error) READONLY You can't write against a read only slave.
redis 127.0.0.1:> quit
## 这是在从上的操作,其中 slave 没有设密码所以不用 -a 指定,可以查到同步过来的 keys ,因为要保持数据一致性,所以不能写入。
## 如果在主执行 del name 那么从上的 name 也被删除。
## 主从同步完成 !
Redis 主从同步配置的更多相关文章
- redis主从同步配置
主服务器无需操作,从服务器 SLAVEOF 主服务器IP 端口 即可. 断开主从,执行 SLAVEOF NO ONE 即可. 同事和我在内网配置了连内网测试的服务器可以执行,但是连对方的不行,开始以为 ...
- redis主从同步故障切换及集群配置
一.redis是一中高性能的缓存数据库, 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下 ...
- Redis系列之(二):Redis主从同步,读写分离
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- redis 主从同步
修改redis.conf配置文件 vi redis.conf 在编辑模式下 输入 /slaveof 来搜索 将slaveof启用 即 将#删除 依次配置所有 slave 并将进程 kill 掉 重启 ...
- Redis系列之(二):Redis主从同步,读写分离(转)
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- Redis主从环境配置
1.Redis主从同步原理 redis主服务器会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,然后将数据文件同步给从服务器,从服务器加载记录文件,在内存库中更新新数据. 2.VMWar ...
- Redis主从同步分析(转)
一.Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接 ...
- 15.6,redis主从同步
redis主从同步 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令.3 ...
- Redis主从同步分析
一.Redis主从同步原理1.1 Redis主从同步的过程配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接断开 ...
随机推荐
- CF1114F Please, another Queries on Array?
CF1114F Please, another Queries on Array? 考虑用线段树维护取模后的区间积和真正的区间积所含有的质因子. 每次询问查得这两个值后,一乘一除,即可算出该区间积的欧 ...
- 20179223《Linux内核原理与分析》第八周学习笔记
视频学习 可执行文件是怎么得来的? .c汇编成汇编代码.asm,然后再汇编成目标码.o.然后在连接成可执行文件,然后加载到内存可执行了. 对hello.c文件预处理(cpp),预处理负责把includ ...
- 关于swagger文档的使用方法
引言 最近在后台开发的时候,使用swagger2进行前后台接口文档的声明.由此遇见的一些问题,写下来给自己复习. 参考: https://blog.csdn.net/xupeng874395012/a ...
- Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够编译并执行我们的代码. 作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一 ...
- Java Garbage Collection
在C/C++中,需要自己负责object的creation 和 destruction. 如果忘记了destruction, 就容易出现OutOfMemoryErrors. Java中会有GC直接处理 ...
- 控制已经打开的Excel
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- win32鼠标和键盘相关函数
键盘相关函数:http://msdn.microsoft.com/en-us/library/windows/desktop/ms645530%28v=vs.85%29.aspx 鼠标相关函数:htt ...
- CH1801 括号画家
题意 Candela是一名漫画家,她有一个奇特的爱好,就是在纸上画括号.这一天,刚刚起床的Candela画了一排括号序列,其中包含小括号( ).中括号[ ]和大括号{ },总长度为N.这排随意绘制的括 ...
- UVA11538 Chess Queen
题意 给一个\(n \times m\)的棋盘,输出有多少种方法放置两个互相攻击的皇后. \(n,m \leq 10^6\) 分析 参照刘汝佳的题解. 横.竖.斜三种情况互不相干,加法原理统计. 横竖 ...
- sublime设置右键在浏览器打开
用sublime编辑html文件,右键此文件,自带一个在浏览器中打开,但是这个是在IE里打开, 如何在chrome里打开呢. 1. 这里插入一下安装"view in browser" ...