【docker】docker-compose实战之MySQL安装与配置

2023-10-27

唠嗑部分

首先说一下,MySQL是否适合容器化?

  • 数据库首先要解决数据的持久化问题,以确保服务宕机之后数据不会丢失,docker提供的数据卷虽然可以让数据保存在宿主机上,但是容器的 volumn数据卷的设计是围绕 Union FS镜像层提供持久存储,数据安全缺乏保证。

  • 如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较大。

  • MySQL属于关系型数据库,对IO要求较高。当一台物理机跑多个时,IO就会累加,导致IO瓶颈,大大降低MySQL的读写性能。

在实际开发过程中啊也会遇到类似问题,就小白最近来讲,事情是这样的,涉及到接口压测,期初呢是测试环境在压测,结果不太理想,然后将压测任务转移到开发环境进行,因为测试环境的数据库是容器化的,开发环境是物理机做的集群(涉及到工作相关,不再多说)

那么,MySQL就不适合容器化了嘛?

当然不是,可以将MySQL的从节点容器化,增加节点的实例数,从而增加吞吐量

当然以上问题是企业解决的问题,与我们开发人员并没有多大关系,我们在自己平时学习的过程中,或者自己做项目时,MySQL容器化还是很方便的

下面就让我们一起来搭建MySQL吧

操作步骤

在/root目录下创建如下目录

docker-compose-mysql/data(MySQL数据持久化挂载目录),docker-compose-mysql/conf(MySQL自定义配置挂载目录)

cd /root
mkdir -p docker-compose-mysql/{data,conf}

授权(避免持久化数据目录权限不足而失败)

chown -R mysql:mysql docker-compose-mysql/data

创建自定义的配置文件mysql.cnf

vim docker-compose-mysql/conf/mysql.cnf

配置如下(主要是字符集配置)

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

在docker-compose-mysql目录下创建docker-compose.yml文件,内容如下

version: "3.1"
services:
  mysql1:
    container_name: docker-compose-mysql
    image: mysql:5.7
    ports:
      - "3310:3306"
    volumes:
      - /root/docker-compose-mysql/conf/:/etc/mysql/conf.d/
      - /root/docker-compose-mysql/data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root

在docker-compose-mysql目录下执行如下命令,运行容器

docker-compose up -d

image-20230227145537507

测试&结语

使用Windows命令行或Navicat连接MySQL,我的ip是10.10.10.10

使用如下命令查看字符集,出现下图即可,说明挂载的配置文件生效了

show variables like '%character%';

image-20230227145815528

问题:不知道大伙有没有发现,之前我们在 安装MySQL主从的时候,做了这么一件事,安装后修改了MySQL root用户的连接权限(默认root账户只能本机连接),但是docker容器跑的MySQL却没有,这是为啥呢?

解释一下,我认为这跟我们拉取的MySQL镜像有关,作者制作MySQL镜像的时候已经帮我们解决了,docker跑的MySQL root用户默认就是%,看下图

image-20230227150212391

到此,docker-compose安装MySQL就结束了

  • 关于docker章节,后续我们还会更新常用软件的安装,敬请期待
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【docker】docker-compose实战之MySQL安装与配置 的相关文章

  • 向 docker 镜像添加新的入口点

    最近 我们决定将我们的一项服务迁移到 docker 容器 该服务是另一家公司的产品 他们为我们提供了 docker 镜像 但是 我们需要在容器入口点中执行一些额外的配置步骤 我尝试的第一件事是从基础映像创建一个 DockerFile 然后添
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 如何在 docker-compose 文件中引用 traefik v2 的自签名 SSL 证书?

    在 docker compose YAML 文件中引用 Tr fik v2 自签名证书的文档非常有限 您可以按照以下方法进行操作 让我们加密 https en wikipedia org wiki Let 27s Encrypt https
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • docker build 如何知道 Dockerfile RUN 或 COPY 行是否可以使用缓存?

    如果我的 Python 项目的 Dockerfile 如下所示 FROM python 3 7 Set env variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 S
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • C++实现快速排序(源代码)

    快速排序的基本思想是 通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数据都比另外一部分的所有数据都要小 然后再按此方法对这两部分数据分别进行快速排序 整个排序过程可以递归进行 以此达到整个数据变成有序序列 快速排序是一种不稳
  • 一阶滞后环节matlab,一个一阶惯性带有滞后环节的PID仿真程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我照着网上的程序自己改出来的程序是这样的 clc clear ts 0 001 采样时间 sys tf 53 19926 100 ioDelay 540 tf是传递函数 用来实现G s 在自动控
  • 一种基于强化学习的自动变道机动方法

    文章目录 摘要 前言 相关的工作 方法论 动作空间 奖励函数设计 Q学习 仿真结果 结论 摘要 变道是一项至关重要的车辆操作 需要与周围车辆协调 建立在基于规则的模型上的自动换道功能可能在预定义的操作条件下表现良好 但在遇到意外情况时可能容
  • 海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析

    1 booter程序介绍 1 源码目录 pcie mcc multi boot example boot test c 2 调用命令 booter start device 3 booter程序的作用 在主片将pcie启动相关的驱动加载完成
  • centos7 安装jdk1.8

    一 安装环境 虚拟机centos7 二 安装步骤 linux环境下软件的安装有两种类型 yum install 和wget gz 安装包的格式 建议不管安装什么软件方式 能用wget解压安装包安装就用这种方式安装 1 下载安装包 wget
  • BUUCTF【Web】Secret File

    知识点 文件包含漏洞 PHP伪协议 进入靶场后 发现是一个文字界面没有任何特点 习惯性的右键查看源代码 发现有一个PHP文件 点击进行访问后 发现有一个链接但是点击链接后没有发现任何东西 此时右键查看原代码也没有发现东西 但是可以肯定的是突
  • ERP收付款的操作与设计--开源软件诞生22

    赤龙ERP收款付款讲解 第22篇 用日志记录 开源软件 的诞生 进入地址 点亮星星 祈盼着一个鼓励 博主开源地址 码云 https gitee com redragon redragon erp GitHub https github co
  • 4,引擎初始化--(5)初始化actor--5,初始化各个关卡中的各个actor-PostInitializeComponents()

    PostInitializeComponents 是actor最初处于完整状态的地方 所以 在这里经常编写actor在游戏开始时的初始化相关代码 此时 loadmap 加载完毕 actor加载完毕并初始化 world处于可玩状态 同时也有了
  • [搭建CLI效率工具] Rollup + TypeScript 搭建CLI工程

    环境搭建 工欲善其事必先利其器 使用Rollup搭建Typescript开发环境 毕竟Typescript是大势所趋并且Rollup相比较webpack对于node模块来说比较优化 创建项目目录并初始化 mkdir
  • vue中自定义链接的href内容,设置动态链接,动态添加请求头

    在http js页面定义好了需要动态添加的接口请求头 OPEN UR 如下 列如下 需要给点击下载模板时的 a 标签动态添加请求头和接口 html部分 a size middle class middleBtn 下载模板 a js部分 im
  • 如何更改element-ui自定义主题

    element ui总结 一 如何更改element ui的主题 1 在src下创建element variables scss文件 改变主题色变量 color primary a0c69d 改变 icon 字体路径变量 必需 font p
  • 树莓派安装openCV做图像识别

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文转自 新机器视觉 有时候我们会使用树莓派和摄像头去做图像识别 在树莓派和LINUX系统中最常用opencv去做图像识别 这次来介绍下树莓派安装opencv和用树莓派做
  • SD卡存储程序

    把采集的ad的数据存到SD卡中 int main void u16 fwrite counter 0 unsigned char Temp 11 data ok flag 1 for i 0 i lt 12 i ad i 0 for i 0
  • vtk创建点

    使用vtk库创建三维空间中的点 引言 开发环境 示例一 项目结构 实现代码 运行效果 示例二 项目结构 实现代码 运行效果 总结 引言 本文仅适合初学者 本文不提供vtk动态库的生成 以及在QtCreator中的引进vtk时的配置 本文先由
  • 牛人项目失败的总结

    tom lt 遇到的失败项目比较多 让人郁闷 仔细分析原因 主要在于 1 项目开始需求不明确 领导决定动手 就开始启动项目 造成和客户需要差距太大 导致失败 2 需求变更没有控制 客户提出新的需求 或者改变原来的需求 没有一个好的控制流程
  • 【模式识别4】YOLO目标检测数据集xml格式转txt格式

    YOLO目标检测数据集xml格式转txt格式 1 转换前的xml格式 2 xml格式转txt格式代码 2 1 源代码 2 2 需要修改的地方 3 转换后的txt格式 代码资源 voc2txt py 1 转换前的xml格式 如果我们使用Lab
  • 男人必读 --看了永不后悔,女人想看也可以进去……

    1 事业永远第一 虽然金钱不是万能的 但没有钱是万万不能的 虽然这句话很俗 但绝对有道理 所以30岁之前 请把你大部分精力放在你的事业上 事业远比爱情重要 如果说事业都不能永恒 那么爱情只能算是昙花一现 记 得那首 没有钱你会爱我吗 的歌吗
  • 基于Koa的微信第三方平台使用及搭建说明(一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 前言 公司内部使用说明文档 记录一下 目的在于使内部人员了解和熟悉项目 不在于搭建教程 看不明白的就别看了 一 关于 Node Node是什么 官网上给出的定义是 一个搭建
  • Mac 好用的shell终端

    1 搜索关键词 my zsh 2 http ohmyz sh
  • 【docker】docker-compose实战之MySQL安装与配置

    唠嗑部分 首先说一下 MySQL是否适合容器化 数据库首先要解决数据的持久化问题 以确保服务宕机之后数据不会丢失 docker提供的数据卷虽然可以让数据保存在宿主机上 但是容器的 volumn数据卷的设计是围绕 Union FS镜像层提供持