07-Mysql容器环境搭建

简介: 本文介绍了MySQL的Docker环境搭建全过程,因CPU兼容性问题选用8.4.0-oraclelinux8镜像,详细说明了容器卷映射、配置文件设置、容器启动及数据库导入方法,并涵盖用户权限配置、数据备份与恢复、程序连接配置等关键操作,助力高效部署与管理MySQL数据库。

Mysql环境搭建

Docker镜像

Mysql的官方镜像中,当前的LTS版本是8.4.1,基于的Linux版本是Oracle Linux9,但是客户提供的服务器的CPU不支持 x86_64 V2,只支持 x86_64,所以不能使用该版本。故采用 8.4.0-oraclelinux8 版本的镜像。

docker pull mysql:8.4.0-oraclelinux8


准备映射的容器卷

Mysql需要映射出来的容器卷有:

  • /var/log/mysql:存储日志信息
  • /var/lib/mysql:存储数据库数据
  • /etc/mysql/conf.d:存储配置信息
  • /root/mysql_workspace/mysql-files:用于mysql的LOAD DATA INFILE导入数据


准备对应文件夹:

mkdir -p /root/mysql_workspace/log
mkdir -p /root/mysql_workspace/data
mkdir -p /root/mysql_workspace/conf
mkdir -p /root/mysql_workspace/mysql-files


准备配置文件

/root/mysql_workspace/conf文件夹(即映射到容器的/etc/mysql/conf.d文件夹)中创建MySql的配置文件my.cnf

[client]
default-character-set=utf8mb4 
[mysqld]
collation_server = utf8mb4_bin
character_set_server = utf8mb4
skip-name-resolve 
log_bin_trust_function_creators=1
lower_case_table_names=1
max_connections=500
table_open_cache=10000
group_concat_max_len=100000
# innodb日志文件大小,不要超过可用内存的一半
innodb_log_file_size = 2G
# 缓存池大小,一般设置为可用内存的60% - 80%
innodb_buffer_pool_size = 4G
# 开启慢查询日志,慢查询时间阈值设置为5秒,日志路径设置到/var/lib/mysql下
slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/lib/mysql/slow_query.log
# bin日志保存时间(天,旧版5.x的mysql可用)
expire_logs_days = 3
# bin日志保存时间(秒,8.x的mysql可用)
binlog_expire_logs_seconds=86400


启动容器

启动mysql-master容器:

docker run -d \
  -p 8306:3306 \
  --name mysql-master \
  --privileged=true \
  --restart always \
  -v /root/mysql_workspace/log:/var/log/mysql \
  -v /root/mysql_workspace/data:/var/lib/mysql \
  -v /root/mysql_workspace/conf:/etc/mysql/conf.d \
  -v /root/mysql_workspace/mysql-files:/var/lib/mysql-files \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql:8.4.0-oraclelinux8


预警Mysql数据库导入

创建用户和数据库

进入容器:

docker exec -it mysql-master /bin/sh

使用root用户登录数据库:

mysql -uroot -proot

创建用户、数据库、授权:

create user 'myproject'@'%' identified by 'myproject';  -- 创建用户
create database myproject character set utf8mb4  DEFAULT COLLATE utf8mb4_bin;  -- 创建数据库,使用utf8mb4编码,排列方式采用utf8mb4_bin(区分大小写的排列方式)
grant all privileges on myproject.* to 'myproject'@'%';  -- 授权myproject用户对myproject库的权限
-- sql文件中,创建的function需要使用super权限
grant SUPER on *.* to 'myproject'@'%';   -- 授权SUPER权限时,需要授权*.*
grant SYSTEM_USER on *.* to 'myproject'@'%';   
grant select on mysql.help_topic to 'myproject'@'%';  -- 授权使用行转列函数
GRANT FILE ON *.* TO 'myproject'@'%'; -- 授权做Load data infile
-- 刷新权限
flush privileges;
-- 查看授权
SHOW GRANTS FOR 'myproject'@'%';


导入数据

将公司产品的myproject.sql文件上传到服务器上,导入到mysql-master容器中:

docker cp myproject.sql mysql-master:/

进入docker容器:

docker exec -it mysql-master bash

使用myproject用户登录:

# -u用户名 -p密码 数据库名 -A快速打开(不加该参数时mysql会先读取一遍这个库的所有表用于提示)
mysql -umyproject -pmyproject myproject -A

使用myproject数据库,导入:

use myproject;
source /myproject.sql


程序应用中配置连接

context.xml

<Resource name="jdbc/default" auth="Container"
              type="javax.sql.DataSource" maxTotal="30" maxIdle="10" maxWaitMillis="100000"
              testOnBorrow="false" validationQuery="select 1" testWhileIdle="true" timeBetweenEvictionRunsMillis="30000" numTestsPerEvictionRun="10"
              removeAbandonedOnBorrow="true" removeAbandonedTimeout="60000"
              logAbandoned="true" username="myproject" password="myproject"
              driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://192.168.xxx.xxx:8306/myproject?autoReconnect=true" />


数据库备份

导出

Mysql使用mysqldump进行数据库备份。

常用语句示例:

# 备份全部数据库的数据和结构
mysqldump -uroot -proot -A > /data/mydb.sql
# 备份mydb数据库的数据和机构
mysqldump -uroot -proot mydb > /data/mydb.sql
# -t 只备份表数据
# -d 只备份表结构
mysqldump -uroot -proot mydb -t > /data/mydb.sql
# 备份多个数据库,使用--databases指定
mysqldump -uroot -proot --databases db1 db2 > /data/mydb.sql
# 备份数据库的指定表 t1、t2
mysqldump -uroot -proot mydb t1 t2 > /data/mydb.sql
# 导出存储过程
# -ntd 不导出表结构和数据
mysqldump  -uroot -proot -ntd -R myproject > /data/mydb.sql


导入

导入方式1 :

在命令行直接进行导入

mysql -umyproject -pmyproject myproject < /data/mydb.sql


导入方式2:

登入mysql之后,通过sql的source指令及逆行还原:

source /data/mydb.sql
目录
相关文章
|
1月前
|
Java Maven 数据安全/隐私保护
06-nexus私仓环境搭建
本文详细介绍Nexus Repository Manager OSS的安装与配置,涵盖JDK环境准备、服务部署、用户创建及启动操作。指导用户搭建Maven和Docker私有仓库,实现jar包与镜像的上传下载,并配置匿名访问与本地客户端信任。支持多种仓库类型,适用于企业级制品管理。
154 0
|
存储 人工智能 测试技术
图像相似度比较之 CLIP or DINOv2
图像相似度比较之 CLIP or DINOv2
|
开发工具 git
Gitlab配置mirrorRepository 镜像仓库
Gitlab配置mirrorRepository 镜像仓库 🔊业务场景📆1.在a项目中点击settings-》repository-》mirroring repositories📌tips🧣最后的话
1197 0
|
1月前
|
网络协议
02 | 协议:怎么设计可扩展且向后兼容的协议?
本文深入讲解RPC协议的设计原理,从“透明化”出发,剖析协议在应用层的作用。通过对比HTTP协议,揭示RPC为何需设计私有、高效、可扩展的协议,并详解消息边界、序列化方式、协议头结构及扩展机制,强调协议设计中兼容性与性能的平衡,助力构建高性能分布式系统。(238字)
64 5
 02 | 协议:怎么设计可扩展且向后兼容的协议?
|
1月前
|
存储 开发工具 git
05-Gitlab容器环境搭建
本文介绍如何通过Docker搭建Gitlab CE(社区版)环境。包含拉取镜像、创建持久化目录、运行容器并映射配置、数据和日志卷,以及访问Gitlab并初始化项目的方法。详细说明了SSH与HTTP访问配置、初始密码获取,并提供本地代码上传的两种方式,帮助快速部署并使用私有代码仓库。
41 1
|
1月前
|
运维 Linux Docker
04-Docker常用命令 启动类命令
本文介绍了Docker常用命令,包括启动、停止、重启、状态查看及开机自启等服务管理命令;镜像的查看、搜索、下载、删除与空间分析;虚悬镜像概念及命令自动补全配置方法。同时涵盖帮助文档查询、后台运行容器技巧及yum仅下载依赖的实用场景,适用于Docker初学者和日常运维参考。
107 3
|
1月前
|
存储 NoSQL 算法
10-Docker安装Redis
本文介绍Docker安装Redis单机与集群部署,涵盖配置映射、数据持久化及3主3从集群搭建。深入解析Redis集群存储算法:哈希取余、一致性哈希与哈希槽,重点说明槽位分配机制及16384个槽的设计原理,并演示主从扩缩容操作流程。
183 0
|
1月前
|
存储 安全 API
07-nexus搭建docker私仓
本文介绍如何使用Nexus搭建Docker私有仓库,包括启用Docker Realm、创建Blob存储、配置docker-hosted仓库及端口设置。同时涵盖客户端镜像的导出导入、配置HTTP不安全仓库、登录认证、镜像打标与推送等完整流程,实现企业内网镜像的安全管理与分发。
69 1
|
1月前
|
存储 Ubuntu 安全
05-容器命令 新建启动容器
本文介绍了Docker容器的常用操作命令,包括创建启动容器、端口映射、交互式与守护式容器的运行方式,以及容器的启停、日志查看、文件拷贝、数据卷挂载、镜像提交等核心功能,涵盖实际使用中的参数说明与注意事项,帮助用户高效管理Docker容器。
350 0
 05-容器命令 新建启动容器
|
8月前
|
数据可视化 API Swift
全模态图像模型Nexus-Gen对齐GPT-4o!同时搞定,数据、训练框架、模型全面开源
OpenAI GPT-4o发布强大图片生成能力后,业界对大模型生图能力的探索向全模态方向倾斜,训练全模态模型成研发重点。
376 17

热门文章

最新文章