首页 > 数据库 >主从redis部署(docker)

主从redis部署(docker)

时间:2023-04-22 23:00:09浏览次数:47  
标签:log redis repl master conf offset docker 主从

首先,我准备了两台linux,一台准备当作master,ip是192.168.241.128,另一台是当作slave,ip是192.168.241.129。

1. 安装redis

docker pull redis

2. 下载对应版本的redis.conf

可以从github上下载。新建配置环境目录和持久化数据目录。

mkdir -p /home/redis/data
mkdir -p /home/redis/conf
mkdir -p /home/redis/log

修改配置redis.conf:

logfile "/log/redis.log"
dir /data

将redis.conf放到mkdir -p /home/redis/conf下。

3. 创建redis容器

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /home/redis/data:/data -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/log/redis.log:/log/redis.log -d redis redis-server /etc/redis/redis.conf  --appendonly yes 

创建容器后,调用redis-server启动用挂载的路径的redis.conf启动。并且开启AOF持久化。

docker ps -a 查看,发现已成功启动。

如果报这个错:Can't open the log file: Is a directory,可能得手动建一个空文件 /home/redis/log/redis.log

4. 创建第二个redis容器

和上面的1,2,3步骤一样,在第二台linux服务器上创建第二个redis。稍微不同的是,在第2个步骤配置redis.conf时,要做修改。

redis.conf加上配置:

192.168.241.128 是我上面配置的第一台linux的地址,意思是第二台是第一台的slave库

slaveof 192.168.241.128 6379

依样部署好第二台redis就可以了。

5. 验证

在redis客户端中执行命令info replication

128(主):

> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.241.129,port=6379,state=online,offset=0,lag=0
master_failover_state:no-failover
master_replid:8fade8b7a32d08413701d8816661604e773c6cd3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0

129(从):

> 192.168.241.129@6379 connected!
> info replication
# Replication
role:slave
master_host:192.168.241.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_read_repl_offset:14
slave_repl_offset:14
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8fade8b7a32d08413701d8816661604e773c6cd3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14

很明显,一个role 是master,一个是slave。

验证一下数据同步:

image

一开始129尝试get "h" ,发现数据不存在。想要写入,因为是从节点,所以提示无法写入。

然后我们往128加入"h"->"hello", 切换到129发现这条数据已经同步过来了,接着128删除这个键,129也是跟着删除了数据。

标签:log,redis,repl,master,conf,offset,docker,主从
From: https://www.cnblogs.com/Aeons/p/17344376.html

相关文章

  • wsl2中docker启动不了的问题解决方法
    在wsl2的ubuntu系统中安装docker后,sudoservicedockerstart一直启动不起来在网上找到了解决方案https://juejin.cn/post/7197594278083919932解决方法这个错误提示通常是因为系统中使用的是经过修改的nftables,而Docker安装程序使用iptables进行NAT。为了解决这个问......
  • 发布jar包到docker
    0、步骤systemctldaemon-reloadsystemctlrestartdocker1、步骤mkdir/root/mgt-dircd/root/mgt-dirvimrun.shjava-jar/data/jeecg-boot-mgt-2.3.0.jarvimDockerfile#基础镜像使用javaFROMjava:8EXPOSE10001ENTRYPOINT["sh","/data/run.sh"......
  • Docker安装MySQL
    创建挂载目录mkdir-p/app/mysql&&cd$_docker安装MySQLdockerrun-d-p3306:3306--privileged=true-v/app/mysql/log:/var/log/mysql-v/app/mysql/data:/var/lib/mysql-v/app/mysql/conf:/etc/mysql/conf.d-eMYSQL_ROOT_PASSWORD=123456--namemysql5.7......
  • 分布式锁-Redisson
    分布式锁1、分布式锁1.1本地锁的局限性1.1.1测试代码1.1.2使用ab工具测试(单节点)1.1.3本地锁问题演示(集群情况)1.2分布式锁实现的解决方案1.3使用Redis实现分布式锁(了解即可)1.3.1编写代码1.3.2压测1.4使用Redisson解决分布式锁1.4.1实现代码1.4.1压测1.4.2可重入......
  • Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓在上面搭建前后端分离的项目后,如果需要在windows服务上进行部署。若依前后端分离版本,Windows下使用Nginx代理的方式进行部署(全流程,图文教程):若依前后端分离版本,Wi......
  • VirtualBox、Vagrant以及与Docker的区别
    VirtualBox和Vagrant都是虚拟化工具,用于在计算机上创建虚拟操作系统或虚拟开发环境。以下是它们的介绍:1.VirtualBox:VirtualBox是由Oracle公司开发的开源虚拟化软件,适用于Windows、Linux、Mac和其他操作系统。它允许用户在计算机上运行多个虚拟操作系统,这些操作系统以软件方式(......
  • Redis 的Java客户端——Jedis连接池的使用详解
    一.Redis的Java客户端jedis的官方仓库地址:https://github.com/redis/jedisRedis数据结构Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样。1.1引入Redis依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</......
  • redis数据结构
    ZipListziplist是一种特殊的“双向链表”,由一系列特殊编码的连续内存组成,可以在任意一端进行压入和弹出。ZipList的结构ZipListEntry的结构entry并不像普通双向链表节点用两个指针指向前后节点,为了节省空间。previous_entry_length:前一个节点的长度,占1个或5个字节如果......
  • docker部署mysql主从数据库
    一、mysql主库搭建1.1.14.xx.216作为mysql-master主库2.创建挂载数据目录mkdir-p/docker_v/mysql-master/{logs,conf,data}chmod777-R/docker_v/mysql-master/3.拉取镜像mysql:5.7并开放3306端口dockerpullmysql:5.74.在conf目录下创建文件my.cnf[mysqld]##设置se......
  • Docker完结版
    1.Docker概述:1.1Docker为什么会出现:问题:在互联网开发环境当中很多情况会遇到在我的电脑上可以运行但是到你的电脑上就无法运行可,而且在软件版本更新以后会导致服务不可用的情况出现。解决方式:发布一个项目:将一个项目打成jar包时带上Redis,Mysql,jdk,ES等一套环境一起发......