MySQL8 Docker容器化部署之x86-64架构(含备份)
一、 简介本文介绍如何在 x86-64 架构的服务器上安装并配置MySQL8涵盖目录规划、镜像拉取、容器启动与数据备份等关键步骤帮助读者快速完成生产可用的部署。二、详解1. 创建目录创建安装目录、数据目录与备份目录。mkdir-p/opt/software/mysql8/{conf,logs,init,secrets,scripts}# 安装目录mkdir-p/data/mysql8/{data,backup}# 数据目录、备份数据存放目录2、编辑docker-compose.ymlcd/opt/software/mysql8vimdocker-compose.yml# 内容如下复制粘贴即可---# 定义密钥secrets:passwd_root:file:./secrets/passwd_root.txtpasswd_common:file:./secrets/passwd_common.txt# 子网networks:mysqlnet:driver:bridgeipam:config:-subnet:172.26.0.0/24# 服务services:mysql8:container_name:mysql-commonimage:mysql:8.0.45user:rootrestart:unless-stoppedprivileged:true# 授予容器最高系统权限获得对宿主机的完全访问控制权ports:-30096:3306# 宿主机指定网卡映射volumes:-/data/mysql8/data:/var/lib/mysql# 数据目录挂载-./conf/my.cnf:/etc/my.cnf:ro# 配置文件只读挂载不允许容器内对其写操作-./logs:/var/log/mysql-./init:/docker-entrypoint-initdb.d# 挂载初始化目录容器首次启动时会自动执行此目录下的所有文件 sql、sh-/etc/localtime:/etc/localtime:rosecrets:# 挂载secrets; 默认挂载至容器内的 /run/secrets/ 路径-passwd_root-passwd_commonenvironment:TZ:Asia/Shanghai# MySQL镜像启动时会先加载MYSQL_ROOT_PASSWORD_FILE变量, 然后把文件内容转换成 MYSQL_ROOT_PASSWORD, 并且会把MYSQL_ROOT_PASSWORD_FILE变量unset掉MYSQL_ROOT_PASSWORD_FILE:/run/secrets/passwd_rootMYSQL_USER_PASSWORD_FILE:/run/secrets/passwd_commonhealthcheck:test:[CMD-SHELL,MYSQL_PWD\$$(cat /run/secrets/passwd_root)\ mysql -h 127.0.0.1 -uroot --protocolTCP -e SELECT 1 /dev/null 21 || exit 1]interval:10stimeout:5sretries:5start_period:60snetworks:-mysqlnet# 备份服务mysqlbackup:image:mydumper/mydumper:v0.14.5-3user:rootprofiles:[backup]# 表示这个服务不会随着up -d 启动depends_on:mysql8:condition:service_healthysecrets:-passwd_commonenvironment:TZ:Asia/ShanghaiMYSQL_HOST:mysql8MYSQL_PORT:3306MYSQL_USER:commonMYSQL_USER_PASSWORD_FILE:/run/secrets/passwd_commonvolumes:-/etc/localtime:/etc/localtime:ro-/data/mysql8/backup:/backup-./scripts/mydumper_backup.sh:/usr/local/bin/mydumper_backup.sh:rocommand:[/bin/bash,/usr/local/bin/mydumper_backup.sh]networks:-mysqlnet...2、编辑my.cnfvim./conf/my.cnf# 内容如下复制粘贴即可[client]default-character-setutf8mb4 socket/var/lib/mysql/mysql.sock[mysql]default-character-setutf8mb4[mysqld]usermysql autocommit1datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock pid-file/var/log/mysql/mysqld.pid log-error/var/log/mysql/mysqld.log symbolic-links0character-set-serverutf8mb4#binloglog-binbin binlog_cache_size16M binlog_formatROW binlog_row_imageFULL max_binlog_cache_size1GB # 设置单个 binlog 文件的最大大小 max_binlog_size300M#binlog日志保留时间单位秒30天binlog_expire_logs_seconds2592000ft_min_word_len4connect_timeout600interactive_timeout1800wait_timeout600# 启用GTID gtid_modeON enforce_gtid_consistencyON group_concat_max_len102400lower-case-table_names1character-set-serverutf8mb4 collation-serverutf8mb4_general_cidefault-storage-engineinnodb # 密码认证插件 default_authentication_pluginmysql_native_passworddefault-time-zone08:00slow_query_log1#输出死锁 innodb_print_all_deadlocks1long_query_time10max_connections4096max_connect_errors1024max_allowed_packet64M back_log512interactive_timeout3600sort_buffer_size2M join_buffer_size2M read_buffer_size2M read_rnd_buffer_size2M thread_cache_size256table_open_cache10000max_heap_table_size64M tmp_table_size64M thread_stack192KB local_infile0skip-name-resolve skip-external-locking#innodbinnodb_buffer_pool_size2048M#ibdata1的数据设置应该和本地ibdata1大小的一致innodb_data_file_pathibdata1:1G;ibdata2:1G:autoextend innodb_temp_data_file_pathibtmp1:12M:autoextend:max:5G innodb_read_io_threads8innodb_write_io_threads8innodb_file_per_table1#将InnoDB的日志刷新方式调整为O_DIRECT可以减少数据在缓存和磁盘之间的复制 innodb_flush_methodO_DIRECT #将InnoDB的日志刷新策略调整为每秒刷新可以提高性能 innodb_flush_log_at_trx_commit2innodb_lock_wait_timeout120innodb_thread_concurrency16innodb_log_buffer_size8M #将InnoDB日志文件大小调整为256M可以减少写入磁盘的次数提高性能 innodb_log_file_size256M innodb_redo_log_capacity268435456innodb_buffer_pool_size4G innodb_log_files_in_group3innodb_max_dirty_pages_pct90innodb_open_files10000skip_replica_start log_replica_updates sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZEROrelay-logrelay.log relay-log-indexslave-relay.index log_bin_trust_function_creators13、编辑初始化所需的文件# 创建密码文件echosuperADMIN_2026./secrets/passwd_root.txt# root密码echocommonADMIN_2026./secrets/passwd_common.txt# common用户密码vim./init/init.sh# 可根据需要修改#! /bin/bashset-euopipefail# 读取common用户密码文件COMMON_PASSWD$(cat$MYSQL_USER_PASSWORD_FILE)# 执行指定SQL可自定义这里只用于创建用户mysql-uroot-p$MYSQL_ROOT_PASSWORDEOF create user common% identified with mysql_native_password by ${COMMON_PASSWD}; grant all privileges on *.* to common% WITH GRANT OPTION; flush privileges; EOF4、创建数据备份脚本vim./scripts/mydumper_backup.sh# 复制粘贴即可#! /bin/bashset-euopipefailCOMMON_PASSWD$(cat$MYSQL_USER_PASSWORD_FILE)DATE$(date%Y-%m-%d-%H-%M)MYSQL_TARNAMEmysqlbackupfunctionMysql_backup(){# 判断目录不存在就创建[-e/backup/${MYSQL_TARNAME}_${DATE}]||mkdir/backup/${MYSQL_TARNAME}_${DATE}# 执行备份备份所有业务库mydumper--host${MYSQL_HOST}--port${MYSQL_PORT}--user${MYSQL_USER}--password${COMMON_PASSWD}\--triggers--routines-E--regex^(?!(information_schema|performance_schema|sys|mysql))\--compress--verbose3--threads8--long-query-guard999999999--outputdir/backup/${MYSQL_TARNAME}_${DATE}cd/backup/tar-zcf${MYSQL_TARNAME}_${DATE}.tar.gz${MYSQL_TARNAME}_${DATE}--remove-files/dev/null21# 保留最近7天的备份文件find/backup/-typef-ctime7-name*.tar.gz-execrm-f{}\;}Mysql_backup5、拉取镜像# 明确拉取x86架构镜像dockerpull--platformlinux/amd64 mysql:8.0.45dockerpull--platformlinux/amd64 mydumper/mydumper:v0.14.5-3# X86_64架构、MySQL 8.0.x6、启动MySQL# 数据目录授权chmod-R755/data/mysql8;chmodx ./init/*.sh ./scripts/*.sh;chmod644secrets/*# 启动MySQLdocker-composeup-dmysql8# 定时备份00 01 * * * /usr/local/bin/docker-compose run--rmmysqlbackup/dev/null21# 若后续修改了配置文件后则重启即可不会影响现有数据docker-composerestart

相关新闻

PingFangSC 字体包:3 步把苹果苹方装进你的网页(6 种字重,2 种格式)

PingFangSC 字体包:3 步把苹果苹方装进你的网页(6 种字重,2 种格式)

PingFangSC 字体包:3 步把苹果苹方装进你的网页(6 种字重,2 种格式) 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFa…

2026/8/26 20:04:45 阅读更多 →
BioJava 3D结构加载完整指南:PDB/mmCIF/MMTF格式速查与AtomCache离线缓存

BioJava 3D结构加载完整指南:PDB/mmCIF/MMTF格式速查与AtomCache离线缓存

BioJava 3D结构加载完整指南:PDB/mmCIF/MMTF格式速查与AtomCache离线缓存 【免费下载链接】biojava :book::microscope::coffee: BioJava is an open-source project dedicated to providing a Java library for processing biological data. 项目地址: https://g…

2026/8/26 20:04:45 阅读更多 →
lyo 浏览器化核心剖析:lib/options.js 默认值推断机制与 package.json lyo 字段配置完全指南

lyo 浏览器化核心剖析:lib/options.js 默认值推断机制与 package.json lyo 字段配置完全指南

lyo 浏览器化核心剖析:lib/options.js 默认值推断机制与 package.json lyo 字段配置完全指南 【免费下载链接】lyo 📦 Node.js to browser - The easy way 项目地址: https://gitcode.com/gh_mirrors/lyo/lyo Lyo(lyo)是一…

2026/8/26 20:04:45 阅读更多 →

最新新闻

VOC+YOLO格式玻璃瓶塑料瓶检测数据集:8943张图片实操指南

VOC+YOLO格式玻璃瓶塑料瓶检测数据集:8943张图片实操指南

简介:目标检测作为计算机视觉的核心任务,其落地效果很大程度上依赖高质量的数据集与合理的标注格式。在数据准备阶段,VOC格式与YOLO格式是两种最常接触的标注规范:VOC通过XML记录目标的绝对坐标,YOLO则采用txt存储归一…

2026/8/26 21:52:57 阅读更多 →
HTML5 Canvas游戏开发实战:从零复刻经典《超级马里奥》

HTML5 Canvas游戏开发实战:从零复刻经典《超级马里奥》

1. 项目概述:当经典游戏遇上现代浏览器十年前,如果你想在电脑上玩《超级马里奥》,大概率得去找个模拟器,下载ROM,再折腾一番配置。但现在,情况完全不同了。得益于HTML5技术的成熟,我们完全可以在…

2026/8/26 21:52:57 阅读更多 →
Visa软件工程师面试全流程与核心考点解析

Visa软件工程师面试全流程与核心考点解析

1. Visa SDE面试全流程解析 作为全球领先的支付技术公司,Visa的软件工程师面试流程以其专业性和业务贴合度著称。整个面试过程通常持续2-3周,采用北美科技公司标准的技术面试结构,但特别强调对金融支付业务场景的理解能力。根据多位面试者的反…

2026/8/26 21:52:57 阅读更多 →
RAG系统精准检索实战:基于元数据与混合检索的支付风控知识库升级

RAG系统精准检索实战:基于元数据与混合检索的支付风控知识库升级

1. 项目缘起:当RAG遇上“标签化”管理 做AI应用的朋友,尤其是搞RAG(检索增强生成)的,估计都经历过这个阶段:吭哧吭哧把一堆文档切块、向量化、塞进向量数据库,满心欢喜地以为大功告成&#xff0…

2026/8/26 21:52:57 阅读更多 →
Python实现A*路径规划算法:从原理到代码实战

Python实现A*路径规划算法:从原理到代码实战

1. 从“寻路”到“最优”:为什么我们需要A*算法?如果你玩过任何一款策略游戏,或者用过地图导航,那你一定对“寻路”这个概念不陌生。从游戏里的小兵绕过树林攻击敌人,到手机地图为你规划出避开拥堵的最快路线&#xff…

2026/8/26 21:52:57 阅读更多 →
Windows平台安装与使用Wget命令行下载工具完整指南

Windows平台安装与使用Wget命令行下载工具完整指南

1. 项目概述:为什么Windows用户需要Wget?在Linux和macOS的世界里,wget是一个如同空气般存在的命令行工具,资深开发者和运维工程师对它再熟悉不过。它是一个非交互式的网络文件下载器,支持HTTP、HTTPS和FTP协议&#xf…

2026/8/26 21:51:56 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →