MySQL 全环境生产快速安装 + 完整配置手册(整合国产银河麒麟适配 + 主从补充版)

**摘要:**本文全面介绍了 MySQL 8.0 在不同操作系统(特别是国产银河麒麟 ARM 架构)下的生产环境部署方案、配置优化、安全加固与高可用实践。内容涵盖四大部署方式(RPM、二进制包、Docker、MSI)的对比与选型口诀,详细拆解了银河麒麟 ARM 离线 RPM 安装的七步流程及各组件作用,提供了适用于 8C16G 服务器的通用 my.cnf 配置模板,补充了基于二进制包的主从复制部署步骤,并给出了安装后的统一安全加固 SQL、备份恢复标准方案以及全环境(含国产麒麟)的专属避坑清单,旨在为运维和开发人员提供一份可直接用于生产的全栈指南。

一、四大部署方案对比(新增国产 ARM 麒麟适配说明)

部署方式 适用系统 生产优点 缺点 最佳场景
yum/apt RPM 包安装 CentOS/RHEL/ 银河麒麟 V10(ARM/x86) 一键安装、自动注册 systemd 服务、统一系统日志、yum 便捷升级、依赖自动处理 多实例部署繁琐;MySQL 官方 yum 源默认仅 x86,ARM 麒麟需单独下载 aarch64 el8 RPM 包 线上业务主从、云服务器、标准国产化生产环境【首选】
Linux 通用二进制 tar.xz/ Windows ZIP 绿色包 Windows Server、全 Linux(含银河麒麟 ARM) 离线可用、自定义安装 / 数据路径、单服务器多版本多实例、跨发行版通用、无系统包管理器冲突 手动创建用户、编写 my.cnf、自建 systemd 服务,步骤多 内网隔离无外网机房、国产 ARM 服务器、一台机器跑多个 MySQL 实例
Docker 容器 Win/Mac/Linux 全平台 一行命令启动、环境隔离、多版本快速切换 IO 性能损耗大、数据持久化需额外规划,不适合高并发核心业务 开发测试、临时验证,严禁承载正式生产库
MSI 图形安装包 Windows Server 可视化向导、自动注册系统服务、新手易上手 安装路径固定、多实例管理困难 Windows 小型内网业务库

生产选型口诀(适配国产银河麒麟)

  1. 银河麒麟 V10 ARM 正式业务、有外网:优先 el8 aarch64 RPM Bundle 离线包(官方 yum 源无 ARM 原生包);
  2. 麒麟内网隔离、一台机器多数据库实例:选 glibc2.28 aarch64 二进制 tar.xz
  3. Windows 服务器、离线环境:ZIP 绿色包;
  4. 本地开发、临时测试:Docker(不做主库);
  5. Mac 仅用于开发,禁止作为生产数据库。

补充:RPM 包 vs 二进制包核心区分(你之前疑问整合)

  1. MySQL el8 RPM 分包(RPM Bundle) 拆分为多个独立 rpm:common、icu 字符集、libs、兼容库、客户端插件、client、server;系统自动分配标准路径/usr/bin/var/lib/mysql/etc/my.cnf,自动创建 mysql 系统用户、生成mysqld.service;卸载可用rpm -e统一清理。 限制:仅适配 RHEL8 系(银河麒麟 V10),ARM 必须下载aarch64架构包,x86 包无法在飞腾 / 鲲鹏服务器运行。
  2. 通用二进制 tar.xz 绿色包 单压缩包整合全部程序、库、字符集,无系统包管理器绑定;所有 Linux 发行版通用,手动自定义basedirdatadir;升级 / 卸载直接删除文件夹,适合国产化批量标准化部署。

二、各环境一键快速生产安装步骤(新增银河麒麟 ARM 专属流程)

方案 1:RPM 在线 yum 安装(x86 CentOS/RHEL,ARM 麒麟不推荐外网 yum)

仅 x86 服务器可用,银河麒麟 ARM 官方 yum 源无原生 MySQL aarch64 包,会报架构缺失。

复制代码
# 导入MySQL8.0 el9源
wget https://dev.mysql.com/get/mysql80-community-release-el9-3.noarch.rpm
rpm -ivh mysql80-community-release-el9-3.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# 一键安装服务端+客户端
yum install -y mysql-community-server
# 启停自启
systemctl start mysqld
systemctl enable mysqld
# 获取初始临时密码
grep 'temporary password' /var/log/mysqld.log
# 安全初始化(删匿名账号、测试库、加固密码)
mysql_secure_installation

方案 2:银河麒麟 V10 ARM 离线 RPM 安装(国产化标准方案)

  1. 前置清理冲突(必须执行)

    卸载系统自带mariadb,避免端口/文件冲突

    rpm -e --nodeps $(rpm -qa | grep mariadb)

    删除旧残留目录

    rm -rf /var/lib/mysql /etc/my.cnf* /var/log/mysqld.log

  2. 上传解压mysql-8.0.xx-1.el8.aarch64.rpm-bundle.tar,按依赖顺序安装最小生产包

    1.公共基础包

    rpm -ivh mysql-community-common-8.0.46-1.el8.aarch64.rpm

    2.icu字符集库

    rpm -ivh mysql-community-icu-data-files-8.0.46-1.el8.aarch64.rpm

    3.核心运行库

    rpm -ivh mysql-community-libs-8.0.46-1.el8.aarch64.rpm

    4.5.x兼容库

    rpm -ivh mysql-community-libs-compat-8.0.46-1.el8.aarch64.rpm

    5.登录加密插件

    rpm -ivh mysql-community-client-plugins-8.0.46-1.el8.aarch64.rpm

    6.客户端运维工具

    rpm -ivh mysql-community-client-8.0.46-1.el8.aarch64.rpm

    7.数据库主服务(最后安装)

    rpm -ivh mysql-community-server-8.0.46-1.el8.aarch64.rpm

1. mysql-community-common

作用:全局公共基础资源包,所有其他 RPM 的底层依赖,必须第一个安装

  1. 内置 MySQL 标准错误提示文本、全球多语言字符集基础文件
  2. 提供系统默认配置模板 /usr/share/mysql/my-default.cnf
  3. 内置数据库内置函数、系统状态常量定义
  4. 存储权限表、系统库基础结构文件 不装后果:所有客户端、服务端 RPM 直接报依赖缺失,安装中断

2. mysql-community-icu-data-files(el8 专属,ARM 麒麟必装)

作用:ICU 国际字符排序库,utf8mb4 完整支持依赖包

  1. 提供 emoji、中日韩复杂字符、多语言校对排序规则
  2. 适配国产中文业务、生僻字存储场景 不装后果:mysqld 服务启动直接失败,字符集初始化报错,数据库无法运行

3. mysql-community-libs

作用:MySQL 核心运行动态链接库

  1. 提供 libmysqlclient.so 底层运行库
  2. 服务端 mysqld、mysql 客户端、备份工具 mysqldump 全部依赖此库
  3. 系统程序、中间件连接数据库的基础驱动文件

4. mysql-community-libs-compat

作用:5.x 版本兼容动态库,向下兼容旧业务程序

  1. 适配老旧 Java、C/C++ 项目、中间件,兼容 MySQL5 系列老驱动
  2. 避免老业务启动报libmysqlclient.so.18类缺失错误
  3. 新项目同样建议安装,消除潜在兼容隐患

5. mysql-community-client-plugins

作用:客户端认证加密插件集合,远程登录必备

  1. 包含 mysql_native_passwordcaching_sha2_password 两种主流登录加密插件
  2. Navicat、DBeaver、业务应用远程连接数据库必须依赖 不装后果:客户端登录报错,无法远程访问数据库

6. mysql-community-client

作用:全套运维客户端命令工具 内置常用命令:

  • mysql:数据库登录交互工具
  • mysqldump:逻辑备份 / 恢复工具
  • mysqladmin:服务状态管理、账号密码修改工具
  • mysqlimport:批量数据导入工具 日常运维、备份、数据库操作全部依赖该包

7. mysql-community-server(核心数据库服务包)

作用:MySQL 数据库主程序,整套部署核心

  1. 主进程 mysqld(InnoDB 存储引擎、连接处理、SQL 解析执行)
  2. 自动创建系统mysql无登录用户、数据目录 /var/lib/mysql、日志目录
  3. 自动生成 systemd 服务文件 /usr/lib/systemd/system/mysqld.service,支持systemctl启停、开机自启
  4. 内置初始化脚本,首次启动自动生成系统库、临时 root 密码

devel、test、embedded 测试包业务服务器无需安装。

  1. 初始化、启动、放行防火墙同通用流程。

方案 3:Ubuntu apt 在线安装(x86)

复制代码
apt update
apt install wget -y
wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
dpkg -i mysql-apt-config_0.8.28-1_all.deb
apt update
apt install -y mysql-server
systemctl enable --now mysql
mysql_secure_installation

方案 4:Windows ZIP 绿色包(离线 Windows)

  1. 解压至无中文、无空格路径D:\mysql80,独立 SSD 创建数据目录E:\mysql_data\3306

  2. 根目录新建my.ini,填入文末通用配置模板;

  3. 管理员 CMD 初始化 + 注册系统服务:

    cd D:\mysql80\bin
    mysqld --initialize --console
    mysqld install MySQL80 --defaults-file="D:\mysql80\my.ini"
    net start MySQL80

  4. 登录修改强密码,执行安全加固 SQL。

方案 5:Linux 通用二进制 tar.xz(银河麒麟 ARM 离线首选,适配主从架构)

适配麒麟 V10 ARM,下载mysql-8.0.xx-linux-glibc2.28-aarch64.tar.xz,glibc2.28 匹配麒麟系统底层库,无版本报错。

复制代码
# 1. 创建专用运行用户,禁止root启动数据库
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
# 2. 解压至程序目录
tar -xf mysql-8.0.xx-linux-glibc2.28-aarch64.tar.xz -C /usr/local/
mv /usr/local/mysql-8.0.xx-linux-glibc2.28-aarch64 /usr/local/mysql80
# 3. 独立磁盘规划数据、binlog、日志目录(生产规范)
mkdir -p /data/mysql/3306/{data,binlog,logs,socket,tmp}
chown -R mysql:mysql /usr/local/mysql80 /data/mysql
# 4. 编写my.cnf,初始化数据库
/usr/local/mysql80/bin/mysqld --defaults-file=/data/mysql/3306/my.cnf --initialize --user=mysql
# 5. 手动编写systemd服务文件,实现开机自启、故障自动重启

该部署方式可直接用于银河麒麟主从复制架构,多实例部署互不干扰。

方案 6:Docker(仅测试,禁止核心生产)

复制代码
docker run -d --name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=Pro@123456 \
mysql:8.0

三、通用生产 my.cnf 完整参数(8C16G 服务器,麒麟 ARM/Windows 通用)

复制代码
[client]
socket=/data/mysql/3306/socket/mysql.sock
default-character-set=utf8mb4
[mysqld]
基础路径配置
port=3306
basedir=/usr/local/mysql80
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/socket/mysql.sock
pid-file=/data/mysql/3306/mysql.pid
log-error=/data/mysql/3306/logs/error.log
字符集、表名大小写适配国产化系统
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
lower_case_table_names=1
性能内存参数
innodb_buffer_pool_size=10G
innodb_log_file_size=2G
innodb_log_buffer_size=64M
max_connections=1000
open_files_limit=65535
Binlog(主从复制、数据恢复强制开启)
log_bin=/data/mysql/3306/binlog/mysql-bin
binlog_format=ROW
sync_binlog=1
expire_logs_days=7
安全加固(等保要求)
default_authentication_plugin=mysql_native_password
local_infile=0
symbolic-links=0
skip-show-database
secure_file_priv=/data/mysql/3306/tmp
validate_password.policy=MEDIUM
validate_password.length=12
慢查询日志优化SQL
slow_query_log=1
slow_query_log_file=/data/mysql/3306/logs/slow.log
long_query_time=1
log_queries_not_using_indexes=1
主从复制专属参数(多实例需修改唯一server-id)
server-id=1
relay-log=/data/mysql/3306/binlog/relay-bin

参数调整要点

  1. 内存参数:服务器物理内存的 50%~70% 分配给innodb_buffer_pool_size
  2. binlog:生产必开,是误删回滚、主从同步唯一依赖;
  3. server-id:单机单实例默认 1,主从环境主库、从库 ID 必须完全不同;
  4. lower_case_table_names=1:适配 Windows 迁移、国产系统,统一表名小写不区分大小写。

四、银河麒麟二进制包部署 MySQL 主从复制 补充(参考 CSDN 博文整合)

基于麒麟 V10 ARM 二进制包部署传统位置点主从,适配国产化业务高可用。

1. 环境前置要求

  • 主、从服务器 MySQL 版本完全一致;
  • 两台机器时间同步(ntpdate ntp.aliyun.com);
  • 防火墙互相放行 3306 端口,SELinux 关闭;
  • 主从配置server-id唯一不重复。

2. 主库 Master 配置

  1. 修改 my.cnf,开启 binlog、设置 server-id

    [mysqld]
    server-id=1
    log_bin=/data/mysql/3306/binlog/mysql-bin
    binlog_format=ROW

  2. 重启数据库生效

    systemctl restart mysqld

  3. 创建专属复制账号,仅授予同步权限(最小权限原则)

    CREATE USER 'repl'@'从库IP' IDENTIFIED BY 'Repl@2026DB';
    GRANT REPLICATION SLAVE ON . TO 'repl'@'从库IP';
    FLUSH PRIVILEGES;

  4. 锁表记录 binlog 位置(导出全量备份)

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS; -- 记录File、Position字段值,后续从库绑定使用

  5. 新开终端导出全库一致性备份

    /usr/local/mysql80/bin/mysqldump -uroot -p --all-databases --single-transaction --master-data=2 > master_full.sql

  6. 备份完成解锁主库

    UNLOCK TABLES;

3. 从库 Slave 配置

  1. my.cnf 设置独立 server-id,开启中继日志

    [mysqld]
    server-id=2
    relay-log=/data/mysql/3306/binlog/relay-bin
    read_only=1 -- 普通业务禁止写入,仅主库写入

  2. 重启数据库,导入主库全量备份

    /usr/local/mysql80/bin/mysql -uroot -p < master_full.sql

  3. 绑定主库同步信息(填入主库 SHOW MASTER STATUS 记录的值)

    CHANGE MASTER TO
    MASTER_HOST='主库IP',
    MASTER_USER='repl',
    MASTER_PASSWORD='Repl@2026DB',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=156;

  4. 启动同步,校验复制状态

    START SLAVE;
    SHOW SLAVE STATUS\G

4. 主从校验标准

必须同时满足:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Seconds_Behind_Master: 0 主库新建库、插入数据,从库可实时同步代表部署成功。

五、安装完成后统一安全加固 SQL(全环境通用)

复制代码
-- 1. 设置高强度root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Pro@MysqlDB2026';
-- 2. 禁止root全网远程登录,仅本地管理
DELETE FROM mysql.user WHERE user='root' AND host != 'localhost';
-- 3. 清理匿名账号、测试库
DELETE FROM mysql.user WHERE user='';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
-- 4. 创建业务专用账号,限制访问IP、最小权限
CREATE USER 'biz_user'@'192.168.1.%' IDENTIFIED BY 'Biz@Data202666';
GRANT SELECT,INSERT,UPDATE,DELETE ON biz_db.* TO 'biz_user'@'192.168.1.%';
FLUSH PRIVILEGES;

网络配套安全规范

防火墙仅放行业务应用服务器 IP 访问 3306,禁止0.0.0.0/0全网开放,杜绝公网直接访问数据库。

六、备份 & 恢复标准方案

1. 逻辑备份 mysqldump(跨系统 / 跨架构通用,麒麟 x86/ARM 迁移首选)

全库定时备份脚本:

复制代码
/usr/local/mysql80/bin/mysqldump -uroot -p --all-databases --single-transaction --routines --triggers --events | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz

恢复命令:

复制代码
gunzip -c xxx.sql.gz | /usr/local/mysql80/bin/mysql -uroot -p

参数说明:

  • --single-transaction:InnoDB 无锁备份,线上不阻塞业务;
  • --routines --triggers --events:同步存储过程、触发器、定时事件。

2. 物理备份 XtraBackup(百 GB 大库)

优势:备份恢复速度极快;限制:同架构系统恢复,ARM 与 x86 之间不能直接拷贝 data 目录,InnoDB 二进制文件跨架构极易损坏;跨麒麟 x86/ARM 迁移必须使用 mysqldump 逻辑导出。

3. 备份误区

  1. mysql -uroot -p db > file.dmp 无法完整备份,缺失建库建表语句;
  2. Oracle / 达梦.dmp 是加密二进制备份,和 mysqldump 导出的 sql 文件完全不互通。

七、全环境 + 国产麒麟专属避坑清单

  1. 架构包区分 :银河麒麟 ARM(飞腾 / 鲲鹏)只能使用aarch64后缀 RPM / 二进制包,x86_64 包会报架构不匹配;el7 包 glibc 版本过低,麒麟 V10 仅支持 el8 包;
  2. RPM 安装前置:必须卸载系统自带 mariadb,否则端口、文件冲突,mysqld 启动失败;
  3. 二进制包硬性规范:必须新建 mysql 系统用户,禁止 root 账号启动数据库;数据目录独立磁盘存放,不要和系统盘共用;
  4. 主从复制红线:主从 MySQL 版本必须一致,server-id 不能重复,binlog 必须开启;
  5. 跨系统迁移:麒麟 ARM ↔ x86、Windows ↔ Linux,一律用 mysqldump 逻辑备份,禁止直接拷贝 data 目录;
  6. 生产禁止项:关闭 binlog、Docker 承载核心业务、root 账号全网开放远程访问、弱密码;
  7. 备份规范:异地留存备份文件,每周执行一次恢复演练,验证备份可用;
  8. 旧服务清理 :RPM 安装后残留mysql.rpmold旧 sysv 脚本可直接删除,无数据风险,避免服务冲突。
相关推荐
yio_yin4 小时前
Spring事务管理(数据一致性)
数据库·sql·spring
前端世界5 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
nianniannnn6 小时前
Qt QMessageBox知识点
开发语言·数据库·qt
—Miss. Z—6 小时前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
Vect__7 小时前
MySQL 数据类型和约束:从字段设计到表结构建模
数据库·mysql
糖果店的幽灵7 小时前
langgraph的分支结构之 - 静态分支详解
java·服务器·数据库·langgraph
张人玉7 小时前
C# WinForms——工厂管理系统(C# WinForms)
数据库·sqlite·c#·winform
AC赳赳老秦8 小时前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw
后端优选官8 小时前
上海Agent开发公司:企业级智能体软件的技术架构与落地评估
数据库·人工智能·架构·软件开发·开发经验·上海