20

MySQL与容器

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODEzNDA4OA%3D%3D&%3Bmid=2650317700&%3Bidx=1&%3Bsn=1dc9e3e457c7acaac771f70d68bc1ce8
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近经常被问到,MySQL可以适用于容器吗?在这一篇里,简单地为大家介绍一下MySQL在容器上的使用。

既然说到了容器,首先介绍一下关于容器的相关内容。

什么是容器?让我们看一下官网上怎么说,https://www.docker.com/resources/what-container

“A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.”

翻译过来的内容是“容器是软件的标准单元,它将代码及其所有依赖项打包,以便 应用程序在不同的计算环境 之间快速可靠地运行。Docker容器映像是一个 轻量级的、独立的、可执行的软件包 ,它包括运行 应用程序所需的一切 :代码、运行时、系统工具、系统库和设置”。概述一下,用红颜色标识出来的字便是容器的特征。容器和虚拟机具有类似的资源隔离和分配优势,但功能不同,容器虚拟化的是操作系统而不是硬件。容器更轻便,更高效。Docker是实现容器技术的一个开源项目,它将程序以及程序所有的依赖都打包到Docker容器里面。使用Docker的好处之一,可以避免“明明在我这里好用,为什么在你那里不好用”,这个画面开发的小伙伴和测试的小伙伴可以脑补一下。

使用Docker时,需要用到Docker镜像。镜像可以从正式的镜像库下载,也可以人工制作和更新。

MySQL的镜像可以从 https://hub.docker.com/下载,这里面既有社区版MySQL的镜像,也有企业版MySQL的镜像。另外,也可以从https://container-registry.oracle.com下载两个版本。

部署MySQL时,可以参照下面的步骤:

  1. 安装Docker服务。

  2. 下载Docker镜像:

    docker pull mysql
  3. 启动Docker容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_ONETIME_PASSWORD=true -d mysql:latest
  4. 查看运行的容器:

    docker ps
  5. 查看日志,确认生成的root密码:

    docker logs mysqlse
  6. 连接MySQL服务器:

    docker exec -it mysqlse mysql -uroot -p
  7. 将配置文件和数据目录从底层主机系统映射到容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -v [path on host machine]/my.cnf:/etc/my.cnf -v [path on host machine]/datadir:/var/lib/mysql -d mysql:latest

关于详细的安装方法可以参照:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html

让我们考虑下一个问题,如果使用了成百上千的容器,该怎样管理呢?我们需要一个管理系统来帮助创建和部署复杂的环境。现在有很多这样的项目帮助我们实现这一点,例如: Kubernetes,Swarm, Rancher, Docker Compose,...。

以Kubernetes为例,Kubernetes是一个开源项目,允许将容器化的应用程序部署到集群,并且能够控制它们。Kubernetes是最活跃的容器编排项目,它使用客户端服务器(C/S)的架构,能够用于包括Docker在内的容器。

简单介绍一下Kubernetes的几个概念:

  • Node:容器运行的地方

  • Pods:共享存储和网络的一组容器

  • 高可用:当Node或Pod不可用时,Kubernetes将Pod安置到其他可用的Node

  • 能够直接下载Docker镜像

  • 资源控制包括网络和存储

  • 可以和其他项目整合提供存储网络等

MySQL提供了一个用于Kubernetes的 MySQLOperator for Kubernetes,目前还是一个实验室版本,它可以安装在现有的 Kubernetes 集群内,用户能够使用简单的配置格式创建和管理MySQL集群。这个项目一开始是为了帮助内部团队更容易地在Kubernetes中运行MySQL,但很快就发现很多其他用户可能也面临着类似的问题,因此也将其开源提供给广大用户使用。https://github.com/oracle/mysql-operator

3EZRreM.png!mobile

MySQL Operator for Kubernetes可以部署社区版和企业版的MySQL,可以配置管理InnoDB Cluster,当InnoDB Cluster的成员宕机时,MySQL Operator可以自动将其重新加入集群。此外,MySQL Operator还支持备份与恢复。

关于 MySQL Operator的详细内容可以参考: https://blogs.oracle.com/developers/introducing-the-oracle-mysql-operator-for-kubernetes

以上内容是关于MySQL与容器的简介,感谢您关注“MySQL解决方案工程师”!

Unuaq2b.png!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK