简介:MySQL 5.7 数据库管理员 1z0-888 认证题库是一份面向 DBA 与备考者的实战型复习资料,聚焦数据库管理、性能优化、安全机制与故障排查等核心考点。压缩包内为 1 份 docx 文档,整体大小约 1.25MB,内容以英文原题、选项解析与参考链接为主,便于随时查阅和反复练习。文档精选了 MyISAM 磁盘空间耗尽处理、mysql_config_editor 登录路径管理、数据目录初始化、明文密码认证插件等高频题目,每题附正确答案与简要解释,部分题目还提供官方文档参考,能帮助考生梳理解题思路、识别易错选项。通过系统练习,读者可快速定位自身薄弱环节,强化对存储引擎行为、安全登录配置、初始化流程等关键内容的理解。目前已有 357 人学习下载,适合正在准备 MySQL 5.7 认证考试,或希望系统掌握 MySQL 日常管理与安全配置技巧的技术人员按需选用。
1. 这份题库文档,押的是 DBA 的实战判断力
先给结论:1z0-888 的官方名称是 MySQL 5.7 Database Administrator,但它的考题风格跟你之前考过的 OCP 或者其他厂商认证完全不是一回事。它不问你“MySQL 的默认端口是多少”,而是给你一段my.cnf,让你判断innodb_buffer_pool_size设置成多少会导致交换分区抖动;或者给你一个主从延迟的监控截图,让你从四个SHOW SLAVE STATUS输出里挑出真正的故障根因。
换句话说,这份以 .docx 形式流传的题库,本质上是把 MySQL 5.7 运维里最常出问题的操作场景汇总成了选择题。对已经带过生产库的 DBA 来说,刷题的价值不在背答案,而在于借题目反查自己的配置习惯:比如binlog_format到底该不该在线上用STATEMENT,read_only和super_read_only在 MHA 切换时各起什么作用。MySQL 5.7 是 Percona、MariaDB 分支以及无数存量业务的基石版本,考证的人通常不是为了那张纸,而是为了系统性梳理一遍自己的知识盲区。这篇文按“考试大纲 → 核心技术点 → 备考路径 → 现场排错”的顺序,把 1z0-888 背后真正值得花时间的部分拆开讲。
2. 先看懂 1z0-888 的知识域分布,再决定刷题策略
2.1 考试结构:你以为的“题库”其实是场景矩阵
1z0-888 的考试时长 120 分钟,题量通常在 75 道左右,及格线是 63%。题型以单选和多选为主,没有实操环境,所有题目都基于文字描述和命令行输出片段。这意味着你刷题时不能只记“选 C”,而是要训练自己在看到SHOW ENGINE INNODB STATUS输出后,迅速定位LATEST DETECTED DEADLOCK段落的能力。
从知识域占比看,官方大纲大致分为八块,但实际考试的重心非常倾斜。我按历年考题回忆和从业者交流的共识,整理成下面这个优先级表:
| 优先级 | 知识域 | 典型考点 | 陷阱提示 |
|---|---|---|---|
| P0 | 复制与高可用 | GTID、半同步、多源复制 | 5.7 的CHANGE MASTER TO参数差异 |
| P0 | 备份与恢复 | mysqldump、ibbackup、binlog 回放 | 备份一致性如何保证 |
| P1 | InnoDB 架构与调优 | buffer pool、redo log、锁 | 参数动态生效范围 |
| P1 | 性能诊断 | EXPLAIN 输出、慢查询日志 | 索引失效场景 |
| P2 | 安全性 | 权限表、SSL、密码策略 | validate_password插件 |
| P2 | 监控与日志 | error log、performance_schema | 5.7 新增监控项 |
| P3 | 分区表与表维护 | ALTER TABLE 算法 | 在线 DDL 的限制 |
| P3 | 字符集与排序规则 | utf8mb4 切换 | 索引长度上限 |
如果你拿到的题库文档是按知识点分章节的,建议直接忽略它的顺序,按照 P0 到 P3 的优先级重新刷。因为复制和备份这两块几乎占了一半的题量,而且考察方式刁钻——不是问你命令怎么敲,而是给你一个已经跑偏的复制环境,让你判断哪条命令能修复。
2.2 把考试大纲映射到真实运维技能树
一个容易被忽略的事实:1z0-888 的大部分考点,在 MySQL 官方文档里都分散在《Replication》《InnoDB Storage Engine》《Backup and Recovery》这三本手册里。考试只是把文档里的注意事项挑出来,伪装成“事故现场”让你决策。所以备考的第一步,不是打开题库,而是重新读这三本手册的目录,把里面加粗的警告段落标记出来。比如官方文档反复强调:max_allowed_packet在主从两端必须保持一致,否则大事务会静默失败。这种细节就是考题的天然素材。
另一个值得注意的维度是版本差异。1z0-888 明确锁定 MySQL 5.7,但很多 DBA 平时工作在 8.0 环境,刷题时会下意识用 8.0 的语法去理解 5.7 的题目。典型例子是SHOW PROFILE,该命令在 5.7 可用但后续版本已废弃;再比如mysql_upgrade在 5.7 还是独立命令,而 8.0 已经把它内置到mysqld启动流程里。如果你带着 8.0 的习惯去做 5.7 的题,会丢掉不少分。
所以这里给一个可落地的映射方法:拿一张白纸,左边列出你平时运维 MySQL 的完整任务链——实例安装、参数模板、备份脚本、主从搭建、故障切换、慢查询优化——然后对照考试大纲的八块知识域,把日常任务归入对应区域。你会发现,日常工作中最熟练的部分(比如用screen挂着跑mysqldump)恰恰是考试里最容易翻车的部分,因为考试考的是“为什么”和“否则会怎样”。
2.3 刷题的正确姿势:以错误选项为学习入口
题库文档里的每个选择题,至少有一个错误选项是“看起来很对但实际有致命伤”的。这类选项通常来自运维中的真实误操作。比如题目问“如何在线调整innodb_buffer_pool_size”,正确选项是SET GLOBAL innodb_buffer_pool_size=8G,但干扰项会写成“需要先SET GLOBAL innodb_old_blocks_time=0”。后者确实和缓冲池管理有关,但跟调整大小毫无关系——这就是在测试你能否分清参数的作用域。
我建议你准备一个“错题注释本”,不是抄正确答案,而是给每个错误选项写一句“为什么不能这么干”。例如innodb_flush_log_at_trx_commit=0能提升写入性能,但主从环境下从库断点恢复后会丢最后 1 秒事务,这对金融业务是不可接受的。写多了你会发现,考题的底层逻辑就两条:数据一致性和故障恢复时间。其他都是这两条的变体。
3. 高频技术点拆解:复制、备份与 InnoDB 的真实考题长什么样
3.1 复制链路:GTID 与半同步的配置参数边界
1z0-888 对复制的考察,集中在 5.7 引入或强化的特性上。GTID 是绝对重点,但考试很少直接问“GTID 是什么”,而是让你判断一条CHANGE MASTER TO语句是否能在 GTID 模式下执行。这里有个关键参数:MASTER_AUTO_POSITION=1。在 5.7 中,启用 GTID 后,传统的MASTER_LOG_FILE和MASTER_LOG_POS参数会被忽略,如果两条命令混用,CHANGE MASTER TO会直接报错。
-- 在 GTID 模式下重建复制链路的正确姿势 STOP SLAVE; CHANGE MASTER TO MASTER_HOST='10.0.0.12', MASTER_USER='repl', MASTER_PASSWORD='Str0ng!Pass', MASTER_AUTO_POSITION=1; -- 5.7 中必须显式开启 START SLAVE;这段 SQL 的逻辑说明:MASTER_AUTO_POSITION是 5.7 GTID 复制的核心开关,它让从库自动从mysql.gtid_executed表读取已执行事务,并向主库请求缺失的 GTID 区间。相比传统的基于文件和偏移量的方式,它消除了手工定位 binlog 坐标的误差。参数说明:实际生产环境里,MASTER_AUTO_POSITION=0的场景通常是跨版本升级或过滤复制(如replicate-ignore-db),这时才需要回落到位点复制。
半同步复制(rpl_semi_sync_master_enabled)同样是高频考点。考试中常见的陷阱是:主库开启了半同步,但rpl_semi_sync_master_timeout设置过短,导致网络抖动时主库自动退化为异步复制。题目会给你一个SHOW STATUS LIKE 'Rpl_semi_sync%'的输出,让你判断当前复制模式。
SHOW STATUS LIKE 'Rpl_semi_sync%';关注两个关键值:Rpl_semi_sync_master_status为ON表示半同步生效;Rpl_semi_sync_master_no_tx表示有多少事务因为超时或从库无响应而退化为异步提交。如果这个数值持续增长,说明你的半同步配置形同虚设。参数层面,rpl_semi_sync_master_timeout的单位是毫秒,默认 10000(即 10 秒)。在跨机房部署时,我一般会调到 3000 以下,宁可让主库快速降级为异步,也不要长时间阻塞事务提交。
3.2 InnoDB 层:缓冲池、redo log 和 doublewrite 的联动关系
InnoDB 的考题不会直接问“buffer pool 有多大”,而是给你一套服务器配置——比如物理内存 64G、innodb_buffer_pool_size=48G、innodb_log_file_size=1G——问你哪些参数需要联动调整。这里的知识点是:5.7 中innodb_log_file_size默认 48M,但对写入密集型业务来说太小,因为 redo log 的循环写入会频繁触发 checkpoint,导致磁盘刷脏成为瓶颈。
你需要记住一组经验比例:buffer pool 的 25% 左右是 redo log 容量的合理起点。例如innodb_buffer_pool_size=32G时,innodb_log_file_size建议设置为 8G(即两个 4G 的 log file)。但 5.7 有个限制:innodb_log_file_size必须在实例启动前修改,它不像 buffer pool 那样支持动态调整。考试里经常出现“让你判断哪个参数可以SET GLOBAL动态修改”的题目。
-- 5.7 动态调整 buffer pool 的合法做法 SET GLOBAL innodb_buffer_pool_size = 2147483648; -- 2G,单位为字节,不是 MB这里要注意:5.7 虽然支持动态修改innodb_buffer_pool_size,但实际扩容是分块进行的,默认innodb_buffer_pool_chunk_size是 128M,调整时会看到内存占用逐步上升。考试中常出现的干扰选项是“需要重启实例”,这在 5.7.5 之后的版本中已不成立。
doublewrite 机制是另一个容易被低估的考点。题目会描述“服务器突然断电,重启后 InnoDB 无法启动,报错提示 doublewrite 页面损坏”,然后给你四个修复选项。正确思路是:从 ibd 文件恢复数据,前提是innodb_doublewrite=ON。但更深的考点在于:如果 doublewrite 缓冲所在的页本身损坏,且没有可用的物理备份,数据恢复的难度会指数级上升。所以考试里的正确答案通常是“从最近的物理备份 + binlog 回放”而不是“用 ibd 文件硬恢复”。
3.3 备份与恢复:一致性快照的三种实现路径
1z0-888 的备份题,核心考一致性。这里有三个层次:mysqldump --single-transaction只能保证 InnoDB 表的一致性,对 MyISAM 表无效;LOCK TABLES可以保证全库一致性但会阻塞写入;ibbackup或xtrabackup通过复制 redo log 实现物理一致性,不影响在线业务。
# 生产环境常用的 InnoDB 热备命令(5.7 适用) mysqldump \ --single-transaction \ --routines --triggers --events \ --set-gtid-purged=ON \ -u backup_user -p'Backup@123' \ --all-databases > /backup/full_$(date +%F).sql各参数含义:--single-transaction开启一个可重复读事务,让 InnoDB 表在备份期间看到一致的快照,不加全局读锁;--set-gtid-purged=ON会在导出文件中写入 GTID 集合,这样恢复后可以直接通过MASTER_AUTO_POSITION=1接入复制拓扑;--routines和--triggers缺一不可,否则恢复后的库会缺少存储过程和触发器,业务运行时才报错。
考题的经典陷阱是:有人为了让备份更快,在mysqldump命令中加了--skip-lock-tables。对于 InnoDB 表来说这没问题,但如果库里混有 MyISAM 表,备份期间发生 DDL 或写入,导出的数据就会不一致。考试给的场景题经常会伪装成“为什么明明备份成功了,恢复后数据对不上”,正确答案八成指向备份命令没加--single-transaction或源库存在 MyISAM 表。
4. 备考实操:从零搭建可复现的 5.7 实验环境
4.1 用二进制包快速起一个 5.7 单实例
刷题最大的问题是“题目里说的现象,我没见过”。比如SHOW SLAVE STATUS里Seconds_Behind_Master为 NULL 代表什么,如果没亲手搭过主从,只能死记。因此我建议花半天时间在本地用二进制包搭一个最小实验环境,不求高可用,只求能复现考题里的配置场景。
# 以 5.7.44 为例,下载二进制包并初始化实例 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz tar -xzf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /opt useradd -r -s /sbin/nologin mysql mkdir -p /data/mysql /var/log/mysql chown -R mysql:mysql /data/mysql /var/log/mysql # 初始化数据目录(5.7 必须用 --initialize-insecure 才能免密登录) /opt/mysql-5.7.44-linux-glibc2.12-x86_64/bin/mysqld \ --initialize-insecure --user=mysql --datadir=/data/mysql注意--initialize-insecure生成了一个没有 root 密码的空实例,这么做是为了初始化完成后能直接登录,再手动设置密码。如果你用--initialize,系统会生成一个临时密码写在 error log 里,对验证考题环境来说多此一举。
启动后立刻修改 root 密码,并顺手设置一个弱化版的密码策略,否则试验半路总会因密码强度不够而报错:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456'; SET GLOBAL validate_password_policy=0; -- 仅测试环境使用 SET GLOBAL validate_password_length=4;这里触发了validate_password插件的行为差异:5.7 默认不启用该插件,但如果你的发行版 RPM 包装了 MySQL 并默认加载了插件,就必须在my.cnf中显式关闭或调整策略。
4.2 搭建一主一从,复现 90% 复制考题场景
实验环境的核心是一主一从。以下配置片段可直接用于两个实例,只需改各自的server-id和端口:
# /data/mysql/my.cnf 关键配置(主从通用) [mysqld] server-id=1 # 从库改为 2 port=3306 # 从库可改为 3307 log-bin=mysql-bin binlog-format=ROW gtid-mode=ON enforce-gtid-consistency=ON skip-name-resolve启动主从后,在主库创建一个复制专用账号,然后执行CHANGE MASTER TO建立链路。验证是否成功,不要只看Slave_IO_Running: Yes,还要专门观察Seconds_Behind_Master是否为 0。
-- 从库上执行一次全量同步前,先在主库造点数据 CREATE DATABASE testdb; USE testdb; CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)); INSERT INTO t1 (name) VALUES ('alice'), ('bob');这套环境能复现的高频考题场景包括:误删mysql库系统表导致的复制中断、max_allowed_packet不一致导致的大事务复制失败、主库用了DROP DATABASE而从库只配置了replicate-ignore-db后的数据错乱。建议每个场景都亲手操作一遍,把SHOW SLAVE STATUS\G的输出截图保存,对照题库里的题目描述你就会发现,出题人几乎就是把这些报错信息原样搬进了选项。
4.3 用 performance_schema 验证考题里的监控点
5.7 的 performance_schema 比 5.6 更完善,考题中会涉及几个关键表:events_statements_summary_by_digest(用于定位高频慢 SQL)、file_summary_by_instance(用于分析 IO 瓶颈)、replication_applier_status_by_worker(用于判断多线程复制是否真正生效)。
-- 查看当前实例的 InnoDB 行锁等待次数,复现死锁考题 SELECT t.THREAD_ID, t.PROCESSLIST_ID, t.PROCESSLIST_USER, t.PROCESSLIST_INFO, w.LOCK_TYPE, w.OBJECT_NAME FROM performance_schema.threads t JOIN performance_schema.data_lock_waits w ON t.THREAD_ID = w.THREAD_ID;在 5.7 里,information_schema.INNODB_TRX依然可用,但考纲更偏向上面的新表。注意,data_lock_waits在 5.7 中只有启用了performance_schema且相关 consumer 打开才有数据,默认是开启的。刷题时遇到“如何确认哪个事务阻塞了另一个事务”这类问题,如果选项同时出现SHOW PROCESSLIST和data_lock_waits,优先选后者,因为它能直接给出锁类型和对象名,不需要人为拼接上下文。
5. 考场上更容易翻车的 5 个 5.7 特性与避坑建议
5.1read_only与super_read_only的层级关系
考题里经常出现“备库已设置read_only=ON,为什么应用还能写入”的判断。答案是:read_only只限制普通账号,具备SUPER权限的账号依然能写入。要彻底锁死,必须设置super_read_only=ON。但很多考生不知道,5.7 中super_read_only的默认值是OFF,而且它只能在read_only开启的前提下生效。如果你在命令行先执行SET GLOBAL super_read_only=ON而read_only=OFF,MySQL 会直接报错拒绝执行。
5.2binlog_format=ROW下的复制陷阱
考题中有一类题专门考 ROW 格式下binlog_row_image=FULL与MINIMAL的区别。FULL会把所有列的旧值和新值都写入 binlog,MINIMAL只记录必要列,日志量显著下降,但某些回放场景(比如无主键表)会导致从库数据不一致。5.7 的默认值是FULL,很多优化文章推荐改成MINIMAL,但考试题目会把它包装成“线上主从数据不一致,以下哪项配置是诱因”——考的就是你是否知道MINIMAL对无主键表不友好。
5.3 缓冲池预热:innodb_buffer_pool_dump_at_shutdown的生效前提
这个参数经常出现在“如何减少实例重启后的性能波动”题目里。它能在正常关闭时把 buffer pool 中的 LRU 列表信息写入磁盘文件,启动时通过innodb_buffer_pool_load_at_startup加载。但注意:只有正常关闭(mysqladmin shutdown)才会触发 dump,kill -9或断电不会。题目会把这个细节作为区分点,正确选项通常需要你同时确认两个参数都设置为 ON。
5.4 多线程复制(MTS)的隐性问题
5.7 默认slave_parallel_workers=0,即单线程复制。开启多线程后,需要关注slave_parallel_type的取值:DATABASE表示按库并行,LOGICAL_CLOCK表示基于提交时间戳的并行方案,后者在跨库场景下效率更高。考题中会出现“开启了多线程复制但延迟没下降”的场景,原因往往是库的数量小于并行线程数,或者存在单库内的大事务。
5.5 验证一条 SQL 是否用对索引的快速方法
考试不给你跑 EXPLAIN 的机会,但题目里会给出 EXPLAIN 的结果片段,让你判断哪里出了错。你需要记住几个关键标志:type为ALL代表全表扫描,rows远超预期值代表估算偏差,Extra里出现Using filesort代表排序未走索引。最高频的坑是把key_len算少了——因为 5.7 的 utf8mb4 下,VARCHAR(50)的key_len不是 50 而是 204(50×4 + 2)。题目通过这个细节区分你是否真懂字符集和变长字段的存储开销。
本文还有配套的精品资源,点击获取