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/11/13 9:45:57 阅读更多 →
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/11/11 13:39:30 阅读更多 →
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/10/25 10:19:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻