使用 docker 一键部署 MySQL

目录

[1. 前期准备](#1. 前期准备)

[2. 导入镜像](#2. 导入镜像)

[3. 创建部署脚本文件](#3. 创建部署脚本文件)

[4. MySQL 服务器配置文件模板](#4. MySQL 服务器配置文件模板)

[5. 执行脚本创建容器](#5. 执行脚本创建容器)

[6. 后续工作](#6. 后续工作)

[7. 基本维护](#7. 基本维护)


1. 前期准备

新部署前可以从仓库(repository)下载 MySQL 镜像,或者从已有部署中的镜像生成文件:

复制代码
# 查看当前本地镜像
docker images
# 生成本地镜像文件
docker save <IMAGE ID> -o mysql_8023.tar

2. 导入镜像

复制代码
# 在新部署的机器上导入镜像
docker load -i mysql_8023.tar
docker images

3. 创建部署脚本文件

mysql-deploy.sh 文件内容如下:

复制代码
#!/bin/bash

# 生成目录
mkdir -p /usr/local/docker/mysql/mysql-files
mkdir -p /usr/local/docker/mysql/conf
mkdir -p /usr/local/docker/mysql/logs
mkdir -p /usr/local/docker/mysql/data

# 将配置文件复制到相应目录
cp /root/my.cnf.template /usr/local/docker/mysql/conf/my.cnf

# 修改属主
chown -R polkitd:root /usr/local/docker/mysql/

# 创建容器
docker run -p 3306:3306 \
    -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
    -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=root \
    --name mysql \
    --restart=always \
    -e TZ=Asia/Shanghai \
    -d cbe8815cbea8

4. MySQL 服务器配置文件模板

my.cnf.template 文件内容如下:

复制代码
[mysqld]
max_allowed_packet = 1G
explicit_defaults_for_timestamp=0
lower_case_table_names=1
log_timestamps=SYSTEM
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
binlog_expire_logs_seconds=259200
secure_file_priv=''
log_bin_trust_function_creators=on
character-set-server = utf8mb4
default_authentication_plugin=mysql_native_password
datadir=/var/lib/mysql/
socket=/var/run/mysqld/mysqld.sock

wait_timeout=30
innodb_buffer_pool_size = 4G
max_connections = 1000

default-time-zone = '+8:00'

port = 3306
skip-name-resolve 

innodb_print_all_deadlocks=1
log_output='table'

server-id = 2955

innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

gtid-mode = off

local_infile=0
log_error='/var/lib/mysql/master.err'
skip_symbolic_links=yes

[mysqldump]
quick
max_allowed_packet = 1G

[mysqld_safe]
open-files-limit = 8192

5. 执行脚本创建容器

复制代码
./mysql-deploy.sh

6. 后续工作

复制代码
# 进入容器
docker exec -it mysql /bin/bash
# 登录 MySQL
mysql -uroot -proot -S /var/lib/mysql/mysqld.sock
# 创建用户
create user dba identified by '123456';
grant all on *.* to dba with grant option;

7. 基本维护

复制代码
# 查看镜像
docker images
# 查看容器
docker ps
# 查看容器详细信息
docker inspect <CONTAINER ID>
# 重启容器
docker restart mysql
# 停止容器
docker stop mysql
# 删除容器
docker rm mysql
相关推荐
007php0072 分钟前
百度面试题解析:微服务架构、Dubbo、Redis及其一致性问题(一)
redis·百度·docker·微服务·容器·职场和发展·架构
Ytadpole40 分钟前
MySQL 数据库优化设计:优化原理和数据库表设计技巧
数据库·mysql·优化·索引·查询·检索·表设计
Boop_wu2 小时前
[MySQL] 基础操作
数据库·mysql
阑梦清川2 小时前
es的docker部署和docker相关的可可视化面板工具介绍
大数据·elasticsearch·docker
小糖学代码3 小时前
MySQL:14.mysql connect
android·数据库·mysql·adb
我狸才不是赔钱货3 小时前
容器:软件世界的标准集装箱
linux·运维·c++·docker·容器
阑梦清川5 小时前
docker入门教程--部署nginx和tomcat
nginx·docker·tomcat
安卓开发者5 小时前
Docker命令大全:从入门到精通
docker·容器·eureka
可观测性用观测云5 小时前
阿里云 RDS MySQL 可观测性最佳实践
mysql
白云偷星子6 小时前
MySQL笔记14
数据库·笔记·mysql