docker安装MySQL集群(一主一从)

news2024/11/15 13:38:16

目录

  • docker安装MySQL集群(一主一从)
  • 前菜测试
  • MySQL 集群安装
    • master容器
    • slave容器
    • master容器
    • 配置主从赋值
    • 测试

docker安装MySQL集群(一主一从)

前菜测试

1、拉取mysql5.7的镜像到本地

[root@aliyun ~]# docker pull mysql:5.7

2、启动mysql容器,指定密码为123456

[root@aliyun ~]# docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

3、进入mysql容器

[root@aliyun ~]# docker exec -it mysql /bin/bash
root@d9b75dcb7dae:/# 

4、输入密码访问

root@d9b75dcb7dae:/# mysql -u root -p

MySQL 集群安装

使用 Docker 搭建一个“一主一从”的 MySQL 读写分离集群

master容器

1、启动master容器,使用卷挂载,防止数据丢失

[root@aliyun ~]# docker run --name mysql_master -e MYSQL_ROOT_PASSWORD=123456 
-v /root/mysql_master/data:/var/lib/mysql \
-v /root/mysql_master/log:/var/log/mysql \
-v /root/mysql_master/conf:/etc/mysql/conf.d \
-d -p 3316:3306 mysql:5.7

2、在宿主机的/root/mysql_master/conf 目录中新建 my.cnf 文件,并在其中键入如下内容

# 设置字符集编码
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8
server_id=01 # 指定mysql唯一标识
binlog-ignore-db=mysql # 在二进制日志中忽略名为 "mysql" 的数据库的操作记录
log-bin=master-log-bin # 启用二进制日志,并指定二进制日志文件的名称为 "master-log-bin"
binlog_cache_size=1M # 二进制日志缓存的大小为 1MB
binlog_format=mixed # 设置二进制日志的格式为 "mixed"
expire_logs_days=7 # 设置二进制日志文件过期的天数为 7
slave_skip_errors=1062 # 设置当从服务器执行复制时遇到错误码为 1062 的错误时,跳过该错误并继续复制

3、重启master容器

[root@aliyun conf]# docker restart mysql_master

4、进入容器连接mysql,查看其字符编码

[root@aliyun conf]# docker exec -it mysql_master /bin/bash
root@d61cb0fa6c50:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

5、为当前mysql创建一个用户,允许从任何主机(‘%’)连接到 mysql 服务器,并指定密码

mysql> create user 'slave'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

6、授权,为用户 ‘slave’ 授予复制相关权限。

mysql> grant replication slave,replication client on *.* to 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

replication slave 权限允许用户作为一个从服务器连接到主服务器,并执行复制操作。

replication client 权限允许用户查看复制相关的信息。

*.* 表示所有库和表

slave容器

master容器

1、启动master容器,使用卷挂载,防止数据丢失

[root@aliyun ~]# docker run --name mysql_slave -e MYSQL_ROOT_PASSWORD=123456 
-v /root/mysql_slave/data:/var/lib/mysql 
-v /root/mysql_slave/log:/var/log/mysql 
-v /root/mysql_slave/conf:/etc/mysql/conf.d 
-d -p 3326:3306 mysql:5.7

2、在宿主机的/root/mysql_master/conf 目录中新建 my.cnf 文件,并在其中键入如下内容

[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=02 # 指定mysql唯一标识
binlog-ignore-db=mysql
log-bin=slave-log-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=relay-log-bin # 指定中继日志文件的名称前缀。中继日志文件用于记录从服务器上执行的复制操作,以便其他从服务器可以通过读取中继日志进行级联复制。
log_slave_updates=1 # 启用从服务器记录复制操作到自己的二进制日志的功能
read_only=1 # 将服务器设置为只读模式

3、重启slave容器

[root@aliyun conf]# docker restart mysql_slave

4、进入容器连接mysql,查看其字符编码

[root@aliyun conf]# docker exec -it mysql_slave /bin/bash
root@72c2eed0b7ca:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

配置主从赋值

1、查看master状态

在 master 中运行 show master status 命令,查看二进制日志文件名及要开始的位置。

在这里插入图片描述

2、在 slave 中通过运行 change master to 命令来指定其要连接的 master 相关信息。

mysql> change master to master_host='172.29.121.66', #主服务器的主机名或IP地址
master_user='slave', # 主服务器指定的复制用户
master_password='123456', # 主服务器的复制用户密码
master_port=3316, # 主服务器的端口
master_log_file='master-log-bin.000001', # 主服务器的二进制日志文件名
master_log_pos=617; # 主服务器的二进制日志位置

3、slave开启同步

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

查看slave的状态,同步已经开始

在这里插入图片描述

测试

1、在master中写入

在这里插入图片描述

2、在slave中读取

在这里插入图片描述

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

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

相关文章

优思学院|丰田公司的精益生产为什么让人敬佩?

因为丰田精益生产方式的成功不是偶然,它历经了50多年,从员工的教育训练着手,使他们能运用非常严格的问题解决程序,采用科学方法,针对各项活动、流程及制度不断地加以评估、检测与改进而自然形成的。事实上,…

【阿Q送书第四期】好书推荐《重构的时机和方法》

文章目录 背景概念介绍案例目录购书 送书规则 背景 最近公司正在组织 Code Review ,看看之前为了赶项目写的代码,真的是一言难尽。所以想趁同事审查我的代码之前做点“小动作”,没错,我想说的就是“代码重构”。 对于工作时间较…

css设置背景图片和边框背景

介绍一个网站,在这个网站里可以找到各种好看的背景图片和边框图片。 数据大屏 (代码是reactts,使用时请自行转换) 一:设置页面背景图片 css部分 .productionBoard {width: 100%;height: 100%;padding: 0 2rem;box-si…

高效梳理商业模式,3个免费的精益画布模板网站!

精益画布是一种能够帮助创业者快速开发商业模式的工具,它广泛应用于初创公司、企业创新、新产品发布等领域,并且精益画布可以帮助创业者系统地归纳商业模式,并从中找到新的商业机会。本文将向大家介绍3款免费的精益画布模板网站,这…

SFP3012-ASEMI快恢复二极管参数、规格、尺寸

编辑:ll SFP3012-ASEMI快恢复二极管参数、规格、尺寸 型号:SFP3012 品牌:ASEMI 芯片个数:2 芯片尺寸:102MIL*2 封装:TO-247 恢复时间:65ns 工作温度:-40C~175C 浪涌电流&am…

37.Vue生命周期-挂载流程

36.Vue引出生命周期_未来音律的博客-CSDN博客下面绿色框中的是Vue实例,红色框中的是具体的逻辑,而且最主要的是红色框中的还在操作绿色框中的数据。这是因为在定时器里,我们修改了data中的数据opacity,而Vue有这样的承诺&#xff…

MTK 进META的两种方式

1. Preloader进meta: 开机情况下:先发adb reboot meta进入Preloader,然后再进META 2. 开机后直接进meta

yolov5训练自己的数据集 以训练yolov5识别香烟为例

创建数据集目录 在YOLOv5根目录下创建mydata文件夹(名字可以自定义),目录结构如下,将之前labelImg标注好的xml文件和图片放到对应目录下 mydata …images # 存放图片 …xml # 存放图片对应的xml文件 …dataSet #之后会在Main文件…

JAVA毕业设计091—基于Java+Springboot+Vue的宠物领养系统(源代码+数据库+14000字论文)

基于JavaSpringbootVue的宠物领养系统(源代码数据库14000字论文)091 一、系统介绍 本项目前后端分离 本系统分为管理员、用户两种角色 用户角色包含以下功能: 登录、注册、首页、宠物喂养、流浪宠物救助、宠物喂养点、丢失宠物查看、流浪宠物救助站、宠物论坛、…

Appium+python自动化(二十五)-获取控件ID(超详解)

简介 在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐…

实战项目——基于多设计模式下的同步异步日志系统

系列文章目录 1.项目介绍 2.相关技术补充 3.日志系统框架 4.代码设计 5.功能测试 6.性能测试 文章目录 目录 系列文章目录 1.项目介绍 2.相关技术补充 3.日志系统框架 4.代码设计 5.功能测试 6.性能测试 文章目录 前言 一、项目介绍 二、开发环境 三、核心技…

企业博客资讯如何高效运营起来?

运营一个高效的企业博客资讯需要综合考虑多个因素,包括内容策划、发布频率、优化推广、互动反馈等。下面将从这些方面介绍如何高效运营企业博客资讯。 如何高效运营企业博客资讯 内容策划 首先,需要制定一个明确的内容策略。确定博客的定位和目标受众…

亚马逊云科技纽约峰会,充分释放数据价值和生成式AI的潜力

生成式AI将深刻改变每个公司的运营方式,标志着人工智能技术发展的新转折点。亚马逊云科技昨日在纽约峰会上宣布,推出七项生成式AI新功能,进一步降低了生成式AI的使用门槛,让无论是业务用户还是开发者都能从中受益。借助这些新功能…

Packet Tracer – 使用 CDP 映射网络

# Packet Tracer – 使用 CDP 映射网络 ## 地址分配表 设备 接口 IP 地址 子网掩码 本地接口和互联邻居 Edge1 G0/0 192.168.1.1 255.255.255.0 G0/1 - S1 S0/0/0 S0/0/0 - ISP Branch-Edge S0/0/1 209.165.200.10 255.255.255.252 S0/0/1 – ISP Branch…

window下运行sh脚本/Linux命令

安装Git 首先找到git安装官方网址,Git的官方网址如下所示 https://git-scm.com/download/win 选择合适的Git版本安装即可。 一般一直点击install即可,注意环境变量的environment path的复选框点击。具体操作以及成果标志如下博客所示。 Windows 命令…

「VS」常见提示图标含义

✨博客主页何曾参静谧的博客📌文章专栏「VS」Visual Studio📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C」C/C程序设计「Win」Windows程序设计「算法」数据结构与算法「File」数据文件格式 目录 VS官网…

深入了解HTTP代理在网络爬虫与SEO实践中的角色

随着互联网的不断发展,搜索引擎优化(SEO)成为各大企业和网站重要的推广手段。然而,传统的SEO方法已经难以应对日益复杂和智能化的搜索引擎算法。在这样的背景下,HTTP代理爬虫作为一种重要的工具,正在逐渐被…

金蝶云星空对接打通管易云物料查询接口与商品新增接口

金蝶云星空对接打通管易云物料查询接口与商品新增接口 数据源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在…

java实现简单的购物车

文章目录 包含的功能增加商品删除商品修改商品购买数量展示商品 源代码Item.javaShoppingCart.java 包含的功能 增加商品 private static void addItem(ArrayList<Item> shoppingCartList, Scanner sc) {String id null;while(true){System.out.println("请输入商…

HTML <picture> 标签

实例 如何使用 <picture> 标签: <picture><source media="(min-width:650px)" srcset="/i/photo/flower-4.jpg"><source media="(min-width:465px)" srcset="/i/photo/tulip.jpg"><img src="/i/ph…