数据库教程FGMT27‑MySQL数据库基础知识与体系架构
前言
本套风哥教程面向数据库工程师、DBA、IT运维人员、云计算工程师、软件开发人员,完整覆盖MySQL基础知识、体系架构、存储引擎、高可用集群架构,同时配套大量可直接复现的实操命令,适配MySQL5.7、MySQL8.0、MySQL8.4、MySQL9.7主流版本。
风哥教程本文主要分为理论原理与实战操作两大模块。理论部分讲解MySQL发展历史、版本差异、物理与逻辑存储结构、内存结构、存储引擎、各类高可用架构原理;实战部分基于两台主机fgedu‑net‑cn1、fgedu‑net‑cn2,硬件规格64G内存,8CPU ,数据根目录统一使用/fgedudb,数据库实例名、库名统一为fgedudb,业务用户名统一使用fgedu,完整演示安装部署、参数调优、SQL开发、备份恢复、主从复制、MHA、MGR、InnoDB Cluster集群部署等全流程。
风哥教程本文学习目标:能够理解MySQL底层运行原理,读懂核心配置参数,独立完成数据库部署、日常运维、故障恢复、高可用集群搭建,具备生产环境MySQL基础运维能力。
学习提示:所有实操命令建议在测试环境执行,生产执行前做好备份校验。
网上搜索风哥教程可以学习全套数据库教程
目录
- MySQL数据库基础知识
1.1 MySQL介绍与发展历程
1.2 MySQL社区版与企业版区别
1.3 MySQL企业版核心功能
1.4 MySQL主要分支版本
1.5 MySQL、Oracle、SQL Server横向对比 - MySQL数据库体系架构
2.1 MySQL整体体系架构分层
2.2 MySQL物理存储结构
2.3 MySQL逻辑存储结构
2.4 数据库与实例的关系
2.5 MySQL进程模型
2.6 MySQL内存结构(64G/8CPU硬件规格参数详解)
2.7 MySQL存储引擎分类
2.8 InnoDB存储引擎深度解析 - MySQL数据库高可用与集群架构
3.1 MySQL高可用常见类型
3.2 主从复制架构、拓扑与业务场景
3.3 MMM架构原理
3.4 MHA架构原理
3.5 Orchestrator、Xenon架构介绍
3.6 不同业务规模高可用架构选型(初创、小型、中型、大型)
3.7 InnoDB Cluster集群架构原理 - 实战操作
4.1 Linux环境MySQL8.4部署(主机fgedu‑net‑cn1)
4.2 my.cnf核心配置文件编写(64G内存8CPU)
4.3 数据库基础SQL实操,库、表、数据类型、CRUD
4.4 用户权限管理实操
4.5 逻辑备份恢复mysqldump/mysqlpump实操
4.6 物理备份XtraBackup实操
4.7 GTID主从复制集群搭建(fgedu‑net‑cn1为主,fgedu‑net‑cn2为从)
4.8 MGR组复制集群部署实操
4.9 InnoDB Cluster集群部署实操 - 风哥针对本文总结
1 MySQL数据库基础知识
1.1 MySQL介绍与发展历程
MySQL是开源关系型数据库管理系统,最初由瑞典MySQL AB公司开发,先后经历Sun公司收购、Oracle公司收购,是Web业务、互联网业务最广泛使用的开源数据库。发展历程大致分为几个阶段:早期4.x版本奠定基础,5.x大规模普及,5.7成为企业长期稳定版本;8.0版本重构数据字典,支持原子DDL,增强InnoDB能力;8.4为当前长期支持LTS版本,企业生产逐步迁移至8.4 LTS版本。
关系数据库核心特征为使用二维表格组织结构化数据,支持事务ACID,支持SQL标准,支持索引、约束,适合业务系统结构化业务数据存储。
风哥 itpux‑com
1.2 MySQL社区版和企业版的区别
MySQL采用双授权模式,社区版Community Edition为GPL开源协议,可免费使用;企业版Enterprise Edition为商业授权,需要购买许可授权。
| 对比项 | 社区版 | 企业版 |
|---|---|---|
| 授权协议 | GPL开源,可免费使用,修改分发受协议约束 | 商业闭源许可,付费购买授权 |
| 基础SQL/InnoDB引擎 | 完整支持 | 完整支持 |
| 官方技术支持 | 无官方技术支持,社区论坛交流 | 7*24官方技术支持,BUG修复补丁优先下发 |
| 企业工具 | 无MySQL Enterprise Backup、监控工具 | 包含企业备份、审计、防火墙、监控工具 |
| 高级特性 | 部分高级特性缺失 | 透明数据加密TDE、审计日志、线程池、内存缓存高级优化等 |
| 适用场景 | 测试环境、中小企业非核心业务 | 生产核心业务,需要官方保障的业务系统 |
1.3 MySQL企业版的功能介绍
- MySQL Enterprise Backup:官方物理热备份工具,支持全量、增量、压缩备份,支持时间点恢复,在线备份不阻塞业务读写。
- 透明数据加密TDE:支持InnoDB表空间加密,磁盘上数据文件密文存储,防止磁盘泄露导致数据泄露。
- 审计日志Audit Log:完整记录数据库登录、DDL、DML操作,满足等保、合规审计需求。
- 线程池Thread Pool:高并发大量短连接场景,降低线程上下文切换开销,提升高并发稳定性。
- 企业监控套件:MySQL Enterprise Monitor,实例监控、告警、SQL分析、性能报告。
- 防火墙:数据库防火墙,拦截非法SQL语句,防止SQL注入攻击。
1.4 MySQL分支版本的发展
Oracle收购MySQL之后,社区开发出多个分支,最主流为MariaDB,Percona Server。
- MariaDB:完全兼容MySQL语法,社区主导开发,新增部分存储引擎,很多Linux发行版默认内置MariaDB,API协议和MySQL高度兼容,但8版本之后出现部分差异性。
- Percona Server:基于MySQL源码增强版本,Percona公司维护,增加性能监控、XtraBackup物理备份工具,运维诊断能力增强,完全兼容MySQL。
- 其他分支:国内部分数据库基于MySQL源码二次开发,适配信创硬件与国产化操作系统。
风哥教程 113257174
1.5 MySQL、Oracle、SQL Server的区别
| 维度 | MySQL | Oracle | SQL Server |
|---|---|---|---|
| 授权模式 | 社区开源+商业企业版 | 全商业付费授权 | 商业授权,Windows生态绑定 |
| 运行平台 | Linux、Windows、国产操作系统,跨平台能力强 | Linux为主,Windows支持,小型机支持 | 主要Windows平台,Linux支持有限 |
| 存储引擎架构 | 插件式存储引擎,InnoDB为默认引擎 | 集成式存储引擎,无插件架构 | 单一存储引擎 |
| 事务能力 | InnoDB完整ACID,支持行锁 | 强大事务,高可用、RMAN备份,容灾能力强 | 完整事务,Windows生态深度集成 |
| 适用业务 | 互联网、Web业务,中小型业务,也可支撑大型分布式业务 | 金融电信核心大型业务,高可靠核心交易 | 微软生态企业业务,.NET业务系统 |
2 MySQL数据库体系架构
2.1 MySQL整体体系架构分层
MySQL架构分为四层:连接层、SQL服务层、存储引擎层、文件系统层。
- 连接层:处理客户端TCP连接、Socket本地连接,完成账号密码身份认证、连接线程管理。
- SQL服务层:接收SQL,语法解析、语义检查、查询优化器生成执行计划,权限校验,查询缓存(8.0已移除查询缓存),调用存储引擎接口。
- 存储引擎层:插件式架构,不同存储引擎实现不同数据读写逻辑,InnoDB为默认存储引擎。
- 文件系统层:磁盘持久化,数据文件、redo log、undo log、binlog、错误日志、慢查询日志,完成磁盘IO读写。
一条SELECT语句完整执行流程:客户端建立连接 → 连接层认证账号 → SQL服务层语法解析、优化器生成执行计划 → 调用InnoDB存储引擎接口 → InnoDB访问内存缓冲池,未命中则读取磁盘数据页 → 返回结果集逐层向上返回给客户端。
网上搜索风哥教程可以学习全套数据库教程
2.2 MySQL物理存储结构
物理存储指磁盘上真实存在的各类文件,数据根目录/fgedudb,实例fgedudb。
- ibdata1系统表空间:共享表空间,存储系统元数据,5.7版本,8.0系统表空间主要存放数据字典。
- .ibd独立表空间文件 :开启
innodb_file_per_table之后,每张InnoDB表独立一个ibd文件,存放表的数据页、索引页。 - redo log重做日志:ib_logfile0、ib_logfile1,崩溃恢复核心,事务提交先写redo log,后台刷数据页到磁盘。
- undo log回滚日志:8.0版本undo tablespace独立undo表空间,保存数据修改前镜像,实现事务回滚、MVCC多版本读。
- binlog二进制日志:记录DDL、DML变更,用于主从复制、时间点数据恢复。
- 错误日志error.log:实例启动关闭、告警、报错全部记录,排错首要查看日志。
- 慢查询日志slow.log:记录执行时间超过阈值的SQL,SQL性能分析。
- my.cnf配置文件:数据库启动读取的参数配置文件。
2.3 MySQL逻辑存储结构
InnoDB逻辑层级从上至下:数据库(Schema) → 表 → 行(Row) → 页(Page,默认16KB) → 区(Extent,1MB,连续64个page) → 段(Segment) → 表空间Tablespace。
- 页Page:InnoDB最小IO读写单元,默认16KB,存放多行记录,包含页头、行数据、页尾校验信息。
- 区Extent:64个连续页,大小1MB,表空间分配存储空间的单位。
- 段Segment:分为数据段、索引段、回滚段,一个段由若干区组成。
- 表空间Tablespace:逻辑最高单元,分为共享系统表空间、独立表空间、通用表空间。
2.4 MySQL数据库与实例的关系
实例(Instance) :内存结构+后台进程/线程,运行在内存中,对外提供数据库服务;一台服务器可以运行多个MySQL实例,不同实例监听不同端口,独立内存,独立数据目录。
数据库(Schema):磁盘上的逻辑集合,多张表、视图、存储过程的集合。
风哥数据库教程 itpux‑com
实例启动,加载磁盘上数据库文件,分配内存,对外提供SQL服务;实例停止,内存释放,磁盘数据库文件仍然保留。主机fgedu‑net‑cn1实例名为fgedudb,端口3306,数据目录/fgedudb/fgedudb。
2.5 MySQL进程访问
MySQL8采用多线程模型,mysqld主进程内部拆分大量线程:
- 主线程:监听客户端连接,接收TCP连接请求。
- 用户工作线程:处理客户端SQL请求,每个连接对应一个工作线程(不开启线程池前提下)。
- IO线程:redo log刷盘线程、page cleaner刷新脏页线程,读取磁盘数据页。
- purge线程:清理undo log旧版本数据,回收多版本读旧行。
- page cleaner线程:把缓冲池内的脏数据页刷新写入磁盘ibd文件。
查看系统进程命令:
ps -ef |grep mysqld
2.6 MySQL内存结构(硬件:64G内存,8CPU)
MySQL内存分为全局内存和会话级内存。全局内存实例启动分配;会话内存每个客户端连接独立分配,连接销毁释放内存。
全局内存(64G主机配置)
innodb_buffer_pool_size:InnoDB缓冲池,缓存数据页、索引页。64G服务器推荐设置40G ,占物理内存60‑70%;innodb_buffer_pool_instances=8,CPU为8核,缓冲池实例数量匹配CPU核数,降低锁竞争。innodb_log_buffer_sizeredo日志缓冲,推荐256M,事务提交把log buffer写入redo log磁盘文件。key_buffer_sizeMyISAM引擎索引缓冲,设置256M,MyISAM已经不推荐生产使用。
会话内存(每个连接独立分配)
sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size,这部分参数不要设置过大,大量并发连接会造成内存暴涨。64G主机,sort_buffer_size设置4M,join_buffer_size设置4M。
风哥教程 113257174
2.7 MySQL存储引擎分类
存储引擎是MySQL读写数据的插件,同实例不同表可以使用不同存储引擎。执行show engines;查看全部存储引擎。
- InnoDB(默认):完整支持事务ACID,行级锁,MVCC,外键约束,崩溃安全恢复,生产环境标准选择。
- MyISAM:不支持事务,只有表锁,崩溃不安全,查询速度快,已经不推荐业务使用。
- MEMORY:全部数据存放内存,磁盘只保留表结构,重启数据丢失,适合临时中间计算表。
- Archive:高压缩归档存储,只支持insert、select,不支持update delete,适合日志归档数据。
2.8 InnoDB存储引擎深度解析
InnoDB核心四大特性:事务ACID、MVCC多版本并发控制、行锁、崩溃安全恢复。
- MVCC多版本读:undo log保存数据历史镜像,实现快照读,不加锁读取数据,读写互不阻塞。select普通快照读不会加行锁;update delete会加行锁。
- redo log WAL预写日志:事务提交,优先写redo log磁盘,内存脏页后台慢慢刷盘,大幅提升提交性能,实例崩溃依靠redo log做崩溃恢复。
- 锁机制:行锁针对索引生效,如果没有索引,行锁退化为表锁;分为共享S锁、排他X锁;意向锁解决表锁行锁冲突检测。
- 事务隔离级别:READ‑UNCOMMITTED、READ‑COMMITTED、REPEATABLE‑READ(MySQL InnoDB默认)、SERIALIZABLE。生产环境推荐READ‑COMMITTED隔离级别。
网上搜索风哥教程可以学习全套数据库教程
3 MySQL数据库高可用与集群架构
3.1 MySQL高可用类型
MySQL高可用目标:实例故障尽可能业务不中断,分为:
- 主从复制类高可用:异步复制、半同步复制、GTID复制,一主多从。
- 故障转移管理方案:MMM、MHA,基于原生主从复制增加故障检测、自动主节点切换。
- 组复制集群:MGR,基于Paxos协议,多节点一致性复制。
- 完整管理集群:InnoDB Cluster,MGR+MySQL Shell+Router完整运维套件。
- 分布式中间件分片集群:ShardingSphere等中间件做分库分表,解决数据量水平扩展。
3.2 MySQL主从复制架构与常用拓扑结构
主库(Source)执行DML/DDL,写入binlog二进制日志;从库(Replica)IO线程拉取binlog,保存本地relay‑log中继日志,SQL线程重放中继日志,实现数据同步。
拓扑:一主一从、一主多从、链式复制(A→B→C)、环形复制。
复制模式:异步复制、半同步复制(rpl_semi_sync_master),GTID全局事务ID复制,推荐生产使用GTID模式,切换主库不需要记录binlog文件名与position。
业务场景:读写分离(读压力分摊多个从库);数据备份(从库执行备份,不影响主库性能);异地灾备;故障切换容灾。
3.3 MMM架构介绍
MMM(Master‑Master Replication Manager),双主互写架构,管理多主节点,管理虚拟IP,故障切换。缺点:数据冲突风险高,对写并发业务不友好,现在已经逐步淘汰,新项目不再推荐MMM。
3.4 MHA架构介绍
MHA(Master High Availability),基于原生MySQL主从复制,分为Manager管理节点与数据库节点;Manager监控主库状态,主库故障,自动选最优从库提升为新主库,其他从库自动向新主库做同步,支持虚拟IP漂移。
优点:基于原生复制,不需要修改MySQL内核,支持MySQL5.7/8.0;缺点:Manager存在单点,半同步不能完全保证零数据丢失,需要业务适配。
3.5 Orchestrator / Xenon架构
Orchestrator:开源复制拓扑管理工具,基于GTID复制,Web界面,自动故障检测、故障选主,管理主从拓扑;Xenon是国内开源高可用组件,类似MHA,实现故障自动切换。
风哥数据库教程 itpux‑com
3.6 不同规模业务架构选型
- 初创公司架构:一主一从,手动切换,无自动故障转移,业务量小,优先保证数据,故障人工介入。
- 小型业务架构:MHA架构,一主两从,自动故障转移,适合中小业务,故障自动切换。
- 中型业务架构:MGR单主三节点,InnoDB Cluster,自动选主,数据一致性强。
- 大型业务架构:InnoDB Cluster集群 + 读写分离中间件,多机房异地从库灾备,完整监控告警体系。
3.7 MySQL InnoDB Cluster集群架构
InnoDB Cluster官方完整高可用套件,三部分组成:
- MGR组复制数据库节点:底层数据复制,保证多节点数据一致性。
- MySQL Shell:集群管理命令行工具,创建集群、增加删除实例、故障修复。
- MySQL Router :中间件路由层,应用连接Router,自动读写分离,故障自动屏蔽故障节点。
优势:官方原生套件,完整生命周期管理,适合8.0及以上版本生产环境。
4 实战操作
实战环境说明
主机1:
fgedu‑net‑cn1(主节点,8CPU,64G内存)主机2:
fgedu‑net‑cn2(从节点,8CPU,64G内存)实例名:
fgedudb数据目录:
/fgedudb/fgedudb端口:3306
业务库名:
fgedudb,业务账号fgedu
4.1 Linux环境MySQL8.4部署(fgedu‑net‑cn1)
# 创建数据目录
mkdir -p /fgedudb/fgedudb
chown -R mysql:mysql /fgedudb
chmod 700 /fgedudb/fgedudb
# 初始化实例(无密码初始化)
mysqld --initialize‑insecure --user=mysql --datadir=/fgedudb/fgedudb
# 编写systemd服务单元
cat > /etc/systemd/system/mysqld‑fgedudb.service <<EOF
[Unit]
Description=MySQL fgedudb Instance
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/sbin/mysqld --defaults‑file=/fgedudb/my.cnf
LimitNOFILE=65535
Restart=on‑failure
[Install]
WantedBy=multi‑user.target
EOF
systemctl daemon‑reload
systemctl start mysqld‑fgedudb
systemctl enable mysqld‑fgedudb
# 本地登录实例
mysql -S /fgedudb/fgedudb/mysql.sock
4.2 my.cnf配置文件编写,64G内存8CPU规格,路径/fgedudb/my.cnf
[mysqld]
user=mysql
port=3306
socket=/fgedudb/fgedudb/mysql.sock
datadir=/fgedudb/fgedudb
pid‑file=/fgedudb/fgedudb/fgedudb.pid
log‑error=/fgedudb/fgedudb/error.log
#基础参数
server‑id=1
lower_case_table_names=1
character‑set‑server=utf8mb4
collation‑server=utf8mb4_unicode_ci
max_connections=2000
max_allowed_packet=128M
#binlog配置
log_bin=binlog
binlog_format=ROW
binlog_expire_logs_seconds=864000
sync_binlog=1
gtid_mode=ON
enforce_gtid_consistency=ON
#InnoDB核心 64G内存
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_buffer_pool_size=40G
innodb_buffer_pool_instances=8
innodb_log_file_size=4G
innodb_log_buffer_size=256M
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
innodb_read_io_threads=8
innodb_write_io_threads=8
#会话缓冲
sort_buffer_size=4M
join_buffer_size=4M
read_buffer_size=2M
read_rnd_buffer_size=4M
[mysql]
socket=/fgedudb/fgedudb/mysql.sock
default‑character‑set=utf8mb4
修改配置之后重启实例生效:
systemctl restart mysqld‑fgedudb
4.3 数据库基础SQL实操
登录数据库
mysql -S /fgedudb/fgedudb/mysql.sock
-- 创建业务库fgedudb
CREATE DATABASE IF NOT EXISTS fgedudb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建业务用户fgedu,授权访问fgedudb库
CREATE USER 'fgedu'@'%' IDENTIFIED BY 'Fg@123456';
GRANT ALL PRIVILEGES ON fgedudb.* TO 'fgedu'@'%';
FLUSH PRIVILEGES;
USE fgedudb;
-- 创建测试业务表
CREATE TABLE fg_user(
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
user_name VARCHAR(64) NOT NULL COMMENT '用户名',
phone VARCHAR(20) COMMENT '手机号',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 插入数据
INSERT INTO fg_user(user_name,phone) VALUES
('zhangsan','13800138000'),
('lisi','13900139000');
-- 查询
SELECT * FROM fg_user;
-- 更新
UPDATE fg_user SET phone='13800138999' WHERE id=1;
-- 删除
DELETE FROM fg_user WHERE id=2;
4.4 用户权限管理实操
--查看用户
SELECT user,host FROM mysql.user;
--回收权限
REVOKE INSERT,UPDATE ON fgedudb.* FROM 'fgedu'@'%';
FLUSH PRIVILEGES;
--删除账号
DROP USER 'fgedu'@'%';
4.5 逻辑备份恢复mysqldump实操
网上搜索风哥教程可以学习全套数据库教程
mysqldump逻辑备份,导出SQL文本,适合中小库。
#全库逻辑备份
mysqldump -S /fgedudb/fgedudb/mysql.sock --single‑transaction --master‑data=2 --routines --triggers --all‑databases > /fgedudb/backup/all_db_$(date +%Y%m%d).sql
#单库fgedudb备份
mysqldump -S /fgedudb/fgedudb/mysql.sock --single‑transaction --routines --triggers fgedudb > /fgedudb/backup/fgedudb_$(date +%Y%m%d).sql
#恢复单库
mysql -S /fgedudb/fgedudb/mysql.sock fgedudb < /fgedudb/backup/fgedudb_20260913.sql
mysqlpump为mysqldump的并行版本,支持多线程导出:
mysqlpump -S /fgedudb/fgedudb/mysql.sock --single‑transaction --routines --triggers --databases fgedudb --parallel‑schemas=4 > /fgedudb/backup/pump_fgedudb.sql
4.6 XtraBackup物理备份实操
物理备份直接复制磁盘ibd、redo log文件,适合TB级大库,热备份不锁InnoDB表。
#全量备份
xtrabackup --backup --user=root --socket=/fgedudb/fgedudb/mysql.sock --target‑dir=/fgedudb/backup/xtra_full_$(date +%Y%m%d)
#准备备份,应用redo log,生成一致性备份集
xtrabackup --prepare --target‑dir=/fgedudb/backup/xtra_full_20260913
#恢复操作,停止实例
systemctl stop mysqld‑fgedudb
rm -rf /fgedudb/fgedudb/*
xtrabackup --copy‑back --target‑dir=/fgedudb/backup/xtra_full_20260913
chown -R mysql:mysql /fgedudb/fgedudb
systemctl start mysqld‑fgedudb
4.7 GTID主从复制搭建,fgedu‑net‑cn1为主,fgedu‑net‑cn2为从
前提:两台主机my.cnf都开启
gtid_mode=ON,主库server‑id=1,从库server‑id=2,防火墙开放3306端口。
主库fgedu‑net‑cn1操作
# 创建复制账号
CREATE USER repl@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
FLUSH PRIVILEGES;
#全库导出主库数据
mysqldump -S /fgedudb/fgedudb/mysql.sock --single‑transaction --master‑data=2 --all‑databases --gtid‑purged=ON > /fgedudb/backup/master_full.sql
#将备份文件拷贝到从库
scp /fgedudb/backup/master_full.sql root@fgedu‑net‑cn2:/fgedudb/backup/
从库fgedu‑net‑cn2操作
#导入主库全量备份
mysql -S /fgedudb/fgedudb/mysql.sock < /fgedudb/backup/master_full.sql
#配置GTID主从复制
CHANGE MASTER TO
MASTER_HOST='fgedu‑net‑cn1',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123456',
MASTER_AUTO_POSITION=1;
START REPLICA;
#查看复制状态
SHOW REPLICA STATUS\G
检查 Replica_IO_Running: Yes、Replica_SQL_Running: Yes,代表主从复制正常。
4.8 MGR组复制集群部署实操(三节点示例)
MGR基于Paxos协议,实现多节点数据一致性。关键配置my.cnf需要增加MGR相关参数,三台实例server‑id互不相同,开启GTID,开启binlog。
loose‑group_replication_group_name="aaaaaaaa‑bbbb‑cccc‑dddd‑eeeeeeeeeeee"
loose‑group_replication_start_on_boot=off
loose‑group_replication_local_address= "fgedu‑net‑cn1:33061"
loose‑group_replication_group_seeds= "fgedu‑net‑cn1:33061,fgedu‑net‑cn2:33061,fgedu‑net‑cn3:33061"
loose‑group_replication_bootstrap_group= off
主节点引导集群,只执行一次:
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
其余节点执行启动组复制:
START GROUP_REPLICATION;
#查看集群成员状态
SELECT * FROM performance_schema.replication_group_members;
4.9 InnoDB Cluster集群部署实操
InnoDB Cluster需要使用mysqlsh工具管理集群。
#启动mysqlsh
mysqlsh --js root@fgedu‑net‑cn1:3306
// 检查实例配置是否满足集群条件
dba.checkInstanceConfiguration('root@fgedu‑net‑cn1:3306');
dba.configureInstance('root@fgedu‑net‑cn1:3306');
//创建集群
var cluster = dba.createCluster('fgedudb_cluster');
//增加另外两个节点
cluster.addInstance('root@fgedu‑net‑cn2:3306');
cluster.addInstance('root@fgedu‑net‑cn3:3306');
//查看集群状态
cluster.status();
部署MySQL Router,应用连接Router地址,自动路由读写请求。
5 风哥针对本文总结
风哥教程本文完整梳理MySQL基础知识、体系架构、InnoDB存储引擎原理、主流高可用架构选型,并且基于两台测试主机fgedu‑net‑cn1、fgedu‑net‑cn2,硬件规格64G内存8CPU,完成MySQL8.4部署、参数调优、SQL开发、逻辑/物理备份恢复、GTID主从复制、MGR组复制、InnoDB Cluster集群完整实操演示。
核心要点总结:
- MySQL四层体系架构:连接层、SQL服务层、存储引擎层、文件系统层,InnoDB插件存储引擎是生产唯一推荐引擎,依靠redo log WAL、undo log MVCC实现事务崩溃安全。
- 参数调优优先
innodb_buffer_pool_size,64G服务器设置40G,缓冲池实例数匹配CPU核数;会话缓冲参数不要盲目调大,避免高并发内存耗尽。 - 备份分为逻辑备份mysqldump/mysqlpump,物理备份XtraBackup;备份有效性核心在于定期做恢复演练,备份文件不能恢复等于无效备份。
- GTID主从复制运维简单,生产优先使用半同步复制,尽量规避MMM老旧架构;中型以上业务优先评估MGR/InnoDB Cluster官方集群方案。
- 生产上线前,高可用架构需要模拟故障做切换演练,验证故障转移之后业务与数据完整性。
在实际生产运维过程中,需要持续关注错误日志、慢查询日志,定期监控实例状态,根据业务压力持续调整配置参数,保障数据库稳定运行。