“关系数据库通常会使用一个主服务器(master)向多个从服务器(slave)发送更新,并使用从服务器来处理所有读请求。Redis也采用了同样的方法来实现自己的复制特性,并将其用作扩展性能的一种手段”

Excerpt From: [美] Josiah L. Carlson. “Redis实战.” iBooks.

Ubuntu 16.04 安装 Redis Server

安装新一点版本的redis 使用redis-server : chris lea这个源

$ sudo apt-add-repository ppa:chris-lea/redis-server

安装

$ sudo apt-get update
$ sudo apt-get install redis-server

可以ping下 redis-cli ping 返回 Pong 安装成功

测试环境两台机器

  • 10.211.55.6 (master)

  • 10.211.55.7 (slave)

slaveof 命令和配置项

“但开启从服务器所必须的选项只有slaveof一个。如果用户在启动Redis服务器的时候,指定了一个包含slaveof host port选项的配置文件,那么Redis服务器将根据该选项给定的IP地址和端口号来连接主服务器。对于一个正在运行的Redis服务器,用户可以通过发送SLAVEOF no one命令来让服务器终止复制操作,不再接受主服务器的数据更新;也可以通过发送SLAVEOF host port命令来让服务器开始复制一个新的主服务器。”

Excerpt From: [美] Josiah L. Carlson. “Redis实战.” iBooks.

配置很简单,就两种方式配置方式

  • 在slave服务器用redis-cli执行slaveof命令

  • 写在配置文件slaveof host port

配置文件好处重启配置不失效

10.211.55.7 上执行 命令设置

$ redis-cli
127.0.0.1:6379> SLAVEOF 10.211.55.6 6379
OK 

使用info 命令查看Replication部分状态

slave

# Replication
role:slave
master_host:10.211.55.6
master_port:6379
master_link_status:up

slave已经连接上master服务器了

master

role:master
connected_slaves:1
slave0:ip=10.211.55.7,port=6379,state=online,offset=98,lag=1

如果发现没同步,检查bind配置

bind 10.211.55.6 127.0.0.1

另外 说是在redis.conf 里配置

slaveof <masterip> <masterport>

测试

注意

  • 从服务器在进行同步时,会清空自己的所有数据

  • 不支持主主复制,但是从服务器可以连接从服务器复制数据


lidashuang
6.7k 声望165 粉丝

$ Ruby/Elixir/Golang