Redis构建简单的主从复制

Redis构建简单的主从复制

原理:

当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连
接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件
后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。

配置前提,关闭防火墙或允许redis端口通行

Centos7

IP:10.0.0.128(master)

IP:10.0.0.129(slave)

主服务器配置:

下载安装包,解压并编译;

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget  
[[email protected] src]# tar -zxvf redis-stable.tar.gz 
[[email protected] src]# mv redis-stable /usr/local/redis
[[email protected] src]# cd /usr/local/redis/
[[email protected] redis]# make && make install

copy配置文件redis.conf到/etc/目录下

[[email protected] redis]# cp redis.conf /etc/

修改配置文件;

[[email protected] ~]# vim /etc/redis.conf 
daemonize yes #开启redis进程
pidfile /var/run/redis_6379.pid #redis进程存放位置
dbfilename dump.rdb #指定快照文件名
dir /var/lib/redis #快照存储位置
masterauth 123456 #主库认证密码
requirepass 123456 #从库连接密码
#bind 127.0.0.1 #注释

启动redis服务;

[[email protected] redis]# /usr/local/bin/redis-server /etc/redis.conf
[[email protected] redis]# ps -ef |grep redis
root       5925      1  0 20:07 ?        00:00:00 /usr/local/bin/redis-server *:6379
root       5973   1614  0 20:09 pts/0    00:00:00 grep --color=auto redis

从服务器配置;

配置与主服务器一样,只需要修改配置文件,如下:

slaveof 10.0.0.128 6379 #指向主服务器
masterauth 123456 #主库设置的密码

启动服务;

[[email protected] ~]# /usr/local/bin/redis-server /etc/redis.conf

测试:

主服务器

127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.129,port=6379,state=online,offset=2571,lag=1
master_replid:c44ed3b15b076872c1091054cfd1f0fddd54c0e6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2571
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2571
127.0.0.1:6379> 
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379

从服务器

[[email protected] ~]# redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> INFO replication
# Replication
role:slave
master_host:10.0.0.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:2718
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c44ed3b15b076872c1091054cfd1f0fddd54c0e6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2718
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2718
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> set test hello
(error) READONLY You can‘t write against a read only slave.
127.0.0.1:6379> ####从服务器只读

###其它命令

删除keys:

127.0.0.1:6379>del keyname

当主服务器down,可以用一下命令将从升主:

127.0.0.1:6379> SLAVEOF NO ONE

时间: 2024-10-10 04:26:53

Redis构建简单的主从复制的相关文章

Redis的简单了解以及主从复制

1.Redis的简单了解 Redis是一种高性能的分布式NoSql数据库,持久存储,高并发,数据类型丰富,通过现场申请内存空间,同时可以配置虚拟内存.五种数据类型:string(字符串,这种格式和memcache是一致的).hash(哈希).list(列表,包括队列和栈).set(集合).zset(有序集合),使用key-value对的时候,可以直接存入对象,无需进行序列化,默认的使用了.net中自己的序列化,进行处理,所以也会出现对象循环引用的问题,此时需要使用json.net序列化为字符串,

Redis的持久化和主从复制机制

Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾. Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小. Redi

Redis实战 | 持久化、主从复制特性和故障处理思路

前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Redis简易教程Redis实战 | 5种Redis数据类型详解 Redis的两种持久化方式 经常有面试官会问:Redis数据存储在内存中,万一断电了怎么办呢? 不要慌,这个其实就是在问Redis的持久化策略啦.我们知道,保存在内存中的数据,在服务重启或者是机器挂掉之后是会丢失的.而硬盘中的数据是不会丢

nginx+lua+redis构建高并发应用(转)

nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis,返回json数据. 备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试 一.安装lua 1 2 3 # apt-get install lua5.1 # apt-get install liblua5.1-dev # apt-get install liblua5.

redis实战笔记(2)-第2章 使用 Redis构建Web应用

第2章 使用 Redis构建Web应用 本章主要内容 1.登录cookie 2.购物车cookie 3.缓存生成的网页 4.缓存数据库行 5.分析网页访问记录 本章的所有内容都是围绕着发现并解决Fake Web Retailer这个虚构的大型网上商店来展开的, 这个商店每天都会有大约500万名不同的用户, 这些用户会给网站带来1亿次点击, 并从网站购买超过10万件商品. 我们之所以将Fake Web Retailer的几个数据量设置得特别大, 是考虑到如果可以在大数据量背景下顺利地 章列举的所有

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组成部分,以便快速入门. 查看本系列更多内容 | 0 评论: Ed Slattery ([email protected]), 软件工程师, IBM UK Pete Robbins ([email protected]), 软件工程师, IBM UK Andrew Borley ([email pro

基于redis 内存数据库简单使用

在ecplise中使用内存数据的客端户,前提要准备要下载两个jar包 commons-pool2-2.0.jar jedis-2.4.2.jar 前提准备做好了,那我们就开启redis的服务,打开一个命令窗口输入如下命令:redis-server  或redis-server  redis根目\redis.conf 服务器已经开启了,注意端号是6377 2.在eclipse 创建一个项目,把redist需要的包导入项目中 3.写一个Jedis工具类 public class JedisUtil 

Node.js操作Redis的简单示例

Redis是一个key-value类型的数据库,而key全部都是字符串,value可以是集合.hash.list等等. Redis是通过MULTI/DISCARD/EXEC/WATCH这4个命令来实现事务功能.对事务,我们必须知道事务安全性是一个非常重要的. 事务提供了一种"将多个命令打包,然后一次性.按顺序执行"的机制,并且在事务执行期间不会中断--意思就是在事务完成之前,客户端的其他命令都是阻塞状态. var redis = require("redis");