当前位置: 首页 > news >正文

基于Ubuntu系统的docker环境对MySQL8.0.36主从部署

1. 环境准备

1、1 前言

本文基于Ubuntu系统的docker环境对MySQL8.0.36进行2台物理服务器的主从部署。

1.2 服务器硬件环境准备

准备2台物理服务器192.168.8.6 和 192.168.8.9。
2台物理服务器在同一个局域网环境下,可以相互网络通信。
服务器操作系统版本:Ubuntu 24.04.1 LTS
服务器配置:20C 32G + 2.5T
查看CPU个数和每个CPU核数
lscpu | grep “Socket(s)”
lscpu | grep “Core(s) per socket”
查看CPU挂载数据盘到/data目录下并设置开机自动挂载

vim /etc/fstab
/dev/sda1   /data   ext4    defaults    0    2

如下图所示:
目录挂载

1.3 服务器软件环境准备

1.3.1 安装好docker环境

1)docker版本支持:27.5.1
2)Docker镜像源配置:/etc/docker/daemon.json

{"registry-mirrors": ["https://docker.registry.cyou", "https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"],
"data-root": "/data/docker"
}

1.3.2 拉取MySQL8.0.36的docker镜像

执行命令

docker pull mysql:8.0.36

查看docker下载的镜像

2. Docker部署MySQL8主节点

进入到/data/mysql-mainer/mainer目录下,创建build.sh文件,touch build.sh
并给该文件添加本用户的可执行权限:chmod +x build.sh
脚本文件build.sh内容如下:

docker run -d --name  mysql-mainer --restart=always --privileged=true -p 3308:3306 -e MYSQL_ROOT_PASSWORD=****** -v /data/mysql-mainer/mainer/data:/var/lib/mysql -v /data/mysql-mainer/mainer/conf:/etc/mysql/conf.d -v /data/mysql-mainer/mainer/log:/var/log/mysql -v /etc/localtime:/etc/localtime:ro  -d mysql:8.0.36

容器创建成功如下图所示:
主节点
mysql启动成功日志如下:
MySQL启动成功日志

3、MySQL8主节点配置

3.1 配置允许mysql远程登录连接

使用如下命令进入到容器内:

docker exec -it mysql-mainer bash

进入容器后使用如下命令登录容器内的MySQL的终端:

mysql -uroot -p

登录到MySQL后如下图所示开始开启root远程允许任一IP登录连接:
配置允许root远程登录连接访问所有权
具体mysql执行的SQL脚本如下:
– 授予 root 用户从任何主机远程连接的权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

– 刷新权限

FLUSH PRIVILEGES;

3.2 查看主库的binlog的POS位置

– 查看主库状态

SHOW MASTER STATUS

如下图所示:
BINLOG起始POS位置

3.3 设置主库的master.cnf

进入到宿主机挂载的目录下/data/mysql-mainer/mainer/conf,新增master.cnf文件,touch master.cnf
如下图所示:
master.cnf存储目录

然后vim 编辑master.cnf插入并保存如下配置:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysqlpid-file=/var/run/mysqld/mysqld.pid
# add self define config
default_time_zone = "+8:00"
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
transaction_isolation = REPEATABLE-READ
explicit_defaults_for_timestamp = true
max_connections = 2000
max_connect_errors = 600
back_log = 110
table_open_cache = 600
table_definition_cache = 700
table_open_cache_instances = 64
max_allowed_packet = 512M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 20
interactive_timeout 

http://www.mrgr.cn/news/91439.html

相关文章:

  • Recall(召回率)和 Precision(精确率) 的区别和F1分数
  • 【模板】图论 最短路 (Floyd+SPFA+Dijkstra)
  • 第一课 — nRF Connect SDK介绍
  • 代码补全『三重奏』:EverEdit如何用上下文识别+语法感知+智能片段重构你的编码效率!
  • 蓝桥杯单片机基础部分——6、555定时器
  • DeepSeek V3和R1
  • C++共享指针实战
  • ls命令的全面参数解析与详尽使用指南
  • 观察者模式原理详解以及Spring源码如何使用观察者模式?
  • gcc和g++的区别以及明明函数有定义为何链接找不到
  • 3.10 企业级AI内容生成引擎:从策略到落地的全链路技术指南
  • 02.05、链表求和
  • 网络安全的态势如何以及如何解决?
  • 投资组合风险管理
  • Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
  • Java-数据结构-(HashMap HashSet)
  • 【实用技巧】云服务器+FRP搭建自己的远程控制向日葵
  • 计算机毕业设计Python商品推荐系统 商品比价系统 电商比价系统 商品可视化(代码+LW文档+PPT+讲解视频)
  • Rust中的collections
  • 2013年下半年软件设计师上午题考察知识点及其详细解释(附真题及答案解析)