女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用dockerfile搭建mysql主從集群和redis集群

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 2025-05-14 11:38 ? 次閱讀

Docker--利用dockerfile搭建mysql主從集群和redis集群

搭建mysql主從集群

mysql主從同步的原理

==MySQL主從同步(Replication)是一種實(shí)現(xiàn)數(shù)據(jù)冗余和高可用性的技術(shù),通過(guò)將主數(shù)據(jù)庫(kù)(Master)的變更操作同步到一個(gè)或多個(gè)從數(shù)據(jù)庫(kù)(Slave),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)或準(zhǔn)實(shí)時(shí)復(fù)制==。

為什么要用主從分離?

?讀寫(xiě)分離,提高性能:主庫(kù)負(fù)責(zé)寫(xiě),從庫(kù)負(fù)責(zé)讀

?數(shù)據(jù)實(shí)時(shí)備份:主庫(kù)的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)到從庫(kù)

?高可用HA:當(dāng)有一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),可以隨時(shí)切換

核心流程

主庫(kù)記錄變更日志(Binary Log)

? 主庫(kù)將所有數(shù)據(jù)變更操作(如INSERT、UPDATE、DELETE)記錄到二進(jìn)制日志(Binary Log)中。

? Binary Log是二進(jìn)制格式的文件,記錄了每個(gè)事務(wù)的SQL語(yǔ)句或行級(jí)變更。

從庫(kù)讀取主庫(kù)的日志

? 從庫(kù)通過(guò)I/O線(xiàn)程連接到主庫(kù),并請(qǐng)求讀取Binary Log。

? 主庫(kù)的I/O線(xiàn)程將Binary Log的內(nèi)容發(fā)送給從庫(kù)。

從庫(kù)重放日志(Relay Log)

? 從庫(kù)將接收到的Binary Log寫(xiě)入本地的中繼日志(Relay Log)。

? 從庫(kù)的SQL線(xiàn)程讀取Relay Log,并按照順序執(zhí)行其中的SQL語(yǔ)句,從而實(shí)現(xiàn)數(shù)據(jù)同步。

數(shù)據(jù)一致性保障

? 主庫(kù)和從庫(kù)通過(guò)日志的順序執(zhí)行保證數(shù)據(jù)一致性。

? 異步復(fù)制模式下,從庫(kù)可能稍有延遲;半同步復(fù)制模式下,主庫(kù)會(huì)等待至少一個(gè)從庫(kù)確認(rèn)接收日志。

主從分布架構(gòu)圖

75c9a472-2f0b-11f0-9310-92fbcf53809c.png

組件 作用
Binary Log 主庫(kù)記錄所有數(shù)據(jù)變更的日志,是主從同步的核心。
I/O線(xiàn)程 從庫(kù)的線(xiàn)程,負(fù)責(zé)從主庫(kù)獲取Binary Log并寫(xiě)入Relay Log。
SQL線(xiàn)程 從庫(kù)的線(xiàn)程,負(fù)責(zé)讀取Relay Log并執(zhí)行其中的SQL語(yǔ)句。
Relay Log 從庫(kù)本地存儲(chǔ)主庫(kù)Binary Log的中間日志,用于SQL線(xiàn)程重放。

==當(dāng)主節(jié)點(diǎn)mysql接收到數(shù)據(jù)的時(shí)候,向binlog寫(xiě)入事務(wù),binlog通過(guò)多線(xiàn)程的讀取,發(fā)送到從節(jié)點(diǎn),從節(jié)點(diǎn)先由IO線(xiàn)程接收,然后再寫(xiě)入laylog中,之后讓laolog線(xiàn)程進(jìn)行讀取,最后放入到從節(jié)點(diǎn)的mysql中==

主從同步的方式

異步復(fù)制(Asynchronous Replication)

主庫(kù)提交事務(wù)后立即返回,不等待從庫(kù)確認(rèn)。

? 優(yōu)點(diǎn):性能高,延遲低。

? 缺點(diǎn):從庫(kù)可能滯后,數(shù)據(jù)一致性較差。
75d72c28-2f0b-11f0-9310-92fbcf53809c.png

半同步復(fù)制(Semi-Synchronous Replication)

==主庫(kù)提交事務(wù)后,至少等待一個(gè)從庫(kù)確認(rèn)接收日志==。

? 優(yōu)點(diǎn):數(shù)據(jù)一致性更好。

? 缺點(diǎn):性能略有下降。
75db2b52-2f0b-11f0-9310-92fbcf53809c.png

全同步復(fù)制(Synchronous Replication)

==主庫(kù)提交事務(wù)后,等待所有從庫(kù)確認(rèn)接收日志==。

? 優(yōu)點(diǎn):數(shù)據(jù)一致性更好。

? 缺點(diǎn):性能較低。
75df0ee8-2f0b-11f0-9310-92fbcf53809c.png

增強(qiáng)半同步復(fù)制 (Rising-Semi-Synchronous Replication)

==對(duì)半同步復(fù)制做的一個(gè)改進(jìn),原理上幾乎是一樣的,主要是解決幻讀的問(wèn)題==.

? 優(yōu)點(diǎn):數(shù)據(jù)一致性更好,解決幻讀問(wèn)題

? 缺點(diǎn):性能略有下降
7652ea66-2f0b-11f0-9310-92fbcf53809c.png

主要配置

1.主庫(kù)配置
啟用Binary Log:

[mysqld]
log-bin=mysql-bin
server-id=1 # 唯一標(biāo)識(shí)符

創(chuàng)建同步用戶(hù)(供從庫(kù)連接):

CREATE USER'repl'@'%'IDENTIFIED BY'password';
GRANT REPLICATION SLAVE ON *.* TO'repl'@'%';

2.從庫(kù)配置
指定主庫(kù)信息:

CHANGE MASTER TO
 MASTER_HOST='master_host',
 MASTER_USER='repl',
 MASTER_PASSWORD='password',
 MASTER_LOG_FILE='mysql-bin.000001',
 MASTER_LOG_POS=120;

啟動(dòng)同步:

START SLAVE;

3.驗(yàn)證同步狀態(tài)
檢查從庫(kù)狀態(tài):

SHOW SLAVE STATUSG;

實(shí)戰(zhàn)

創(chuàng)建對(duì)應(yīng)目錄
765b6a42-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述

編輯Master目錄下的Dockerfile:

FROM mysql:5.7.36
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

FROM mysql:5.7.36:這一行指定了Docker 鏡像的基礎(chǔ)鏡像。
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:

? RUN 是 Dockerfile 中的一個(gè)指令,表示在構(gòu)建鏡像時(shí)運(yùn)行指定的命令。

? ln -sf 是創(chuàng)建符號(hào)鏈接(symbolic link)的命令:

? -s 表示創(chuàng)建符號(hào)鏈接(軟鏈接)。

? -f 表示如果目標(biāo)文件已存在,則強(qiáng)制覆蓋。

? /usr/share/zoneinfo/Asia/Shanghai 是系統(tǒng)中的時(shí)區(qū)文件,表示中國(guó)上海時(shí)區(qū)(東八區(qū))。

? /etc/localtime 是 Linux 系統(tǒng)中表示當(dāng)前容器時(shí)區(qū)的文件。
這一行的作用是將 /etc/localtime 鏈接到 /usr/share/zoneinfo/Asia/Shanghai,從而將容器的時(shí)區(qū)設(shè)置為上海時(shí)區(qū)(UTC+8)。

編輯slave目錄下的Dockerfile:

FROM mysql:5.7.36
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY ./slave/slave.sql /docker-entrypoint-initdb.d

編輯slave.sql

change master to master_host='mysql-master',
master_user='root',master_password='root',master_port=3306;
start slave;

CHANGE MASTER TO語(yǔ)句:用于配置從庫(kù)連接主庫(kù)的相關(guān)信息。
參數(shù)說(shuō)明:

? master_host=‘mysql-master’:
指定主庫(kù)的主機(jī)名或 IP 地址,這里的主庫(kù)名是 mysql-master。

? master_user=‘root’:
指定用于從庫(kù)連接主庫(kù)的用戶(hù)名,這里是 root。

? master_password=‘root’:
指定用于從庫(kù)連接主庫(kù)的密碼,這里是 root。

? master_port=3306:
指定主庫(kù)的端口號(hào),這里是默認(rèn)的 MySQL 端口 3306。

? 作用:
這部分語(yǔ)句告訴從庫(kù)如何連接到主庫(kù),包括主庫(kù)地址、用戶(hù)名、密碼和端口號(hào)

START SLAVE語(yǔ)句:

? 用于啟動(dòng)從庫(kù)的復(fù)制進(jìn)程。

? 在執(zhí)行 ==CHANGE MASTER TO== 配置后,從庫(kù)需要執(zhí)行 START SLAVE; ==才能開(kāi)始從主庫(kù)拉取數(shù)據(jù)并同步==

在主目錄mysqlcluster下創(chuàng)建docker-compose.yml文件進(jìn)行編輯:

name: mysqlcluster

services:
 mysql-master:
  build:
   context: ./
   dockerfile: ./master/Dockerfile
  image: mysqlmaster:1.0
  restart: always
  container_name: mysql-master
  volumes:
   - ./mastervarlib:/var/lib/mysql
  ports:
   -8080:3306
  environment:
   MYSQL_ROOT_PASSWORD: root
  privileged:true
  command: ['--server-id=1',
  '--log-bin=master-bin',
  '--binlog-ignore-db=mysql',
  '--binlog_cache_size=256M',
  '--binlog_format=mixed',
  '--lower_case_table_names=1',
  '--character-set-server=utf8',
  '--collation-server=utf8_general_ci']

 mysql-slave:
  build:
   context: ./
   dockerfile: ./slave/Dockerfile
  image: mysqlslave:1.0
  restart: always
  container_name: mysql-slave
  volumes:
   - ./slavevarlib:/var/lib/mysql
  ports:
   -8081:3306
  environment:
   MYSQL_ROOT_PASSWORD: root
  privileged:true
  command: ['--server-id=2',
  '--relay_log=slave-relay',
  '--lower_case_table_names=1',
  '--character-set-server=utf8',
  '--collation-server=utf8_general_ci']
  depends_on:
   - mysql-master

 mysql-slave2:
  build:
   context: ./
   dockerfile: ./slave/Dockerfile
  image: mysqlslave:1.0
  restart: always
  container_name: mysql-slave2
  volumes:
   - ./slavevarlib2:/var/lib/mysql
  ports:
   -8082:3306
  environment:
   MYSQL_ROOT_PASSWORD: root
  privileged:true
  command: ['--server-id=3',
  '--relay_log=slave-relay',
  '--lower_case_table_names=1',
  '--character-set-server=utf8',
  '--collation-server=utf8_general_ci']
  depends_on:
   - mysql-master







mysql-master:

?restart:指定容器的重啟策略。
always 表示無(wú)論容器因何種原因退出,Docker 都會(huì)嘗試重新啟動(dòng)它。

?volume:用于將主機(jī)目錄掛載到容器中
./mastervarlib是主機(jī)上的目錄,/var/lib/mysql是容器中 MySQL 默認(rèn)的數(shù)據(jù)存儲(chǔ)路徑。
作用:將 MySQL 的數(shù)據(jù)存儲(chǔ)在主機(jī)上,確保容器重啟或刪除后數(shù)據(jù)不會(huì)丟失。

?envirnment:設(shè)置環(huán)境變量
MYSQL_ROOT_PASSWORD: root 指定 MySQL 的 root 用戶(hù)密碼為 root。
privileged:設(shè)置容器以特權(quán)模式運(yùn)行

?command:
設(shè)置 MySQL 服務(wù)器的唯一 ID,主從復(fù)制中必須指定,且每個(gè)服務(wù)器的 ID 必須唯一
啟用二進(jìn)制日志(Binary Log),日志文件前綴為 master-bin,記錄主庫(kù)的寫(xiě)操作
指定忽略mysql系統(tǒng)數(shù)據(jù)庫(kù)的二進(jìn)制日志記錄
設(shè)置二進(jìn)制日志緩存的大小為256MB
設(shè)置二進(jìn)制日志的格式為mixed
設(shè)置表名不區(qū)分大小寫(xiě)
設(shè)置服務(wù)器的默認(rèn)字符集為utf8
設(shè)置服務(wù)器的默認(rèn)排序規(guī)則為utf8_general_ci

mysql-slave1:

?depends-on:指定服務(wù)之間的依賴(lài)關(guān)系
mysql-slave 服務(wù)依賴(lài)于 mysql-master 服務(wù)
確保在啟動(dòng) mysql-slave 之前,mysql-master 服務(wù)已經(jīng)啟動(dòng)

創(chuàng)建出鏡像并創(chuàng)建啟動(dòng)對(duì)應(yīng)的容器:

docker compose build
docker compose up -d

查看對(duì)應(yīng)狀態(tài)

docker ps

7663b30a-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
運(yùn)行主數(shù)據(jù)庫(kù)查看運(yùn)轉(zhuǎn)
dockerexec-it mysql-master bash

連上主庫(kù),查看數(shù)據(jù)庫(kù)可以看到運(yùn)行正常

mysql -u root -p

766faa98-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
連接上從庫(kù),通過(guò)命令查看
SHOW MASTER STATUSG
SHOW SLAVE STATUSG

76776a9e-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
主庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
create databasetest;

767f0a4c-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
從庫(kù)上查看,可以看到也有了對(duì)應(yīng)的test數(shù)據(jù)庫(kù):
76872858-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
主庫(kù)上創(chuàng)建表,插入數(shù)據(jù):
mysql> usetest;
Database changed
mysql> create tableusers(sno int,sname varchar(20));
Query OK, 0 rows affected (0.03 sec)


mysql> insert into usersvalues (1,'xixi');
Query OK, 1 row affected (0.02 sec)


mysql> insert into usersvalues (2,'haha');
Query OK, 1 row affected (0.01 sec)

在從表上查看

mysql> usetest;
Reading table informationforcompletion of table and column names
You can turn off this feature to get a quicker startup with -A


Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
|users     |
+----------------+
1 rowinset(0.00 sec)


mysql>select* fromusers;
+------+-------+
| sno | sname |
+------+-------+
|  1 | xixi |
|  2 | haha |
+------+-------+
2 rowsinset(0.00 sec)





至此完成了mysql主從集群的部署;

docker compose down

搭建Redis集群

==Redis 集群是 Redis 提供的一種分布式解決方案,旨在通過(guò)將數(shù)據(jù)分布到多個(gè)節(jié)點(diǎn)上來(lái)實(shí)現(xiàn)水平擴(kuò)展和高可用性==。它解決了單機(jī) Redis 在存儲(chǔ)容量、讀寫(xiě)性能和容錯(cuò)能力上的限制,適用于大規(guī)模、高并發(fā)的應(yīng)用場(chǎng)景。

核心特性

數(shù)據(jù)分片(Sharding)

? Redis 集群將數(shù)據(jù)分散到多個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分?jǐn)?shù)據(jù)。

? 數(shù)據(jù)分片基于哈希槽(Hash Slot),共有 16384 個(gè)哈希槽,每個(gè)鍵通過(guò)哈希算法映射到一個(gè)哈希槽,再分配到具體節(jié)點(diǎn)。

高可用性

? 每個(gè)主節(jié)點(diǎn)(Master)可以有多個(gè)從節(jié)點(diǎn)(Slave)。

? 當(dāng)主節(jié)點(diǎn)故障時(shí),集群會(huì)自動(dòng)將從節(jié)點(diǎn)提升為主節(jié)點(diǎn)(故障轉(zhuǎn)移),確保服務(wù)可用。

水平擴(kuò)展

? 可以通過(guò)增加節(jié)點(diǎn)來(lái)擴(kuò)展集群的存儲(chǔ)容量和性能。

? 集群支持動(dòng)態(tài)添加或移除節(jié)點(diǎn),無(wú)需停機(jī)。

無(wú)中心架構(gòu)

?Redis集群沒(méi)有中心節(jié)點(diǎn),所有節(jié)點(diǎn)平等,避免了單點(diǎn)故障。

下載源碼壓縮包

首先,我們要去官網(wǎng),找到源碼的下載鏈接
redis-7.0.15 版本的鏈接

組成

?主節(jié)點(diǎn)(Master):負(fù)責(zé)處理讀寫(xiě)請(qǐng)求和存儲(chǔ)數(shù)據(jù)。

?從節(jié)點(diǎn)(Slave):復(fù)制主節(jié)點(diǎn)的數(shù)據(jù),用于故障轉(zhuǎn)移和只讀請(qǐng)求。

?哈希槽(Hash Slot):數(shù)據(jù)分片的基本單位,共有 16384 個(gè)。

準(zhǔn)備目錄

mkdir/data/ahri/dockerfile/rediscluster/redis

設(shè)置redis.conf

==在redis目錄下創(chuàng)建一個(gè)redis.conf進(jìn)行配置==

#表示前臺(tái)運(yùn)行
daemonize no
#端口
port 6379
#持久化
dir/data/redis
#啟用集群
cluster-enabledyes
#集群參數(shù)配置
cluster-config-file nodes.conf
#集群超時(shí)時(shí)間
cluster-node-timeout 5000
#密碼配置
requirepass 123456
#主節(jié)點(diǎn)密碼配置
masterauth 123456
#表示遠(yuǎn)端可以連接
bind* -::*





編輯 Dockefile

==在redis目錄下創(chuàng)建Dockerfile文件進(jìn)行編輯==

注:centos:7 已經(jīng)停止維護(hù)了,所以這里使用了ubuntu

# 第一階段:構(gòu)建階段
FROM ubuntu:22.04 AS buildstage

# 更新包列表并安裝必要的構(gòu)建工具和依賴(lài)
RUN apt-get update && apt-get install -y 
  build-essential 
  wget 
  gcc 
  g++ 
  make 
  &&rm-rf /var/lib/apt/lists/*

# 下載 Redis 源碼和配置文件
#wget https://download.redis.io/releases/redis-7.0.15.tar.gz
ADD redis-7.0.15.tar.gz /
ADD redis.conf /redis/

# 切換到 Redis 源碼目錄并編譯
WORKDIR /redis-7.0.15
RUN make

# 將 Redis 可執(zhí)行文件移動(dòng)到指定目錄
RUNmv/redis-7.0.15/src/redis-server /redis/ &&mv/redis-7.0.15/src/redis-cli /redis/
ENTRYPOINT ["/redis/redis-server","/redis/redis.conf"]

# 第二階段:運(yùn)行階段
FROM ubuntu:22.04
RUNmkdir-p /data/redis &&mkdir-p /redis
COPY --from=buildstage /redis /redis
EXPOSE 6379
ENTRYPOINT ["/redis/redis-server","/redis/redis.conf"]





測(cè)試

==通過(guò)docker build創(chuàng)建鏡像進(jìn)行測(cè)試==

docker build -t myredis:v1.0 .

嘗試啟動(dòng)一個(gè)容器進(jìn)行測(cè)試

docker run -d --name myredis --rmmyredis:1.0
416541b280d91f04e80c7df864ed097d5471b26bf93a5c82b090d458402217f9

768edcc4-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
測(cè)試成功,釋放資源
docker stop myredis

編寫(xiě)Docker-compose.yml

name: rediscluster

services:
 redis01:
  image: myredis:1.0
  build: ./redis
  ports:
   - 6379:6379
  container_name: redis01
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis02:
  image: myredis:1.0
  container_name: redis02
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis03:
  image: myredis:1.0
  container_name: redis03
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis04:
  image: myredis:1.0
  container_name: redis04
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis05:
  image: myredis:1.0
  container_name: redis05
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis06:
  image: myredis:1.0
  container_name: redis06
  healthcheck:
  test: /redis/redis-cli ping
   interval: 10s
  timeout: 5s
   retries: 10
 redis07:
  image: myredis:1.0
  container_name: redis07
  entrypoint: ["/redis/redis-cli",
  "--cluster",
  "create",
  "redis01:6379",
  "redis02:6379",
  "redis03:6379",
  "redis04:6379",
  "redis05:6379",
  "redis06:6379",
  "--cluster-replicas",
  "1",
  "-a",
  "123456",
  "--cluster-yes"]
  depends_on:
   redis01:
    condition: service_healthy
   redis02:
    condition: service_healthy
   redis03:
    condition: service_healthy
   redis04:
    condition: service_healthy
   redis05:
    condition: service_healthy
   redis06:
    condition: service_healthy







測(cè)試

==通過(guò)下面命令檢查配置文件是否書(shū)寫(xiě)格式錯(cuò)誤==

docker compose config

對(duì) 容器進(jìn)行啟動(dòng)

docker compose up -d

查看容器的狀態(tài)
7703a36a-2f0b-11f0-9310-92fbcf53809c.png在這里插入圖片描述
查看07日志是否創(chuàng)建成功
root@VM-8-12-ubuntu:/data/ahri/dockerfile/rediscluster# docker logs -f redis07
Warning: Using a password with'-a'or'-u'option on thecommandline interface may not be safe.
>>> Performinghashslots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica redis05:6379 to redis01:6379
Adding replica redis06:6379 to redis02:6379
Adding replica redis04:6379 to redis03:6379
M: 148bf218eac4b30786ef89e5c5cc1bf4facdf4be redis01:6379
 slots:[0-5460] (5461 slots) master
M: 5964d6968e8527be920f1d60aad8e549ac1c327a redis02:6379
 slots:[5461-10922] (5462 slots) master
M: 4a33cf88ed2334e78fe468c35446a2a8bd14f805 redis03:6379
 slots:[10923-16383] (5461 slots) master
S: 4ee8406f204b7ee8778a40f7d6ec979cc4f9bfff redis04:6379
 replicates 4a33cf88ed2334e78fe468c35446a2a8bd14f805
S: fb59eccda63bd4bb8d33526262612e1ab694da02 redis05:6379
 replicates 148bf218eac4b30786ef89e5c5cc1bf4facdf4be
S: 8b7b54ee2f4c7a327e1e954db379a519aa7e68b8 redis06:6379
 replicates 5964d6968e8527be920f1d60aad8e549ac1c327a
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages tojointhe cluster
Waitingforthe cluster tojoin
.
>>> Performing Cluster Check (using node redis01:6379)
M: 148bf218eac4b30786ef89e5c5cc1bf4facdf4be redis01:6379
 slots:[0-5460] (5461 slots) master
 1 additional replica(s)
M: 4a33cf88ed2334e78fe468c35446a2a8bd14f805 172.19.0.5:6379
 slots:[10923-16383] (5461 slots) master
 1 additional replica(s)
S: 4ee8406f204b7ee8778a40f7d6ec979cc4f9bfff 172.19.0.2:6379
 slots: (0 slots) slave
 replicates 4a33cf88ed2334e78fe468c35446a2a8bd14f805
S: fb59eccda63bd4bb8d33526262612e1ab694da02 172.19.0.7:6379
 slots: (0 slots) slave
 replicates 148bf218eac4b30786ef89e5c5cc1bf4facdf4be
S: 8b7b54ee2f4c7a327e1e954db379a519aa7e68b8 172.19.0.4:6379
 slots: (0 slots) slave
 replicates 5964d6968e8527be920f1d60aad8e549ac1c327a
M: 5964d6968e8527be920f1d60aad8e549ac1c327a 172.19.0.6:6379
 slots:[5461-10922] (5462 slots) master
 1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Checkforopen slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.





==登錄容器01-06任意一個(gè)進(jìn)行查看==
登錄進(jìn)redis客戶(hù)端

dockerexec-it redis02 bash
/redis/redis-cli -c -a 123456

查看對(duì)應(yīng)的配置信息

cluster info

查看對(duì)應(yīng)日志

cluster nodes

設(shè)置一個(gè)key值,然后獲取

seta 123
get a
"123"

退出后釋放資源

exit
exit
docker compose down

注意
[ERR] Node redis01:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
==出現(xiàn)這個(gè)錯(cuò)誤時(shí),檢查你的 docker-compose.yml 文件或 Docker 命令,確保每個(gè) Redis 實(shí)例的端口映射是唯一的,并且沒(méi)有沖突==。

鏈接:https://blog.csdn.net/m0_74068921/article/details/147077108?spm=1001.2014.3001.5501

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3900

    瀏覽量

    65745
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    849

    瀏覽量

    27506
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    509

    瀏覽量

    12678
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    384

    瀏覽量

    11309

原文標(biāo)題:告別單點(diǎn)故障!基于Docker的MySQL主從+Redis集群高可靠架構(gòu)詳解

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    redis集群環(huán)境安裝及配置

    redis集群主從配置
    發(fā)表于 03-08 09:59

    redis集群的兩種備份方式

    redis集群 主從同步 備份
    發(fā)表于 04-17 13:30

    kafka架構(gòu)與集群搭建

    kafka入門(mén)+集群搭建
    發(fā)表于 04-29 17:06

    3分鐘搭建Redis Cluster集群

    Redis Cluster集群快速搭建
    發(fā)表于 06-12 14:58

    搭建Zookeeper集群筆記

    Zookeeper集群搭建
    發(fā)表于 09-19 09:01

    hadoop集群搭建的準(zhǔn)備

    hadoop集群搭建系列(step01:集群搭建準(zhǔn)備)
    發(fā)表于 03-31 09:47

    redis集群的如何部署

    redis集群的部署(偽分布式)
    發(fā)表于 05-29 17:13

    Redis集群相關(guān)問(wèn)題的解決

    Redis 集群相關(guān)問(wèn)題
    發(fā)表于 06-11 10:09

    Docker部署Redis服務(wù)器集群的方法

    Docker部署Redis服務(wù)器集群
    發(fā)表于 06-13 09:12

    MySQL集群配置的思路分享?

    PXC集群方案可以完全滿(mǎn)足三臺(tái)以上的MySQL部署,但有時(shí)也會(huì)遇到只有2臺(tái)服務(wù)器的情況,所以有必要再去熟悉下MySQL的基礎(chǔ)主從或者主主集群
    發(fā)表于 11-05 08:06

    如何構(gòu)建一個(gè)穩(wěn)定、高性能的Redis集群

    地提供服務(wù)的? 你也可以嘗試回答一下以下這些問(wèn)題: 我使用 Redis 的場(chǎng)景很簡(jiǎn)單,只使用單機(jī)版 Redis 會(huì)有什么問(wèn)題嗎? 我的 Redis 故障宕機(jī)了,數(shù)據(jù)丟失了怎么辦?如何能保證我的業(yè)務(wù)應(yīng)用不受影響? 為什么需要
    的頭像 發(fā)表于 03-03 15:05 ?1767次閱讀
    如何構(gòu)建一個(gè)穩(wěn)定、高性能的<b class='flag-5'>Redis</b><b class='flag-5'>集群</b>?

    Redis主從、哨兵、Redis Cluster集群

    ? 前言 今天跟小伙伴們一起學(xué)習(xí)Redis主從、哨兵、Redis Cluster集群Redis主從
    的頭像 發(fā)表于 06-12 14:58 ?1031次閱讀
    <b class='flag-5'>Redis</b>的<b class='flag-5'>主從</b>、哨兵、<b class='flag-5'>Redis</b> Cluster<b class='flag-5'>集群</b>

    redis集群狀態(tài)查看命令

    Redis集群是一種高可用性的分布式架構(gòu),可以通過(guò)多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)的復(fù)制和負(fù)載均衡。為了維護(hù)集群的穩(wěn)定性和可靠性,管理員需要監(jiān)控和查看集群的狀態(tài)。下面是詳細(xì)介紹
    的頭像 發(fā)表于 12-04 10:44 ?1668次閱讀

    redis查看集群狀態(tài)命令

    Redis 是一個(gè)開(kāi)源的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),提供了一系列命令來(lái)管理和操作數(shù)據(jù)。在 Redis 中,集群是一個(gè)由多個(gè) Redis 實(shí)例組成的分布式系統(tǒng),用于提高數(shù)據(jù)的可用性和性能
    的頭像 發(fā)表于 12-04 11:39 ?1530次閱讀

    云服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 Redis 集群

    Redis 集群是一種分布式的 Redis 解決方案,能夠在多個(gè)節(jié)點(diǎn)之間分片存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)水平擴(kuò)展和高可用性。與傳統(tǒng)的主從架構(gòu)不同,Redis
    的頭像 發(fā)表于 01-13 13:37 ?304次閱讀
    云服務(wù)器 Flexus X 實(shí)例,Docker 集成<b class='flag-5'>搭建</b> <b class='flag-5'>Redis</b> <b class='flag-5'>集群</b>