墨墨导读:MySQL在Docker环境下运行的基础操作,本文从Docker介绍、安装Docker、MySQL安装部署几个方面展开介绍。 另:墨天轮邀请到原厂专家直播解析MySQL的性能管理,欢迎大家报名参与: 1. Docker介绍 1.1.
docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。 优点:
1.2. 容器的发展史: 1.3. Docker容器的运行方式:(三大核心组件)
2. 安装docker 2.1. 先决条件
2.2. 检查前提条件
2.3. 安装docker 环境准备: (1)检查系统的内核版本,返回的值大于3.10即可 [root@ss30 ~]# uname -r 3.10.0-1127.el7.x86_64 (2)使用sudo或root权限的用户登入中端 (3)保证apt-get是最新版本的,执行如下命令: 命令:yum update 安装docker: 命令:yum -y install docker.io (apt-get install -y docker.io) 用此命令安装的可能不是docker的最新版本,要想安装docker的最新版本可以使用如下命令: 命令:curl -s https://get. | 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. 拉去镜像
[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 images [OPTIONS] [REPOSITORY[:TAG]] :此命令是来查看我们本机都有哪些镜像,也可以验证我们的pull是否执行成功 查看容器运行情况 [root@ss30 ~]# docker container ls [root@ss30 ~]# docker ps ##列出容器 备注:
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 备注:
登录容器: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之后 登录数据库:
[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 #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 已经不再是瓶颈。 容器方面,更想进一步深入的话,需要理解几个核心点: 墨天轮原文链接:https://www./db/29222(复制到浏览器中打开或者点击“阅读原文”) |
|