使用 Docker 部署 MySQL 8

使用 Docker 部署 MySQL 8 详细指南

MySQL 是一个广泛使用的开源关系型数据库管理系统。通过 Docker 部署 MySQL 8 可以快速搭建一个可移植、可扩展的数据库环境。本文将详细介绍如何使用 Docker 部署 MySQL 8,并讲解如何根据需求配置 MySQL。


从拉取镜像开始的详细步骤

1. 拉取 MySQL 8 镜像

首先,从 Docker Hub 拉取 MySQL 8 的官方镜像。

docker pull mysql:8.0
  • mysql:8.0:指定拉取 MySQL 8 的镜像。

2. 启动一个临时 MySQL 容器

启动一个临时的 MySQL 容器,目的是生成默认的配置文件。

docker run -d --name temp-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:8.0
  • -d:后台运行容器。
  • --name temp-mysql:指定容器名称为 temp-mysql
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码。

3. 从容器中复制配置文件

MySQL 的配置文件通常位于 /etc/mysql 目录中。我们可以使用 docker cp 命令将配置文件复制到主机。

复制整个配置文件目录
docker cp temp-mysql:/etc/mysql /path/to/mysql-config
  • temp-mysql:/etc/mysql:从容器中复制 /etc/mysql 目录。
  • /path/to/mysql-config:将配置文件复制到主机的 /path/to/mysql-config 目录。
检查复制的文件

复制完成后,检查主机上的 /path/to/mysql-config 目录,确保文件已成功复制:

ls /path/to/mysql-config

4. 删除临时容器

配置文件已经复制到主机,现在可以删除临时容器了。

docker stop temp-mysql
docker rm temp-mysql

5. 基于自定义配置文件启动新的 MySQL 容器

现在,我们可以基于自定义配置文件启动一个新的 MySQL 容器,并将配置文件挂载到容器中。

启动容器
docker run -d \--name my-mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=my-secret-pw \-v /path/to/mysql-config:/etc/mysql \-v /path/to/mysql-data:/var/lib/mysql \mysql:8.0
  • -d:后台运行容器。
  • --name my-mysql:指定容器名称为 my-mysql
  • -p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口。
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码。
  • -v /path/to/mysql-config:/etc/mysql:将主机的配置文件目录挂载到容器的 /etc/mysql 目录。
  • -v /path/to/mysql-data:/var/lib/mysql:将主机的数据目录挂载到容器的 /var/lib/mysql 目录。

6. 验证 MySQL 容器

检查容器状态
docker ps
进入 MySQL 容器
docker exec -it my-mysql mysql -uroot -pmy-secret-pw
查看配置文件是否生效

在 MySQL 客户端中运行以下命令,检查配置文件是否生效:

SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

自定义配置文件详解

默认配置文件结构

MySQL 8 的默认配置文件通常包括以下几个文件:

  • my.cnf:主配置文件。
  • conf.d/:额外的配置文件目录。
  • mysql.conf.d/:MySQL 服务器的配置文件目录。
示例 my.cnf

以下是一个简单的 my.cnf 配置文件示例:

[mysqld]
# 绑定 IP
bind-address = 0.0.0.0# 监听端口
port = 3306# 数据目录
datadir = /var/lib/mysql# 最大连接数
max_connections = 200# InnoDB 缓冲池大小
innodb_buffer_pool_size = 256M# 错误日志
log_error = /var/log/mysql/error.log# 慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci# 禁用符号链接
symbolic-links = 0# 禁用 DNS 解析
skip-name-resolve

高级配置与优化

1. 调整缓冲池大小

[mysqld]
innodb_buffer_pool_size = 1G

2. 启用查询缓存

[mysqld]
query_cache_type = 1
query_cache_size = 64M

3. 优化连接数

[mysqld]
max_connections = 500

案例实战

部署 MySQL 数据库服务

1. 修改配置文件

/path/to/mysql-config/my.cnf 中添加以下内容:

[mysqld]
bind-address = 0.0.0.0
port = 3306
datadir = /var/lib/mysql
max_connections = 200
innodb_buffer_pool_size = 256M
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
symbolic-links = 0
skip-name-resolve
2. 启动容器
docker run -d \--name my-mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=my-secret-pw \-v /path/to/mysql-config:/etc/mysql \-v /path/to/mysql-data:/var/lib/mysql \mysql:8.0

部署 MySQL 主从复制

1. 配置主节点

在主节点的 my.cnf 中添加以下内容:

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase
2. 配置从节点

在从节点的 my.cnf 中添加以下内容:

[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase
3. 启动主从复制

在主节点上创建复制用户,在从节点上配置主节点信息并启动复制。


通过以上步骤,你可以灵活地配置和管理 MySQL 8 容器,同时保留默认配置文件的模板。继续实践和探索,你将能够更高效地使用 MySQL 构建高性能的数据库服务!

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

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

相关文章

AtCoder Beginner Contest 397(ABCDE)

目录 A - Thermometer 翻译: 思路: 实现: B - Ticket Gate Log 翻译: 思路: 实现: C - Variety Split Easy 翻译: 思路: 实现: D - Cubes 翻译&#xff1a…

数模AI使用教程(新) 2025.3.17

DeepseekR1doubao1.5大模型组合,数模智能体题目解答一等水平,另外也有统计建模、期刊复现智能体。 功能:问题重述、解释数据文件、深度思考与逻辑梳理、问题关键点分析、知识整理、查找数据源、问题分析、使用方法推荐[会询问要求]、模型建立…

Spring Cloud Gateway 生产级实践:高可用 API 网关架构与流量治理解析

API 网关的核心价值 在分布式微服务架构中,API 网关作为系统流量的唯一入口,承担着路由分发、安全防护、流量治理三大核心职责。Spring Cloud Gateway 基于响应式编程模型与 Netty 高性能网络框架,提供灵活的路由规则、动态过滤器链和深度集…

在Pycharm配置conda虚拟环境的Python解释器

〇、前言 今天在配置python解释器时遇到了这样的问题 经过一下午自行摸索、上网搜寻后,终于找到的解决的方案,遂将该方法简要的记录下来,以备后用,并希望能帮助到有同样问题或需求的朋友:) 我所使用的软件的版本如下,假…

宽带(Broadband)

宽带(Broadband) 是一种高速互联网接入技术,能够同时传输多种类型的数据(如语音、视频、文本等)。与传统的窄带(如拨号上网)相比,宽带提供了更高的数据传输速率和更稳定的连接&#…

集成学习(上):Bagging集成方法

一、什么是集成学习? 在机器学习的世界里,没有哪个模型是完美无缺的。就像古希腊神话中的"盲人摸象",单个模型往往只能捕捉到数据特征的某个侧面。但当我们把多个模型的智慧集合起来,就能像拼图一样还原出完整的真相&a…

VLLM:虚拟大型语言模型(Virtual Large Language Model)

VLLM:虚拟大型语言模型(Virtual Large Language Model) VLLM指的是一种基于云计算的大型语言模型的虚拟实现。它通常是指那些由多个服务器组成的分布式计算环境中的复杂机器学习模型,这些模型能够处理和理解大量的文本数据。VLLM的…

Springboot+Vue登录、注册功能(含验证码)(后端!)

我们首先写一个接口,叫login!然后对传入一个user,因为我们前端肯定是要传过来一个user,然后我们后端返回一个user,因为我们要根据这个去校验!我们还引入了一个hutool的一个东西,在pom文件里面引…

冯 • 诺依曼体系结构

冯 • 诺依曼体系结构 一、冯 • 诺依曼体系结构推导阶段 1:初始计算机体系结构(仅输入、运算、输出)阶段 2:加入控制功能,初步形成 CPU 概念阶段 3:性能瓶颈与引入内存阶段 4:最终冯诺依曼体系…

Python print() 打印多个变量时,可变对象和不可变对象的区别

先来看这段代码: tmp [] print(tmp, tmp.append(1), tmp)输出: [1] None [1]并不是一些人认为的 [] None [1] 这是因为列表是可变对象,print()打印前会先计算出所有结果,最后再打印出来,中间在列表中添加了1&#…

【数学 线性代数】差分约束

前言 C算法与数据结构 本博文代码打包下载 什么是差分约束 x系列是变量&#xff0c;y系列是常量&#xff0c;差分系统由若干如下不等式组成。 x1-x2 < y1 x2-x3 < y2 ⋯ \cdots ⋯ 可能有负环的最短路 个人习惯&#xff1a;如果存在a指向b的边&#xff0c;则a是b的…

AutoGen :使用 Swarm 构建自治型多智能体团队

👉👉👉本人承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!👉👉👉 有意愿请私信!!!AutoGen 的 AgentChat 模块提供了一种强大的方法来构建多智能体协作系统。 在之前的文章中,我们探讨了…

2025人工智能“落地生花”:这六大领域正掀起颠覆性革命

——从医疗到养老&#xff0c;一场“AI”的全民狂欢正在上演 2025年的春天&#xff0c;全球科技界的热搜被一个中国AI大模型“霸榜”——DeepSeek。从春晚的机器人热舞到政务系统的“数字员工上岗”&#xff0c;从医疗诊断到工业炼钢&#xff0c;这场始于春节的技术海啸&#…

第27周JavaSpringboot git初识

Git 课程笔记 一、Git 的介绍 1. Git 的诞生背景 Git 是 Linux 内核的作者 Linus Torvalds 为了更好地管理 Linux 内核开发而创建的版本控制系统。在 Linux 内核开发初期&#xff0c;由于开发者众多&#xff0c;协作成本很高&#xff0c;后来使用了 BitKeeper 工具来辅助协作…

蓝耘智算|从静态到动态:探索Maas平台海螺AI图片生成视频功能的强大能力

文章目录 &#x1f44f;一、技术介绍&#x1f44f;二、平台注册&#x1f44f;三、功能体验&#x1f44f;四、总结 随着人工智能技术的快速发展&#xff0c;视频处理和生成技术已经成为了众多行业关注的热点。最近&#xff0c;我有机会体验了蓝耘智算平台的Maas平海螺AI视频产品…

解决从deepseek接口获取的流式响应输出到前端都是undefined的问题

你的前端 EventSource 代码遇到了 undefined 连续输出 的问题&#xff0c;通常是因为&#xff1a; AI 返回的内容被拆成了单个字符&#xff0c;导致前端 JSON.parse(event.data).content 获取到的是单个字符&#xff0c;而 undefined 可能是因为某些数据块没有 content 字段。…

VLLM专题(二十七)—使用 Kubernetes

在Kubernetes上部署vLLM是一种可扩展且高效的方式来服务机器学习模型。本指南将引导您使用原生Kubernetes部署vLLM。 此外,您还可以使用以下任意一种方式将vLLM部署到Kubernetes: HelmInftyAI/llmazKServekubernetes-sigs/lwsmeta-llama/llama-stacksubstratusai/kubeaivllm…

前缀和 之 哈希表 之 和 的奇偶与倍数

文章目录 930.和相同的二元子数组523.连续的子数组和 求解连续子数组的和的问题&#xff0c;常常会使用到这个前缀和的思路&#xff0c;当然当数组存在单调性的时候&#xff0c;可以考虑使用不定长滑动窗口&#xff0c;在这里解释一下&#xff0c;何为数组的和存在这个单调性&a…

Docker Compose 和 Kubernetes(K8s)对比

Docker Compose 和 Kubernetes&#xff08;K8s&#xff09;在某些方面有相似的功能&#xff0c;但它们的 核心用途和适用场景不同。以下是它们的主要区别和联系&#xff1a; 1. Docker Compose 和 Kubernetes 的区别 对比项Docker ComposeKubernetes&#xff08;K8s&#xff0…

晶艺代理,100V3.5A高耐压LA1823完全替换MP9487--启烨科技有限公司

晶艺品牌LA1823是异步降压转换器&#xff0c;COT控制&#xff0c;PFM工作模式, 150KHz/ 250KHz/ 450KHz &#xff0c;开关频率可调节&#xff0c;输入电压4.5~100V&#xff0c;2A平均电流&#xff0c;峰值电流3.5A&#xff0c;采用ESOP8封装。 晶艺LA1823的特性&#xff1a; 4.…