前言
为什么要进行主从复制?
在高并发,高可用成为主流的今天。如果中间件只有一台的情况下,发生故障,那么容易造成单点故障。造成服务的不可用。或者中间件在存储不足的情况下,如何继续存储信息成为了需要解决的问题之一,那么数据备份成为解决这一难题的基本方法。
一、什么是主从复制?
程序向redis-master服务写入信息,这条信息会通过指定方式同步到其他slave服务器中。在这个集群中,masterd的写入数据会同步到slave中,而slave不能写,只能读。这种在后续进行哨兵模式下,slave在master故障下会成为新的master。
二、步骤
1.拉取镜像
之前博客写过,直接拿过来
1.docker pull redis
2.因为redis挂载时本地没有redis.conf文件,所以下载一份
2.安装master
我在1.15.233.184这台服务器下安装master服务,安装过程不需要其他操作,创建挂载目录,直接启动就行。
1.mkdir /data/redis/data (也可以不挂载,看你自己)
2.将redis.conf放在/data/redis下
3.修改redis.conf的配置信息如下:
1.将bind 127.0.0.1 注释掉,让redis可以外部访问
2.protected-mode yes 注释掉
3.requirepass 123456 设置密码
3.启动:
docker run -p 6379:6379 --name redis-master -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
安装slave
这台服务器是139.9.186.192
我是直接启动,并没有挂载
1.docker pull redis
2.docker run -it --name redis-slave -d -p 6379:6379 redis redis-server --requirepass 123456
3.docker exec -it redis-slave redis-cli
4.auth 123456
5.slaveof 1.15.233.184 6379
6.config set masterauth 123456
1.拉镜像
2.运行redis-slave
3.进入进行运行redis客户端
4.输入redis密码
5.作为slave来连接master
6.设置master的密码
如果要挂载,那么可以直接修改config文件启动
1.docker pull redis
2.创建挂载目录/data/redis/data,复制一份redis.conf到/data/redis下
3.修改reids.conf文件的配置
1.# bind 127.0.0.1
2.daemonize yes
3.requirepass 123456 # 从库密码,可选配置
4.slaveof 1.15.233.184 6379 # <masterip>表示主库所在的ip,而<masterport>则表示主库启动的端口,默认是6379
5.masterauth 123456 # 主库有密码必需要配置,<master-password>代表主库的访问密码
4.docker run -it --name redis-slave -d -p 6379:6379 -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
1.拉镜像
2.创建挂载文件和目录
3.修改配置文件
4.运行
在master中添加key,slave也能显示了
总结
redis集群还有多种模式,今天写的是一主一从,还有一主多从,多主多从