docker Mysql部署主从集群

news2024/12/26 7:30:47

目录

1 docker安装

2 docker mysql 安装配置 远程连接

2.0 配置

2.0.1 文件夹 配置

2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志 

2.0.3 从库文件配置 -> 从库 id

2.1 mysql 主 -> 第一个端口号和从库不一样

2.1.1 docker run 主库

2.1.2  查看主库二进制日志

2.2 mysql 从库

2.2.1 docker run 从库

2.2.2 从库权限设置

2.3 mysql 远程设置 -> 主库 从库 都要设置

2.4 防火墙/安全组 端口号要打开 

3 mysql 配置主从关系

3.1 课程视频

3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)

3.1.2 搭建课程

3.2 搭建主从

3.2.1  查看主库ip -> 让从库连接

3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>

3.2.3 从库中设置从主关系 ->  从库mysql中 mysql> 

3.2.3 开启从库 ->  从库数据库中 ->两进程启动

3.2.4 查看线程状态 --> 端口号要用3306

4 测试

5 非 docker 主从 集群


1 docker安装

coin-ex 一// Docker安装_tenc1239的博客-CSDN博客

2 docker mysql 安装配置 远程连接

2.0 配置

2.0.1 文件夹 配置

// 主库 从库 目录 --> 最终要映射到容器
mkdir -p /opt/mysql-m/conf 
mkdir -p /opt/mysql-s/conf

// 主库 从库 数据 目录
mkdir -p /opt/mysql-m/data
mkdir -p /opt/mysql-s/data

2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志 

// 新建并打开my.cnf文件
vim /opt/mysql-m/conf/my.cnf

// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid 

pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成  是指 连接方式
datadir=/var/lib/mysql 
server-id=1 #主库id 要和从库区分开
log-bin=mysql-master-bin # 开启二进制日志

2.0.3 从库文件配置 -> 从库 id

// 新建并打开my.cnf文件
vim /opt/mysql-s/conf/my.cnf

// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid 

pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成  是指 连接方式
datadir=/var/lib/mysql 
server-id=2 #主库id 要和从库区分开
log-bin=mysql-slave-bin # 开启二进制日志 日志名前缀mysql-slave-bin

2.1 mysql 主 -> 第一个端口号和从库不一样

2.1.1 docker run 主库

docker run --name mysql_m -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

--privileged=true // 指定root权限
-v /opt/mysql-m/conf:/etc/mysql/conf.d // 自定义目录映射到容器目录
-v /opt/mysql-m/data:/var/lib/mysql  // [mysqld]配置文件中 指定的
mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci // 这两个必须写在mysql:5.7 后面

-- 完整---
docker run -itd -p 3306:3306 \
--name mysql-m \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-m/conf:/etc/mysql/conf.d \
-v /opt/mysql-m/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

2.1.2  查看主库二进制日志

docker exec -it mysql-m bash // 进入mysql容器
mysql -u root -p // 进入mysql

show master status ;

grant all on *.* to 'root'@'%'; // 远程权限 但是没设置也可以  
flush privileges ;

2.2 mysql 从库

2.2.1 docker run 从库

docker run -itd -p 3307:3306 \
--name mysql-s \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-s/conf:/etc/mysql/conf.d \
-v /opt/mysql-s/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

2.2.2 从库权限设置

grant all on *.* to 'root'@'%'; // 远程权限 但是没设置也可以  
flush privileges ;

2.3 mysql 远程设置 -> 主库 从库 都要设置


// 远程设置
docker exec -it mysql bash // 进入mysql容器
mysql -u root -p // 进入mysql
use mysql // 随便选择一个数据库
select host,user,plugin,authentication_string from mysql.user; // 进行查询
select * from mysql.user\G; // 进行查询全部 并\G 竖向显示
grant ALL on *.* to `root`@`%` with grant option; // 授权
set password for root@'%' =password('root'); #mysql5.7 远程连接前 必须改一次密码 不管密码是不是root 就是要执行一次
flush privileges;

2.4 防火墙/安全组 端口号要打开 

apt-get install firewalld
systemctl start firewalld #打开防火墙
systemctl enable firewalld #设置防火墙自启动
firewall-cmd --zone=public --add-port=8888/tcp --permanent #设置8888端口开放
systemctl restart firewalld
 
#查看所有永久开放的port
firewall-cmd --list-ports --permanent

3 mysql 配置主从关系

3.1 课程视频

3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)

https://www.bilibili.com/video/BV1Kr4y1i7ru?p=188&vd_source=ff8b7f852278821525f11666b36f180a

3.1.2 搭建课程

https://www.bilibili.com/video/BV1md4y1o7DY?p=17&vd_source=ff8b7f852278821525f11666b36f180a

3.2 搭建主从

3.2.1  查看主库ip -> 让从库连接

docker inspect mysql-m | grep IPAddress

3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>

docker exec -it mysql-s bash
// 在bash 中连接
mysql -h 主库ip -u root -p

3.2.3 从库中设置从主关系 ->  从库mysql中 mysql> 

// 主库中 show master status; 查询二进制日志最新位置 以及 日志名
// 外部连接是 docker run 设置的第一个port  这里要用3306 
change master to \
master_host='172.18.0.2',\
master_port=3306,\
master_user='root',\
master_password='root',\
master_log_pos=347,\
master_log_file='mysql-master-bin.000004'; 

3.2.3 开启从库 ->  从库数据库中 ->两进程启动

start slave;

3.2.4 查看线程状态 --> 端口号要用3306

mysql> show slave status\G;

4 测试

5 非 docker 主从 集群

Mysql 主从 读写分离_tenc1239的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/481077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman创建项目 对接口发起请求处理

查看本文之前 您需要理解了解 Postman 的几个简单工作区 如果还没有掌握 可以先查看我的文章 简单认识 Postman界面操作 那么 掌握之后 我们就可以正式来开启我们的接口测试 我们先选择 Collections 我们点上面这个加号 多拉一个项目出来 然后 我们选我们刚加号点出来的项目…

用LangChain构建大语言模型应用

用LangChain构建大语言模型应用 自 ChatGPT 发布以来,大型语言模型 (LLM) 广受欢迎。尽管您可能没有足够的资金和计算资源从头开始训练自己的大语言模型,但您仍然可以使用预训练的大语言模型来构建一些很酷的东西,例如: 可以根据…

01-权限提升-网站权限后台漏洞第三方获取

权限提升-网站权限后台漏洞第三方获取 本节课内容主要是权限提升的思路,不涉及技术 当前知识点在渗透流程中的点 前期-中期-后期对应知识关系 当前知识点在权限提升的重点 知识点顺序,理解思路,分类介绍等 当前知识点权限提升权限介绍 …

Java8

Java8 (一)、双列集合(二)、Map集合常用api(三)、Map集合的遍历方式(四)、HashMap(五)、LinkedHashMap(六)、TreeMap(七&a…

Steve:AI创建视频和动画的在线工具

【产品介绍】 steve.ai是一款利用人工智能技术创建视频和动画的在线工具,可以让任何人在几分钟内把文字转换成吸引人的视频。核心功能是根据用户输入的文本,自动选择合适的素材、音乐、字幕和动效,生成高质量的视频。还提供了多种模板、风格和…

Photoshop如何使用滤镜之实例演示?

文章目录 0.引言1.将普通照片制作成油画效果2.使用液化滤镜修出完美身材3.用镜头光晕滤镜制作唯美的逆光人像4.用Camera Raw滤镜对偏色风景照进行调色 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其…

Servlet 笔记

1. HTTP 协议 1.1 HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-…

etcd原理剖析一

为什么Kubernetes使用etcd? 首先我们来看服务高可用以及数据一致性。单副本存在单点故障,而多副本又引入数据一致性问题。 为了解决数据一致性问题,需要引入一个共识算法。例如Raft等。etcd选择了Raft,它将复杂的一致性问题分解…

Maven 笔记

1. Maven 的简介 1.1 简介 Maven 这个词可以翻译为"专家","内行"。作为Apache 组织中的一个开源项目,主要服务于基于java平台的项目构建,依赖管理和项目信息管理。 无论是小型的开源类库项目,还是大型的企业级应用&am…

Spring 5 笔记 - 入门与IOC

1. Spring 入门简介 Spring:轻量级、开源的JavaEE框架, 解决企业应用的复杂性。包括IOC和AOP两个核心部分。 IOC: 控制反转,把创建对象和对象之间的调用的过程都交给Spring 进行管理,使耦合度降低。 AOP&#xff1a…

Winform从入门到精通(38)—StatusStrip(史上最全)更新中

一、属性 1、Name 获取StatusStrip控件对象 2、AllowDrop 允许用户拖拽数据到控件上 3、AllowItemReorder 当用于按下alt键时,是否允许对项进行排列,如下图: 4、AllowMerge 5、Anchor 6、AutoSize 7、BackColor 设置StatusStrip的背景色 8、BackgroundImage 设置背…

R语言方差分析

R中的方差分析 介绍用于比较独立组的不同类型的方差分析,包括: 单因素方差分析:独立样本 t 检验的扩展,用于在存在两个以上组的情况下比较均值。这是方差分析检验的最简单情况,其中数据仅根据一个分组变量&#xff0…

垃圾回收器ZGC应用分析总结

目录 一、基本概述 二、基本关键技术知识总结 (一)三色标记法(着色指针) (二)读屏障 (三)多图映射 (四)简单场景说明ZGC并发 三、基本回收原理介绍 四…

PowerJob基本概念

本文来说下PowerJob的一些基本概念 文章目录 PowerJob概述PowerJob官网为什么选择PowerJob同类产品对比适用场景 PowerJob概述 PowerJob是新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系…

React框架第七课 语法基础课《第一课React你好世界》

React框架第七课 语法基础课《第一课React你好世界》 从这一课开始真正进入到React框架的基础语法学习,之前的前五课做个了解即可。 1 React框架的基本项目结构 ├── README.md 使用方法的文档 ├── node_modules 所有的依赖安装的目录 ├── package-lock.j…

[架构之路-181]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 2-容错性: 软件容错技术

目录 前言: 1 9 . 4 软件容错技术 19.4.1 N 版本程序设计 1 . 与 通 常 软 件 开 发 过 程 的 区 别 2 . 其 他 需 要 注 意 的 问 题 19.4.2 恢复块方法 19.4.3 防卫式程序设计(预防性设计)》广泛使用 1 . 错误检测 2 . 破坏估计 …

【C++初阶】类与对象:6个默认成员函数-----构造函数和析构函数

我们在写代码的时候经常会忘记初始化和销毁,C的构造函数和析构函数就能避免这个问题。 默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。 一.构造函数 A.概念 1.构造函数是一个特殊的成员函数; 2.名字与…

React框架的第八课 语法基础课《第二课React框架中的事件》

React框架的第八课 语法基础课《第二课React框架中的事件》 React中的事件是指通过React建立的应用程序中处理用户交互的响应。React事件处理程序只是在组件上调用的JavaScript函数,以响应某些类型的操作或事件,例如点击、触摸、滚动等。 React组件可以使…

【P3】HTTP 接口设计

一、简答 HTTP 接口设计 HTTP请求默认值: 配置 http 请求的默认值,比如协议、主机、端口 HTTP信息头管理器: 配置 http 请求的头部参数 HTTP请求: 用于和业务交互 查看结果树: 用于结果展示 二、准备工作 慕慕生…

希尔排序详解(Shell Sort)

本文已收录于专栏 《算法合集》 一、简单释义 1、算法概念 希尔排序是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐…