暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

精品,Windows Server 2022 上安装 MySQL 5.7.21 多实例的最完整指南

韩公子的Linux大集市 2025-05-03
288

以下是 Windows Server 2022 上安装 MySQL 5.7.21 多实例的最完整指南,涵盖从安装、配置、初始化到生产优化的所有细节。
适用于 16GB 内存服务器,包含完整参数说明及字符集强制规则(UTF8MB4
)。


一、准备工作

1. 下载与目录规划

  • MySQL ZIP包下载

    从 MySQL Archives 选择 mysql-5.7.21-winx64.zip
  • 目录规划
    C:\
    ├── mysql-5.7.21          # MySQL主程序目录(解压到此)
    └── mysql-instances       # 多实例根目录
        ├── instance1         # 实例1
        │   ├── data          # 数据目录(需手动创建)
        │   └── my.ini        # 配置文件
        └── instance2         # 实例2
            ├── data
            └── my.ini

2. 解压主程序

# 解压下载的ZIP包到C:\mysql-5.7.21目录


二、配置多实例文件

1. 实例1配置文件 (C:\mysql-instances\instance1\my.ini
)

[client]
port=3306
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
prompt=(\\u@\\h:\p) [\\d]>\\_

[mysqld]
# =================== 核心参数 ===================
port=3306
basedir=C:/mysql-5.7.21
datadir=C:/mysql-instances/instance1/data
socket=mysql-instance1.sock
server-id=1# 主从复制需唯一

# ======== 字符集强制配置 ========
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=1

# ======== 内存与连接优化 ========
max_connections=800# 最大连接数(按业务调整)
innodb_buffer_pool_size=5G   # 关键参数(占内存60%)
innodb_log_buffer_size=64M
key_buffer_size=256M         # MyISAM缓存(非必要可降低)
thread_cache_size=100# 线程缓存(max_connections * 25%)
table_open_cache=2000# 打开表的缓存数量
tmp_table_size=256M
max_heap_table_size=256M
query_cache_type=0# 关闭查询缓存(生产建议)
query_cache_size=0

# ======== InnoDB引擎优化 ========
innodb_flush_log_at_trx_commit=1# 数据安全优先(1=每次提交刷盘)
innodb_flush_method=O_DIRECT        # 避免双缓冲
innodb_file_per_table=1# 启用独立表空间
innodb_log_file_size=1G             # 日志大小(建议缓冲池25%~50%)
innodb_log_files_in_group=2# 日志组数量
innodb_io_capacity=2000# SSD建议2000-4000
innodb_thread_concurrency=0# 自动调整并发
innodb_read_io_threads=8# 读线程数(SSD建议8-16)
innodb_write_io_threads=8# 写线程数
innodb_purge_threads=4# 清理线程数

# ======== 日志与安全 ========
log-error=error.log                # 错误日志路径
slow_query_log=1# 开启慢查询
slow_query_log_file=slow.log       # 慢查询日志路径
long_query_time=2# 慢查询阈值(秒)
log-bin=mysql-bin                  # 二进制日志(主从必需)
expire_logs_days=7# 自动清理7天前binlog
binlog_format=row                  # 行级复制模式
binlog_row_image=full
skip_name_resolve=1# 禁用DNS解析
secure_file_priv=C:/secure         # 限制文件导入导出路径
local_infile=0# 禁止本地文件加载

# ======== 网络与超时 ========
max_allowed_packet=256M            # 允许最大数据包
wait_timeout=300# 非交互连接超时(秒)
interactive_timeout=300# 交互连接超时(秒)

# ======== 安全加固 ========
symbolic-links=0# 禁用符号链接
performance_schema=ON# 启用性能监控
explicit_defaults_for_timestamp=1# 显式时间戳声明
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION  # 严格模式

[mysqld_safe]
log-error=error.log

2. 实例2配置文件 (C:\mysql-instances\instance2\my.ini
)

# 差异部分:
[client]
port=3307

[mysqld]
port=3307
server-id=2
datadir=C:/mysql-instances/instance2/data
socket=mysql-instance2.sock
log-bin=mysql-bin2                # 二进制日志文件名区分
slow_query_log_file=slow2.log     # 日志文件独立


三、初始化与安装服务

1. 初始化数据目录

# 以管理员身份运行CMD(必须!)
# ---------------------------
# 实例1初始化(生成随机密码)
cd C:\mysql-5.7.21\bin
mysqld --defaults-file=C:\mysql-instances\instance1\my.ini --initialize --console
# 输出末尾会显示临时root密码(如:`root@localhost: abcdefgh1234`)

# 实例2初始化
mysqld --defaults-file=C:\mysql-instances\instance2\my.ini --initialize --console

2. 安装Windows服务

# 实例1服务安装
mysqld install MySQLInstance1 --defaults-file="C:\mysql-instances\instance1\my.ini"

# 实例2服务安装
mysqld install MySQLInstance2 --defaults-file="C:\mysql-instances\instance2\my.ini"

3. 启动服务

net start MySQLInstance1
net start MySQLInstance2


四、首次登录与密码重置

1. 连接数据库

# 连接实例1(使用初始随机密码)
mysql -u root -P 3306 -p --protocol=tcp

2. 修改root密码

ALTERUSER'root'@'localhost' IDENTIFIED BY'YourNewStrongPassword!';
FLUSH PRIVILEGES;


五、验证与调优

1. 检查字符集

SHOW VARIABLES LIKE'character_set%';
SHOW VARIABLES LIKE'collation%';
-- 确保所有值均为 `utf8mb4` 及 `utf8mb4_unicode_ci`

2. 检查实例运行状态

# 查看服务状态
sc query MySQLInstance1
sc query MySQLInstance2

# 检查端口监听
netstat -ano | findstr :3306
netstat -ano | findstr :3307


六、生产环境必做操作

1. 安全加固

  • 创建专用业务账号(禁止使用root远程登录):
    CREATEUSER'app_user'@'%' IDENTIFIED BY'SecurePass123!';
    GRANTSELECTINSERTUPDATEON your_db.*TO'app_user'@'%';

  • 配置防火墙规则:仅允许应用服务器IP访问3306/3307端口。

2. 备份策略

  • 物理备份
    (推荐 Percona XtraBackup):
    # 备份实例1
    xtrabackup --backup --defaults-file=C:\mysql-instances\instance1\my.ini --target-dir=D:\backup\instance1

  • 逻辑备份
    mysqldump -u root -P 3306 -p --single-transaction --routines --events --databases your_db > backup.sql

3. 监控配置

  • Prometheus + Grafana
    :使用 mysqld_exporter
     监控指标。
  • 慢查询分析
    :定期使用 pt-query-digest
     分析 slow.log

七、常见问题处理

1. 服务启动失败排查

  • 检查错误日志
    C:\mysql-instances\instance1\error.log
  • 常见错误
    • 端口冲突:netstat -ano | findstr :3306
       确认端口未被占用。
    • 权限不足:确保以管理员身份运行CMD。
    • 路径错误:检查 my.ini
       中 datadir
       是否实际存在。

2. 卸载服务

# 停止并删除服务
net stop MySQLInstance1
sc delete MySQLInstance1


附录:参数说明表

参数
说明
推荐值(16GB服务器)
innodb_buffer_pool_size
InnoDB缓冲池大小(核心)
5G(单实例)
innodb_flush_log_at_trx_commit
事务日志写入模式
1(最高安全)
max_connections
最大允许连接数
800(根据业务调整)
thread_cache_size
线程缓存数量
100~200
innodb_io_capacity
磁盘IO能力(SSD适用)
2000~4000
slow_query_log
开启慢查询日志
1(开启)
log-bin
二进制日志(主从必需)
必开

通过以上步骤,您已完成 高可用、生产级、UTF8MB4兼容的 MySQL 多实例部署


文章转载自韩公子的Linux大集市,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论