环境地学基础,MySQL在Docker环境下运行基础

 2023-09-22 阅读 22 评论 0

摘要:墨墨导读:MySQL在Docker环境下运行的基础操作,本文从Docker介绍、安装Docker、MySQL安装部署几个方面展开介绍。另:墨天轮邀请到原厂专家直播解析MySQL的性能管理,欢迎大家报名参与:环境地学基础。1. Docker介绍1.1. docker是一种linux容

墨墨导读:MySQL在Docker环境下运行的基础操作,本文从Docker介绍、安装Docker、MySQL安装部署几个方面展开介绍。

另:墨天轮邀请到原厂专家直播解析MySQL的性能管理,欢迎大家报名参与:


环境地学基础。1. Docker介绍

1.1. docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。

优点:

  • 建设环境友好型社会要以什么为基础,能高效地构建应用。

  • 能快速的交付和部署

  • 高效的资源利用

  • word在什么环境下运行、轻松的迁移扩展

  • 简单的更新管理

1.2. 容器的发展史:


1.3. Docker容器的运行方式:(三大核心组件)

  • 资源环境基础、镜像(images):类似虚拟机镜像

  • 仓库(Repository):集中存放镜像的地方。每个服务器上可以有多个仓库。

  • 容器(containers):镜像的一个运行实例,类似linux系统环境,运行和隔离应用


docker内安装docker、2. 安装docker

2.1. 先决条件

  • 必须是64位CPU架构的计算机,Docker目前不支持32位CPU;

  • 运行Linux3.8或更高版本内核,CentOS的内核版本不能低于3.10;

  • 内核必须支持一种合适的存储驱动,可以是Device Manager、AUFS、vfs、btrfs、以及默认的驱动Device Mapper中的一个;

  • 内核必须支持并开启cgroup和命名空间namespace功能。

2.2. 检查前提条件

  • 区域资源环境的基础有哪些、内核
    通过uname命令来检查内核版本信息。

  • 检查Device Mapper
    ls -l /sys/class/misc/device-mapper

2.3. 安装docker

环境准备:
Kernel 3.10+

(1)检查系统的内核版本,返回的值大于3.10即可

[root@ss30 ~]# uname -r
3.10.0-1127.el7.x86_64

(2)使用sudo或root权限的用户登入中端

(3)保证apt-get是最新版本的,执行如下命令:

命令:yum update
[root@ss30 ~]# yum update

安装docker:

命令:yum -y install docker.io  (apt-get install -y docker.io)

用此命令安装的可能不是docker的最新版本,要想安装docker的最新版本可以使用如下命令:

命令:curl -s https://get.docker.com | sh

[root@ss30 redis6.0]# service docker start 或systemctl start docker.service
[root@ss30 redis6.0]# ps -ef |grep docker
root       6966      1  1 19:51 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       7102   1862  0 19:51 pts/0    00:00:00 grep --color=auto docker
[root@ss30 redis6.0]# docker version

备注:移除Docker

yum -y remove docker-engine

3. MySQL安装部署

3.1. 拉去镜像
访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags

下载镜像

[root@ss30 softwares]# docker pull mysql:5.7.30

[root@ss30 img]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7.30              a4fdfd462add        9 days ago          448MB

备注:

docker pull [OPTIONS] NAME [:TAG]  :此命令的作用是从docker远程的仓库拉取镜像到本地
docker images [OPTIONS] [REPOSITORY[:TAG]]  :此命令是来查看我们本机都有哪些镜像,也可以验证我们的pull是否执行成功

查看容器运行情况

[root@ss30 ~]# docker container ls
[root@ss30 ~]# docker ps  ##列出容器

备注:
docker ps [OPTIONS]说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • –format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • –no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

3.2. 简单启动 mysql

查看所有container

[root@ss30 ~]# docker images
[root@ss30 ~]# docker run -p 3306:3306 --name mysql5730  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.30
[root@ss30 ~]# docker container ls


备注:

  • –name:为容器指定一个名称,此处命名为mysql5.7

  • -e:配置信息,此处配置mysql的root用户的登陆密码

  • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口

  • -d:后台运行容器,并返回容器ID;
    内部映射的端口改成其他端口时候,需要进入docker内 把对应的端口my.cnf进行配置

登录容器:docker exec -it 容器ID bash

docker exec -it b2240680eb53   /bin/bash

3.3. 登录mysql

查看所有container

[root@ss30 openssl-1.1.1g]# docker ps -a
[root@ss30 openssl-1.1.1g]# docker start  fd014d8ed34b  ##关闭使用stop命令
[root@ss30 openssl-1.1.1g]# docker ps

登录docker之后 登录数据库:

进入mysql容器

[root@ss30 ~]# docker exec -it mysql bash
root@fd014d8ed34b:/#
root@fd014d8ed34b:/# mysql -uroot -p123456

3.4. 目录映射
主机上创建对应的映射目录:

[root@ss30 mysql]# rm -rf /usr/local/docker/mysql/
[root@ss30 docker]# mkdir -p  /usr/local/docker/mysql/conf
[root@ss30 docker]# mkdir -p /usr/local/docker/mysql/data
[root@ss30 docker]# mkdir -p  /usr/local/docker/mysql/logs

配置文件my.cnf
MySQL的默认配置中可以找到/etc/mysql/my.cnf,这可能! includedir /etc/mysql/conf.等额外的目录d或/etc/mysql/mysql.conf.d(https://hub.docker.com/_/mysql/)

#vim /usr/local/docker/mysql/conf/my.cnf
[mysqld]
server_id                          = 1303306
character_set_server               = utf8mb4
collation_server                   = utf8mb4_unicode_ci
port                               = 3306
transaction_isolation              = READ-COMMITTED
max_connections                    = 1000
datadir                            = /var/lib/mysql
socket                             = /var/run/mysqld/mysqld.sock
pid_file                           = /var/run/mysqld/mysqld.pid
log_error                          = /var/log/mysql/error.log
# chmod 644  /usr/local/docker/mysql/conf/my.cnf

启动数据库

#docker run -p 3306:3306 --name mysql \-v /usr/local/docker/mysql/conf:/etc/mysql \-v /usr/local/docker/mysql/logs:/var/log/mysql \-v /usr/local/docker/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \-d mysql:5.7.30

备注:-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

备注:映射本地目录之后,但MySQL容器出现故障之后,可通过文件迁移,挂载方式,用原有数据搭建新容器,提供服务。

3.5. 备份

mysqldump备份命令:

[root@ss30 opt]# docker exec 327a1c4866ee sh -c 'exec mysqldump -uroot -p123456 -P3309 --single-transaction --master-data --all-databases' > /opt/all-databases.sql


4. 总结

通过实践,在docker中的MySQL部署和运维,还是比较简单的。实际测试性能损耗也在10%,当然主要个人认为还是网络方面的延迟。IO和CPU 已经不再是瓶颈。

容器方面,更想进一步深入的话,需要理解几个核心点:
1.Docker的数据持久化:目录的映射 和 volume方式
2.资源方面的隔离 Namespace 和 CGroup
3.容器服务编排:Mesos Swarm Kubernetes
4.网络连接方式的选择

墨天轮原文链接:https://www.modb.pro/db/29222(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊


视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/83569.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息