如何部署Docker MySQL 5.6.34?
- By : Will
- Category : Docker, MySQL & MariaDB
Docker
1 基础知识
一个问题,一篇文章,一出故事。
本章将实现Docker MySQL 8.0的部署。
2 最佳实践
2.1 部署Docker集群
如果你尚未部署Docker集群环境,请参阅如下章节部署,
2.2 部署前的准备
In hd01,
cd /data/docker/images/ docker load -i mysql:5.6.34.tar docker tag mysql:5.6.34 hd01.cmdschool.org:5000/mysql:5.6.34 docker push hd01.cmdschool.org:5000/mysql:5.6.34
另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,
docker pull mysql:5.6.34 docker save mysql:5.6.34 -o mysql:5.6.34.tar
另外,其他版本请从以下链接下载,
https://hub.docker.com/_/mysql
2.3 部署MySQL
In hd01
2.3.1 创建服务配置文件
In hd01,
vim /data/docker/yml/mysql5.6.34-hd01-stack.yml
加入如下配置,
version: '3.6'
services:
hd01-mysql:
image: 'hd01.cmdschool.org:5000/mysql:5.6.34'
ports:
- target: 3306
published: 3306
protocol: tcp
mode: host
environment:
- 'MYSQL_ROOT_PASSWORD=mysqlpwd'
volumes:
- /etc/localtime:/etc/localtime
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.mysql5.6.34-hd01 == true]
根据配置的需求设置运行标记,
In hd01,
docker node update --label-add mysql5.6.34-hd01=true hd01.cmdschool.org
2.3.2 部署服务
In hd01,
docker stack deploy -c /data/docker/yml/mysql5.6.34-hd01-stack.yml hadoop-platform
2.4 设置MySQL数据本地化
In hd01,
2.4.1 修改服务配置文件
vim /data/docker/yml/mysql5.6.34-hd01-stack.yml
根据配置需求创建MySQL主配置文件,
version: '3.6'
services:
hd01-mysql:
image: 'hd01.cmdschool.org:5000/mysql:5.6.34'
ports:
- target: 3306
published: 3306
protocol: tcp
mode: host
environment:
- 'MYSQL_ROOT_PASSWORD=mysqlpwd'
volumes:
- /etc/localtime:/etc/localtime
- /data/docker/container-data/mysql5.6.34/conf:/etc/mysql
- /data/docker/container-data/mysql5.6.34/data:/var/lib/mysql
- /data/docker/container-data/mysql5.6.34/log:/var/log/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.mysql5.6.34-hd01 == true]
根据配置的需求,你需要执行如下命令创建本地化文件夹并复制当前的服务配置,
mkdir -p /data/docker/container-data/mysql5.6.34/
docker cp $(docker container ls | grep mysql:5.6.34 | awk '{print $1}'):/etc/mysql /data/docker/container-data/mysql5.6.34/conf
如果是尚未使用的服务,数据库的数据和日志目录可以直接重新创建,
mkdir -p /data/docker/container-data/mysql5.6.34/data mkdir -p /data/docker/container-data/mysql5.6.34/log
2.4.2 重新部署服务
docker service rm $(docker service ls | grep mysql:5.6.34 | awk '{print $1}')
docker stack deploy -c /data/docker/yml/mysql5.6.34-hd01-stack.yml hadoop-platform
2.5 优化服务参数
2.5.1 进入容器内部测试
In hd01,
vim /data/docker/container-data/mysql5.6.34/conf/conf.d/hadoop.cnf
加入优化的配置参数,
[mysqld] # Recommended in standard MySQL setup sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES transaction-isolation = READ-COMMITTED # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links = 0 key_buffer_size = 32M max_allowed_packet = 32M thread_stack = 256K thread_cache_size = 64 query_cache_limit = 8M query_cache_size = 64M query_cache_type = 1 max_connections = 550 #expire_logs_days = 10 #max_binlog_size = 100M #log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system #and chown the specified folder to the mysql user. log_bin=/var/lib/mysql/mysql_binary_log server-id=1 # For MySQL version 5.1.8 or later. Comment out binlog_format for older versions. binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M # InnoDB settings innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 64M innodb_buffer_pool_size = 4G innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_file_size = 512M
2.5.2 重新部署服务
docker service rm $(docker service ls | grep mysql:5.6.34 | awk '{print $1}')
docker stack deploy -c /data/docker/yml/mysql5.6.34-hd01-stack.yml hadoop-platform
2.6 测试MySQL服务
2.6.1 进入容器内部测试
In hd01,
docker exec -it $(docker container ls | grep 'mysql:5.6.34' | awk '{print $1}') bash
然后,我们使用如下命令登录数据库,
mysql -uroot -p'mysqlpwd'
可使用如下命令查看当前的库,
show databases;
2.6.2 物理主机安装MySQL客户端测试
In hd01,
sudo yum install -y mariadb
登录数据库
mysql -uroot -p -h'mysqlpwd' hd01.cmdschool.org
参阅文档
=====================
官方参阅
————
https://hub.docker.com/_/mysql
https://hub.docker.com/_/adminer
文件兼容性参考
————–
https://docs.docker.com/compose/compose-file/
没有评论