如何部署Docker MySQL 8.0?

Docker

1 基础知识

一个问题,一篇文章,一出故事。
本章将实现Docker MySQL 8.0的部署。

2 最佳实践

2.1 部署Docker集群

如果你尚未部署Docker集群环境,请参阅如下章节部署,

如何部署Oracle Linux 10.x Docker生产集群环境?

2.2 部署前的准备

In hd01,

cd /data/docker/images/
docker load -i mysql_8.0.tar
docker tag mysql:8.0 hd01.cmdschool.org:5000/mysql:8.0
docker push hd01.cmdschool.org:5000/mysql:8.0

另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,

docker pull mysql:8.0
docker save mysql:8.0 -o mysql_8.0.tar

另外,其他版本请从以下链接下载,
https://hub.docker.com/_/mysql

2.3 部署MySQL

In hd01

2.3.1 创建服务配置文件

In hd01,

vim /data/docker/yml/mysql8-hd03-stack.yml

加入如下配置,

version: '3.6'
services:
  hd03:
    image: 'hd01.cmdschool.org:5000/mysql:8.0'
    ports:
      - target: 3306
        published: 3306
        protocol: tcp
        mode: host
    environment:
      - 'MYSQL_ROOT_PASSWORD=mysqlpwd'
    volumes:
        - type: bind
          source: /data/docker/container-data/mysql8/conf/my.cnf
          target: /etc/my.cnf
        - type: volume
          source: mysql-data-hd03
          target: /var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    logging:
      driver: "json-file"
      options:
        max-size: "200m"
        max-file: "5"
    deploy:
      replicas: 1
      placement:
        constraints: [node.labels.mysql8-hd03 == true]
volumes:
  mysql-data-hd03:
    external: true

根据配置需求创建数据卷,
In hd03,

docker volume create mysql-data-hd03

根据配置需求创建数据存放目录,
In hd03,

mkdir -p /data/docker/container-data/mysql8/conf

根据配置需求创建MySQL主配置文件,

vim /data/docker/container-data/mysql8/conf/my.cnf

加入如下配置,

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES
default-time_zone = '+8:00'
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
group_concat_max_len=10000000
wait_timeout = 600
interactive_timeout = 600
max_connections = 4000
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

根据配置的需求设置运行标记,
In hd01,

docker node update --label-add mysql8-hd03=true hd03.cmdschool.org

2.3.2 部署服务

In hd01,

docker stack deploy -c /data/docker/yml/mysql8-hd03-stack.yml mysql8

2.3.3 测试MySQL服务

In hd03,

docker exec -it $(docker container ls | grep ' mysql8_hd03' | awk '{print $1}') bash

然后,我们使用如下命令登录数据库,

mysql -uroot -p'mysqlpwd'

可使用如下命令查看当前的库,

show databases;

另外,直接在物理主机安装MySQL客户端亦可,

sudo yum install -y mariadb

登录数据库

mysql -uroot -p -h'mysqlpwd' hd03.cmdschool.org

参阅文档
=====================

官方参阅
————
https://hub.docker.com/_/mysql
https://hub.docker.com/_/adminer

文件兼容性参考
————–
https://docs.docker.com/compose/compose-file/

没有评论

发表回复

Docker
如何部署Docker Nginx 1.20.2?

1 前言 一个问题,一篇文章,一出故事。 本章将完成Docker Nginx的基础部署。 2 最佳实 …

Docker
如何打包Docker Nginx 1.20.2?

1 前言 一个问题,一篇文章,一出故事。 由于docker hub原版本的nginx镜像过于精简,于 …

Docker
如何部署Docker Kibana 7.13.2?

1 前言 一个问题,一篇文章,一出故事。 本章将实现启用Docker Kibana 7.13.2的部 …