0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

云服务器Flexus X实例,Docker集成搭建Mysql集群

jf_21561199 来源:jf_21561199 作者:jf_21561199 2024-12-29 15:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MySQL 集群是一种高可用性、高性能的数据库解决方案,旨在支持分布式应用程序,允许多个 MySQL 实例以集群的方式共同工作,提供数据冗余和故障恢复能力

搭建 Mysql 集群

华为云放行端口 3666 和 3667

wKgZO2dv2DeAY9oZAAQuNEztCWI099.png

wKgZPGdv2DiAf8IkAAKsr7htdiQ630.png

wKgZO2dv2DmAd-LIAAJ_eHBRef8499.png

1、购买华为云 Flexus X 实例

Flexus云服务器X实例-华为云 (huaweicloud.com)

2、安装 docker,并检查安装版本(此处我已安装不做演示)

curl-fsSLhttps://get.docker.com | bash

docker-version

wKgZPGdv2DqAYxk-AAFilH4_di0226.png

3、拉取 Mysql 镜像

dockerpull mysql:5.7

wKgZO2dv2DqAOTsrAALWIuSM5og555.png

4、创建所需目录,在容器外创建用于存储日志、数据和配置文件的目录。这些目录会在容器运行时被挂载,确保数据持久化

/mysql-master/log:用于存放 MySQL 日志文件

/mysql-master/data:用于存放 MySQL 数据库文件

/mysql-master/conf:用于存放 MySQL 配置文件

mkdir-p/mysql-master/log

mkdir-p/mysql-master/data

mkdir-p/mysql-master/conf

wKgZPGdv2DuAAQxZAAGkgQNhEpw295.png

5、运行 MySQL 容器,使用以下命令运行 MySQL 容器。这里将容器的 3306 端口映射到主机的 3666 端口,并挂载了之前创建的目录

dockerrun -itd-p3666:3306 --namemysql-master -v/mysql-master/log:/var/log/mysql -v/mysql-master/data:/var/lib/mysql -v/mysql-master/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true mysql:5.7

wKgZO2dv2DyAGOvyAAJMiirYnSA806.png

6、检查是否部署成功 docker ps 查看,有 mysql 说明部署成功

docker ps

wKgZPGdv2DyATIHpAASXhH274Fg873.png

•如上如果部署失败 docker ps 会看不到 mysql,需要查看日志,然后根据日志给出的报错提示修改,多半是文件没有创建,根据要求创建对应文件即可

docker logs mysql-master

7、mysql 配置主节点文件配置

vim /mysql-master/conf/my.cnf

[mysqld]

server_id=101

binlog-ignore-db=mysql

log-bin=mall-mysql-bin

binlog_cache_size=1M

binlog_format=mixed

expire_logs_days=7

slave_skip_errors=1062

character-set-server=utf8

wKgZO2dv2D2ACuHtAALRn4jjge4911.png

8、从节点上创建用于 MySQL 从节点的日志、数据和配置文件目录

mkdir-p/mysql-master/log

mkdir-p/mysql-master/data

mkdir-p/mysql-master/conf

dockerrun -itd-p3666:3306 --namemysql-master -v/mysql-master/log:/var/log/mysql -v/mysql-master/data:/var/lib/mysql -v/mysql-master/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true mysql:5.7

9、主节点上创建用于 MySQL 从节点的日志、数据和配置文件目录

mkdir-p/mysql-slave/log

mkdir-p/mysql-slave/data

mkdir-p/mysql-slave/conf

dockerrun -itd-p3667:3306 --namemysql-slave -v/mysql-slave/log:/var/log/mysql -v/mysql-slave/data:/var/lib/mysql -v/mysql-slave/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true --linkmysql-master:mysql-master mysql:5.7

端口映射:将宿主机的 3667端口映射到容器的 3306端口。

数据挂载:将日志、数据和配置文件目录挂载到容器内部,保证数据持久化。

环境变量:设置 MySQL 根用户的密码为 password。

--link:使从节点能够连接到主节点 mysql-master,并将其映射为主机名 mysql-master

wKgZPGdv2D6AP-mxAAKJ3_-wsO4127.png

10、查看容器状态

docker ps

wKgZO2dv2D-AepEsAATxNcZm9fQ223.png

11、mysql 配置主节点和从节点配置

•mysql 配置主节点文件配置

vim/mysql-master/conf/my.cnf

[mysqld]

server_id=101

binlog-ignore-db=mysql

log-bin=mall-mysql-bin

binlog_cache_size=1M

binlog_format=mixed

expire_logs_days=7

slave_skip_errors=1062

character-set-server=utf8

•mysql 配置从节点文件配置

vim/mysql-slave/conf/my.cnf

[mysqld]

server_id=102

binlog-ignore-db=mysql

log-bin=mall-mysql-slave1-bin

binlog_cache_size=1M

binlog_format=mixed

expire_logs_days=7

slave_skip_errors=1062

relay_log=mall-mysql-relay-bin

log_slave_updates=1

read_only=1

character-set-server=utf8

wKgZPGdv2D-AEZ2PAALMIejOST8309.png

12、进入 mysql 容器,连接到 MySQL 主节点

dockerexec -itmysql-master bash

mysql-uroot-ppassword-h60.204.147.160 -P3666

mysql: 调用 MySQL 客户端。

-uroot: 指定使用 root用户连接数据库。

-ppassword: 指定 root用户的密码为 password(-p后面没有空格)

-h 123.249.27.118: 指定要连接的主节点的 IP 地址。

-P 3666: 指定 MySQL 服务监听的端口号(这里是 3666)

wKgZO2dv2ECANqr1AAJ58a01Jz0598.png

•主服务器如下进行 mysql 操作创建一个新的 MySQL 用户(slave),并授予其执行主从复制所需的权限。然后,通过刷新权限,确保这些更改能立即生效,以便用户能够开始使用这些权限

wKgZPGdv2EGANOidAAPMY-drQhY814.png

13、进入 mysql 容器,连接到 MySQL 从节点

dockerexec -itmysql-master bash

mysql-uroot-ppassword-h60.204.147.160 -P3667

•配置主服务器信息

change master to

master_host='60.204.147.160',

master_user='slave',

master_password='123456',

master_port=3666,

master_log_file='mall-mysql-bin.000001',

master_log_pos=761,

master_connect_retry=30;

startslave ;

master_host: 指定主服务器的 IP 地址或主机名。在你的例子中,主服务器的 IP 地址是 123.249.27.118。

master_user: 用于连接主服务器的用户名。在这里使用的是 slave用户。

master_password: 用于连接主服务器的密码,这里是 123456。

master_port: 主服务器的端口号,默认情况下 MySQL 使用 3306,这里使用的是 3666。

master_log_file: 指定主服务器的二进制日志文件名,用于同步数据。这通常是从主服务器执行 SHOW MASTER STATUS;获取的。

master_log_pos: 指定在二进制日志文件中的位置,表示从哪个位置开始复制数据。这个值也来自于 SHOW MASTER STATUS;。

master_connect_retry: 当从服务器无法连接到主服务器时,重试连接的时间间隔(秒)。这里设置为 30 秒

•执行 START SLAVE;命令后,从服务器将开始与主服务器的连接,并开始复制数据

wKgZO2dv2EGAGpnTAAICILOAzUM141.png

14、从服务器如下进行 mysql 操作创建一个新的 MySQL 用户(slave),并授予其执行主从复制所需的权限。然后,通过刷新权限,确保这些更改能立即生效,以便用户能够开始使用这些权限

wKgZPGdv2EKAD3qsAAMOmZOH7iI071.png

15、启动复制进程

STARTSLAVE ;

16、检查状态

Slave_IO_Running

•值为 Yes: 表示从服务器的 I/O 线程正在运行,并且能够成功连接到主服务器,正在接收来自主服务器的二进制日志事件。

•值为 No: 表示 I/O 线程没有运行,可能由于无法连接到主服务器或存在其他错误。

Slave_SQL_Running

•值为 Yes: 表示从服务器的 SQL 线程正在运行,能够成功处理接收到的日志事件并将其应用到从数据库中。

•值为 No: 表示 SQL 线程没有运行,可能是因为处理日志事件时遇到了错误或其他原因

如果这两个状态都为 Yes,说明主从复制配置正常,从服务器正在有效地接收和执行来自主服务器的更新

SHOW SLAVE STATUSG;

wKgZO2dv2EOAC0gZAAMYG2NCeu4067.png

总结

华为云的 Flexus X 实例,不仅是为了其卓越的性能和稳定性,更因为其性价比极高的服务,在搭建 MySQL 集群的过程中,我体验到了云计算与 Docker 容器技术的无缝结合,这使得我的数据库管理和运维变得更加高效,在这个过程中,我深刻体会到持续学习的重要性,如果有志于提升运维技能的小伙伴们,可以考虑一起购买华为云的 Flexus X 实例,共同探讨和学习更多关于云计算和容器化的实践经验,此外,当前正值华为云 828 大促,性价比极高的云服务为我们提供了绝佳的学习机会!

华为云828 Flexus X实例

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 云计算
    +关注

    关注

    39

    文章

    8044

    浏览量

    144809
  • MySQL
    +关注

    关注

    1

    文章

    931

    浏览量

    29775
  • Docker
    +关注

    关注

    0

    文章

    537

    浏览量

    14415
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OpenClaw搭建教程:服务器一键部署完整流程

    很多开发者在了解OpenClaw之后,最关心的其实是一个非常实际的问题:OpenClaw到底怎么搭建?普通服务器能不能部署?过程复杂吗? 答案其实很简单。OpenClaw本质上是一个
    的头像 发表于 03-12 14:39 683次阅读

    KubePi:开源Kubernetes可视化管理面板,让集群管理如此简单

    ;{.spec.ports[0].nodePort}\") # 获取Address echo http://$NODE_IP:$NODE_PORT 3.4 在华为Flexus服务器
    发表于 02-11 12:53

    零基础如何用服务器搭建网站?完整教程

    准备(域名与服务器)、系统与环境配置、网站部署、上线后的安全与性能优化、以及日常运维。每个步骤都配合实用操作建议,便于一步步完成搭建工作。遇到疑难环节时,恒讯科技可以在服务器选型、网络配置与运维保障
    的头像 发表于 01-29 16:18 626次阅读

    Node-RED+Modbus_slave:JSON数据采集与阿里服务器上传

    MYSQL数据库中。在参照本文档进行操作时,请先参照附录1和附录3搭建所需实验环境。 1.2注意事项 本文档不单单适用于阿里TCP服务器,也适用于其他TCP
    的头像 发表于 01-05 17:37 974次阅读
    Node-RED+Modbus_slave:JSON数据采集与阿里<b class='flag-5'>云</b><b class='flag-5'>服务器</b>上传

    硬件通胀下的生存战!华为Flexus X服务器,让中小企业不做“接盘侠”

    通知”成了企业IT采购的常态。 DRAM合同价同比暴涨171.8%,NAND Flash价格累计飙升246%,服务器整机采购成本上升15%-20%。硬件市场的疯狂涨价,正让无数中小企业面临“买得起用不起、想买却没货”的绝境。而__华为
    的头像 发表于 12-31 13:05 414次阅读

    DRAM 暴涨 171%! 171% 下的企业突围:华为 Flexus X 服务器成 IT 成本管控利器

    Flexus X 服务器凭借独有的柔性算力黑科技与智能调度能力,助力企业实现核心应用性能最高达友商 6 倍、综合成本降低 30% 的双
    的头像 发表于 12-31 13:00 399次阅读

    什么是企业服务器-计算

    地扩展和管理其IT基础设施。华纳的企业服务器基于虚拟化技术,在环境中运行多个虚拟服务器实例
    的头像 发表于 12-29 17:57 1125次阅读

    服务器端口怎么开放?

    搭建服务器,想部署网站、运行应用或开启远程连接,却发现外网始终无法访问?大概率是端口没开放。端口就像服务器的门窗,默认状态下,
    的头像 发表于 11-11 15:43 1157次阅读

    恒讯科技解析:如何在日本服务器上安装和配置数据库(如MySQL)?

    为您的业务部署日本服务器后,下一个关键步骤就是安装和配置数据库。无论是用于网站、应用程序还是数据分析,一个稳定高效的数据库是业务的核心。恒讯科技将以最流行的MySQL为例,提供一份在日本服务器(以
    的头像 发表于 11-04 11:07 832次阅读

    香港服务器支持Docker和Kubernetes吗?

    在云原生技术成为主流的今天,Docker和Kubernetes(K8s)已成为现代化应用开发和部署的事实标准。对于选择香港服务器的开发者与企业而言,一个核心问题是:香港服务器能否完美支持Doc
    的头像 发表于 10-21 15:47 950次阅读

    恒讯科技分析:储存服务器搭建教程

    搭建存储服务器是一个相对复杂但极具实用性的项目,以下是一个简化的搭建教程,帮助你快速入门。 一、明确需求 在搭建
    的头像 发表于 07-07 11:07 1494次阅读

    ARM集群服务器 定义

    ARM集群服务器的核心定义可归纳为以下要点: 一、核心定义 ARM集群服务器是将‌多个基于ARM架构的处理节点‌
    的头像 发表于 06-25 08:09 2525次阅读
    ARM<b class='flag-5'>集群</b><b class='flag-5'>服务器</b> 定义

    服务器和独立服务器的区别在哪?一文读懂如何选择

    面对服务器与独立服务器的选择,许多人常因概念模糊而纠结。服务器和独立服务器的区别在于资源分配
    的头像 发表于 05-19 10:19 840次阅读

    存储服务器租用的好处有哪些?

    随着企业数字化转型加速,存储服务器租用成为越来越多企业的首选方案。存储服务器租用的好处在于弹性灵活、成本可控、安全可靠,同时避免了传统服务器
    的头像 发表于 05-16 11:03 968次阅读

    电竞服务器 工作原理

    电竞服务器工作原理详解 一、核心架构原理 虚拟化资源池‌ 通过 ‌KVM/VMware‌ 等虚拟化技术将物理服务器(含NVIDIA GPU集群)抽象为可动态分配的算力资源池,每个用户
    的头像 发表于 05-14 07:44 800次阅读
    <b class='flag-5'>云</b>电竞<b class='flag-5'>服务器</b> 工作原理