使用docker-compose部署MySQL三主六从半同步集群(MMM架构)_docker-compose mysql集群

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。

💡在这个美好的时刻,本人不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

🥤本文内容

CSDN

部署MySQL三主六从半同步集群

一主二从同步集群规划

master节点:ip地址:192.168.80.101 mysql端口:33061
slave1节点:ip地址:192.168.80.102 mysql端口:33062
slave2节点:ip地址:192.168.80.103 mysql端口:33063
服务器登录的用户名密码都是root用户admin密码
master节点的mysql登录账户是root用户masterroot密码
slave1节点和slave2节点的mysql登录账户是root用户slaveroot密码

sudo useradd -r -s /sbin/nologin -d /var/lib/mysql mysql
sudo usermod -d /var/lib/mysql mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
grep mysql /etc/passwd
sudo usermod -d /var/lib/mysql mysql
sudo setenforce 0

需要安装docker和docker-compose
命令形式安装
安装docker

更新软件包

sudo yum update -y

安装必要依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

sudo yum makecache fast

安装 Docker

sudo yum install docker-ce docker-ce-cli containerd.io

启动 Docker 后台服务

sudo systemctl start docker

新建 daemon.json 文件

sudo vim /etc/docker/daemon.json

将下面的配置复制进去,然后执行 service docker restart即可:

{
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
}

如果想要用阿里云的docker镜像源,可看这个网址 https://cr.console.aliyun.com/cn-qingdao/mirrors

安装好后使用如下命令查看安装的版本,如果正常输出说明安装成功

docker version

安装docker-compose

下载docker-compose

sudo curl -L “https://github.com/docker/compose/releases/download/1.27.4/docker-compose- ( u n a m e − s ) − (uname -s)- (unames)(uname -m)” -o /usr/local/bin/docker-compose

授权

sudo chmod +x /usr/local/bin/docker-compose

安装好后使用如下命令查看安装版本,如果正常输出说明安装成功

docker-compose version

宝塔面板形式安装

执行Centos安装脚本,命令如下:

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

官网地址:https://www.bt.cn/new/download.html

下载完成之后,执行以下命令查看宝塔面板,命令如下:

bt

查看面板地址,命令如下:

14

修改登录面板的密码,命令如下:

5

登录之后需要绑定一个账号,如果绑定不上则执行以下命令:

curl -k -sSO http://101.37.149.22:5880/new/auto_node.sh && bash auto_node.sh

输出结果如下:

[root@mhamanager app1]# curl -k -sSO http://101.37.149.22:5880/new/auto_node.sh && bash auto_node.sh


|_ _ \ | _ _ | |_ __ \ / \ |_ |_ | | __ | |_ |
| |
) | |/ | | _| ______ | |__) | / _ \ | \ | | | | _| | |
| '. | | || | / / ___ \ | |\ | | | _| _ | | _
_| |
) | | | | | / / \ _ | |\ | _| |
/ | _| |
/ |
|
/ || || || |__| ||_| || |__|

自动修复节点中…
开始测试节点…请勿中断程序…
hosts指定节点: 103.212.48.148
域名解析节点: 103.212.48.148
节点连接测试正常,修复已完成! 请登录面板查看是否正常

其他异常查看官方论坛,地址:https://www.bt.cn/bbs/thread-87257-1-1.html

登录之后在左侧找到docker点击安装即可。

需要注意的是,宝塔面板的防火墙都是开机自启动的,需要注意防火墙端口。

部署node1节点的master1
docker-compose.yaml文件

编辑docker-compose.yaml文件,代码如下:

mkdir /opt/software/mysqlcluster/master1
cd /opt/software/mysqlcluster/master1
vi docker-compose.yaml

文件内容,代码如下:

version: ‘3’ # 使用docker-compose版本3
services: # 定义服务
mysql_master: # 定义一个名为mysql_master的服务
image: mysql:8.0.20 # 使用MySQL 8.0.20镜像
container_name: mysql_node1_master1 # 指定容器名称为mysql_node1_master1
restart: unless-stopped # 在容器退出时自动重新启动
ports: # 定义容器和主机之间的端口映射

  • “33061:3306” # 将容器的3306端口映射到主机的33061端口
    environment: # 定义环境变量
    MYSQL_ROOT_PASSWORD: node1master1root # 设置root用户的密码
    volumes: # 定义数据卷
  • /var/lib/mysql:/var/lib/mysql # 数据目录
    healthcheck:
    test: [“CMD”, “mysqladmin” ,“ping”, “-h”, “localhost”, “-u”, “root”, “-pnode1master1root”] # 设置容器健康检查命令
    interval: 20s # 每隔20秒进行一次健康检查
    timeout: 10s # 健康检查超时时间为10秒
    retries: 3 # 健康检查失败时重试次数为3次

授权文件

sudo chmod 777 docker-compose.yaml
mkdir /opt/software/mysqlcluster/master1/conf
vi /opt/software/mysqlcluster/master1/conf/my.cnf

my.cnf文件

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
symbolic-links=0
default-storage-engine = InnoDB # 默认存储引擎
server_id = 1010 # 服务器的唯一标识符
bind-address = 0.0.0.0 # 服务器监听的IP地址
port = 3306 # 服务器监听的端口号
character-set-server = utf8mb4 # 服务器使用的字符集
skip-external-locking # 不使用外部锁定
skip-name-resolve # 不进行域名解析
log-bin = mysql-bin # 启用二进制日志
log-bin-trust-function-creators = 1 # 允许二进制日志中记录函数创建的事件
max_connections = 2000 # 最大连接数
max_user_connections = 1000 # 单个用户最大连接数
max_connect_errors = 4000 # 最大连接错误数
wait_timeout = 300 # 空闲连接的超时时间
interactive_timeout = 600 # 交互式连接的超时时间
table_open_cache = 512 # 表缓存大小
max_allowed_packet = 32M # 最大允许的数据包大小
sort_buffer_size = 2M # 排序缓冲区大小
join_buffer_size = 2M # 连接缓冲区大小
thread_cache_size = 8 # 线程缓存大小
sync_binlog = 0 # 数据刷盘参数=0时,由文件系统控制写盘的频率,并发性能最好,但是意外丢失数据的风险最大
gtid_mode = ON # 开启GTID模式,用于自动处理复制中的事务
enforce_gtid_consistency = ON # GTID_MODE 和 ENFORCE_GTID_CONSISTENCY 的设置是一致的,强制全局事务标识的一致性

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值