简介:MySQL 5.7 Database Administrator(1z0-888)认证备考题库以单个docx文档形式提供,面向计划考取MySQL中级认证的数据库管理员、运维工程师及在校学生。内容围绕数据库管理、性能优化、安全机制与故障排查等核心模块,覆盖认证考试中的常见题型与易错点,适合在复习阶段进行自测和查漏补缺。文档共1个文件,大小约1.25MB,为Word格式,便于搜索、标注与打印练习。目前已有357人学习下载,题库实用性得到一定认可。节选题目涉及MyISAM存储引擎磁盘空间耗尽时的处理机制、mysql_config_editor登录路径特性、使用mysqld --initialize初始化数据目录,以及明文密码认证插件下的客户端连接方式等,均附有参考答案与简要解析,能帮助考生理解出题思路、掌握配置细节,并规避实操中容易忽略的坑点。整体而言,该题库是一份聚焦高频考点的精简练习资料,适合作为考前冲刺或日常巩固的辅助工具。
1. 1z0-888 不是一场可以裸考的考试:先看清题库文档里到底有什么
手头有一份 MySQL 5.7 Database Administrator 1z0-888认证题库.docx 的人,多半是冲着“刷两周题、背熟答案、直接去考 Oracle”来的。我的建议很直接:先别急着背,这张 docx 只能当索引,不能当答案书。1z0-888 是 Oracle 面向 MySQL 5.7 DBA 的官方认证考试,考题形式大多不是“下面哪个参数正确”,而是给你一段 my.cnf、一条报错、一台主从拓扑,让你判断故障出在哪、下一步该敲什么命令。这份题库文档真正有用的地方,是把考点和关键词列给你;但每道题背后的命令,必须自己在实验机上跑通,考试才不会翻车。这篇文章就是一条从文档到实操的备考路径,适合已经在 CentOS 上装过 MySQL 5.7、但对备份恢复和复制还停留在“看过没做过”阶段的运维。
2. 1z0-888 考纲拆解:文档目录不等于官方考点权重
2.1 从 MySQL 官方认证页找 Exam Topics,先做章节到技能域的映射
拿到 docx 的第一件事,不是从头看第一页,而是先去 MySQL 认证官方页面把 1z0-888 的 Exam Topics 下载下来。这个考试对应的官方主题列表是公开的,它会按技能域告诉你“安装和配置大概考多少、复制大概考多少、备份恢复大概考多少”。而市面上的题库 docx 是按章节编排的,章节顺序跟着参考手册走,两者对不上是常态。
我一般会做一张映射表,把 docx 的目录章节对应到官方技能域上:
| 题库常见章节(docx 目录) | 对应官方技能域 | 必须能敲出来的命令 |
|---|---|---|
| 安装与初始化 | 服务器安装 / 配置 | mysqld --initialize、SHOW VARIABLES |
| 用户与权限 | 安全 | CREATE USER、GRANT、SHOW GRANTS |
| 备份与恢复 | 备份 / 恢复 | mysqldump、mysqlbinlog |
| 复制 | 复制 | CHANGE MASTER TO、START SLAVE |
| 性能监控 | 性能调优 | EXPLAIN、performance_schema 查询 |
| 高可用 | 架构 | 半同步复制参数、多源复制配置 |
这张表做完了,你会发现 docx 里某些章节篇幅很大,但考试权重很低;反过来,复制和备份恢复这两章往往篇幅不大,却是整场考试的命脉。先把精力分配到权重高的地方,比按文档顺序硬啃划算得多。
2.2 把五个技能域翻译成能敲的命令:每个考点背后都有一条 SQL
背考纲最怕背成“名词解释”。我的习惯是把每一条主题改写成一条可执行的命令,改完之后才知道自己到底会不会。比如“用户与权限”这个域,落在键盘上就是一组 SQL:
-- 创建用户并授权,注意 5.7 里密码默认过期策略 CREATE USER 'app_rw'@'192.168.1.%' IDENTIFIED BY 'StrongPass_1'; GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_rw'@'192.168.1.%'; SHOW GRANTS FOR 'app_rw'@'192.168.1.%';逻辑说明:5.7 里 CREATE USER 和 GRANT 是分开的,8.0 里可以用一条 CREATE USER 带授权选项,但 1z0-888 考的是 5.7,题目里如果出现“一条语句完成建号和授权”,答案多半是错的。SHOW GRANTS 用来核对权限,这是考试里经常出现的“给出权限表,判断哪个用户能连哪个库”题型的验证手段。
再比如“性能调优”这个域,落在命令上就是 EXPLAIN 和慢查询日志:
EXPLAIN SELECT u.name, o.order_no FROM users u JOIN orders o ON u.id = o.user_id WHERE u.created_at > '2025-01-01';逻辑说明:EXPLAIN 的输出里,type 字段从 system 到 range 再到 ALL,ALL 就是全表扫描,这是 DBA 面试和认证都喜欢考的。docx 里这类题往往直接给执行计划截图让你选“哪条索引生效”,你光背结论没用,必须在实验机上造一张百万行的表跑一遍,才知道 type=ref 和 type=range 的差异在真实数据下长什么样。
2.3 为什么 MySQL 5.7 专属考点最容易丢分:版本指纹藏在选项里
1z0-888 最阴的地方在于,它考的是 5.7 的“行为”,不是通用 MySQL 知识。很多题库是从 5.6 时代传下来的,文档里还写着“用 mysql_install_db 初始化数据目录、用 mysql_upgrade 做升级、默认认证插件是 mysql_native_password”。这些话在 5.6 没错,在 5.7 里有的已经废弃,有的改了默认值。
我管这些叫“版本指纹”。拿到一道题,先不看答案,先看选项里有没有版本指纹:选项出现innodb_file_per_table、innodb_buffer_pool_size,这是 5.5 就有的;出现gtid_mode、enforce_gtid_consistency,这是 5.6 开始有、5.7 真正成熟的;出现performance_schema默认开启、临时密码机制、sys schema,这是 5.7 的标识。如果选项里混着mysql_install_db,基本可以判定这种题库来自旧版本,做题时要以 5.7 官方参考手册为准,不要被 docx 的“标准答案”带跑。
提示:docx 里的答案不是不能信,但它只对 80% 的题负责。剩下 20% 的版本差异题,是很多人考完出来对答案才发现错的。
3. 把 docx 题库变成学习计划:先搭一台能跑命令的 MySQL 5.7 实验机
3.1 CentOS 7 上安装 MySQL 5.7 的最小步骤:初始化与临时密码
备考 1z0-888 最忌讳“只看不练”。文档里的 SQL 你不敲一遍,永远不知道什么叫“这条命令在 5.7 里只能这么写”。第一步是搭一台干净的实验机,操作系统用 CentOS 7 最省事,MySQL 版本锁死 5.7。
# 下载 MySQL 官方 Yum 仓库 rpm 并安装,具体小版本号以仓库页面为准 rpm -ivh mysql57-community-release-el7-11.noarch.rpm # 安装服务端,会自动带上 client 和 common 组件 yum install -y mysql-community-server逻辑说明:官方仓库 rpm 装好后,yum 源里默认启用的是最新大版本。如果你的机器已经配过其他 MySQL 源,要检查 /etc/yum.repos.d/mysql-community.repo 里 5.7 的 enabled=1、8.0 的 enabled=0,否则 yum install 可能装成 8.0,后面的练习全部白做。手边没有这台机器的,用虚拟机或者容器都行,关键是版本别贪新。
# 5.7 的初始化是一条命令,不是旧版的 mysql_install_db mysqld --initialize --user=mysql # 初始化生成的临时 root 密码在错误日志里 grep 'temporary password' /var/log/mysqld.log参数说明:--initialize会创建数据目录、系统表,并生成一个 root@localhost 的临时密码。数据目录必须为空,否则初始化直接报错;--user=mysql让 mysqld 以 mysql 用户身份创建文件,避免目录属主不对导致启动失败。临时密码只在第一次登录时有效,登录后必须立刻 ALTER USER,就算你想设简单密码,也会被 validate_password 插件拦截,这就是 5.7 默认策略的一部分,也是考题里反复出现的场景。
3.2 给每道题做实验映射:用一条命令验证一个知识点
题库 docx 里每道题,我建议都做一次“实验映射”:把题干翻译成一个可以在实验机上执行的验证动作。以“MySQL 5.7 默认事务隔离级别”这道题为例,先别背答案“REPEATABLE-READ”,去实验机敲这两条:
-- 5.7 官方推荐的变量名 SELECT @@transaction_isolation; -- 兼容别名,5.7 中已标记废弃,但还能查 SELECT @@tx_isolation;逻辑说明:这两个变量查出来的值可能一样,但变量名的新旧本身就是考点。5.7 里 GLOBAL 和 SESSION 两个作用域都要会区分,docx 里经常故意把 global 和 session 写反。你在实验机上做成一张速查表,考试时遇到这类题,相当于把原题背下来了。
再比如“什么时候需要 FLUSH PRIVILEGES”这道题:正确答案是“用了 INSERT/UPDATE 直接改 mysql.user 表后需要”,而“用了 CREATE USER 或 GRANT 后不需要”。这句话背下来容易,但你去实验机上亲手改一次 mysql.user 表再踩一次权限不生效的坑,印象会深得多。备考阶段宁可多花半小时在实验机上折腾,也别把时间花在反复背那道已经会的题上。
3.3 维护一份命令复盘表:docx 之外真正属于你的备考资产
刷题到中期,你会发现自己反复错的是同一批题。这时候不要继续刷新题,而是停下来做复盘表。我用的模板长这样:
| 题号 | 题干关键词 | 真实考点 | 验证命令 | 实验现象 | 备注 |
|---|---|---|---|---|---|
| 102 | GTID 复制报错 | server-uuid 冲突 | cat /var/lib/mysql/auto.cnf | 主从 UUID 相同 | 从库改 UUID 后重启 |
| 118 | 临时密码找不到 | 初始化日志路径 | grep temporary /var/log/mysqld.log | 日志无记录 | 检查 datadir 权限 |
这张表最大的作用,是把 docx 的“标准答案”转换成自己的排错经验。考试里很多场景题,给的就是复盘表第二列那种一句话故障描述,你能从“现象”直接跳到“解决命令”,靠的不是背题,而是你已经真跑过一遍这条链路。
4. 1z0-888 的三座大山:备份恢复、主从复制、性能诊断
4.1 mysqldump 的四个必调参数:single-transaction、master-data、set-gtid-purged、quick
备份恢复是 1z0-888 里权重最高的域之一。而 mysqldump 又是最常考的工具,它一套参数组合,几乎能覆盖考试里的所有选择题。
mysqldump --single-transaction --master-data=2 \ --set-gtid-purged=OFF --routines --triggers --events \ -h 127.0.0.1 -u backup_user -p \ --databases app_db > /backup/app_db.sql逻辑说明与参数说明:
--single-transaction:InnoDB 表在导出时开启一个一致性的读事务,不加这个参数,导出过程中别的会话写入数据会导致备份集不一致,这是 5.7 里线上备份的默认姿势。--master-data=2:把 CHANGE MASTER TO 语句作为注释写进备份文件,同时会触发 FLUSH TABLES WITH READ LOCK 获取 binlog 坐标。这个参数在备份里写明了“该备份对应哪个 binlog 位置”,恢复后做复制全靠它。--set-gtid-purged=OFF:如果你的主库开了 GTID,导出的文件里默认会带有 SET @@GLOBAL.gtid_purged 语句。从库恢复时如果不想让备库继承这套 GTID 区间,就把它关掉;考试里经常问“为什么备份文件里有 gtid_purged”,答案就是这个参数链。--routines --triggers --events:存储过程、触发器、事件默认不备份,线上丢过数据的人都知道这三个不开等于埋雷。
注意--databases app_db后面跟着的是库名列表,备份文件里会带 CREATE DATABASE 语句;如果不加这个参数,恢复时需要手动建库。这个细节也是考试题爱挖的坑。
4.2 GTID 主从复制:change master to 的参数清单与两个开关
复制是 1z0-888 的另一座大山,GTID 模式是 5.7 复制题的核心。配置主从时,第一步先在主库的 my.cnf 里打开两个开关:
[mysqld] gtid_mode=ON enforce_gtid_consistency=ON server-id=1 log-bin=mysql-bin参数说明:gtid_mode=ON开启 GTID,enforce_gtid_consistency=ON禁止执行会导致 GTID 不一致的语句,比如老版本里 CREATE TABLE ... SELECT 会被拒。5.7.6 之后对这种语句会自动改写为两条语句执行,但题库如果还在考“GTID 下不能执行 CREATE TABLE ... SELECT”,你要看清题干描述的是哪个版本行为。
从库执行:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='StrongPass_1', MASTER_AUTO_POSITION=1, MASTER_CONNECT_RETRY=10; START SLAVE; SHOW SLAVE STATUS\G逻辑说明与参数说明:
MASTER_AUTO_POSITION=1是 GTID 复制的关键,它告诉从库用 GTID 自动定位 binlog 位置,而不是手工指定MASTER_LOG_FILE和MASTER_LOG_POS。考试里如果出现“使用 GTID 复制时 change master to 必须省略哪两个参数”,答案就是那两个。MASTER_CONNECT_RETRY是断线重连间隔,默认 60 秒太慢,练习题里经常会问“网络抖动后从库多久自动重连”,就是考这个参数。- SHOW SLAVE STATUS 的输出里,
Slave_IO_Running和Slave_SQL_Running必须都是 Yes;Last_IO_Errno和Last_SQL_Errno是排错入口,每次在实验机做复制实验,都要养成看完这两个字段再下结论的习惯。
4.3 性能诊断:从 performance_schema 和 sys schema 读真实负载
性能诊断在 1z0-888 里占比不如备份和复制,但它是把前面所有知识串起来的那根线。5.7 的 performance_schema 默认开启,sys schema 也在初始化时就装好了,这两样东西就是考试里“看监控图选结论”那类题的真实来源。
-- 查看当前非空闲连接在做什么 SELECT THREAD_ID, PROCESSLIST_ID, PROCESSLIST_USER, PROCESSLIST_DB, PROCESSLIST_COMMAND, PROCESSLIST_TIME FROM performance_schema.threads WHERE PROCESSLIST_COMMAND <> 'Sleep'; -- 按语句类型看累计耗时排行 SELECT DIGEST_TEXT, COUNT_STAR, AVG_TIMER_WAIT / 1e12 AS avg_ms FROM performance_schema.events_statements_summary_by_digest ORDER BY AVG_TIMER_WAIT DESC LIMIT 10;逻辑说明:第一条语句回答“现在数据库上谁在跑、跑了多久”,是处理连接数打满这种故障的第一反应。第二条语句回答“哪些 SQL 消耗了最多时间”,DIGEST_TEXT 是去掉了具体参数值之后的模板文本,ORDER BY AVG_TIMER_WAIT DESC 找到的就是需要优化的慢语句。docx 里不少“诊断题”问的是“DBA 第一步应该看什么”,答案往往是查 performance_schema 而不是直接改参数,这个判断顺序比 SQL 本身更重要。
sys schema 则是 performance_schema 的“包装视图”,比如sys.session、sys.processlist、sys.io_global_by_file_by_bytes,查询起来更短。考试里如果遇到“哪张表能直接反映当前会话状态”,优先往 sys 和 performance_schema 方向答,而不是去 information_schema 里翻。
5. 背题库容易翻车的 5 个坑:docx 版本过期、答案错误、环境不一致
5.1 题库还在教你 mysql_install_db:初始化命令变了
现象:docx 里写“初始化数据目录执行 mysql_install_db --datadir=/var/lib/mysql”,你照做,终端提示 command not found。
原因:mysql_install_db 在 MySQL 5.7 中被移除了,替代方案是mysqld --initialize。这份题库的原始来源是 5.6 甚至更早的复习资料,作者只改了封面,没改内容。
解决:所有涉及初始化的题,一律以mysqld --initialize --user=mysql为准。考试题干如果出现 mysql_install_db 这个名词,它大概率是干扰项,尤其当另一个选项是 mysqld --initialize 时,选后者。
5.2 拿 MySQL 8.0 练 5.7 的题:认证插件先给你一击
现象:你在本机装了 MySQL 8.0,用工具连上去,密码是对的但死活报认证失败,或提示 mysql_native_password 已废弃。
原因:8.0 默认认证插件是 caching_sha2_password,5.7 默认是 mysql_native_password。1z0-888 考的是 5.7 行为,题目里说“默认认证插件是哪一种”,答案锁定 mysql_native_password;可你用 8.0 环境验证,连用户都建不出来,直接怀疑人生。
解决:实验环境必须锁 5.7。已经装了 8.0 的机器,建议单独开虚拟机或容器跑一个 5.7,别在 8.0 里做 1z0-888 的练习。这条是血泪经验,我见过有人在 8.0 上练了一个星期,最后考试遇到“5.7 默认认证插件”还是选错,就是被环境带偏了。
5.3 临时密码找不到,以及 validate_password 的连环锁
现象:mysqld --initialize 执行完,grep 临时密码,日志里没有 [Note] 那一行,登录不进去。
原因:常见原因是错误日志路径没配置,或者 datadir 里已经有旧数据,初始化中途退出。另一个相关场景是:你找到了临时密码、登录成功,但 ALTER USER 把密码改成 123456 时,报 ERROR 1819,提示密码不满足策略。
解决:先确认 datadir 为空,再初始化;日志路径用默认的 /var/log/mysqld.log,启动一次 mysqld 后再 grep。密码策略问题可以临时调低:SET GLOBAL validate_password_policy=LOW;改完再 ALTER USER,测试结束后改回 MEDIUM。考试里问“为什么改不了弱密码”,答案就是 validate_password 默认策略,这是个高频送分题。
5.4 克隆虚拟机做复制实验:server-uuid 撞车
现象:你从模板克隆了两台 CentOS 虚拟机,主从都装好 MySQL 后配置复制,从库 IO 线程起不来,错误日志里写“master and slave have equal MySQL server UUIDs”。
原因:克隆虚拟机时,/var/lib/mysql/auto.cnf 被原样复制,两台机器上的 server-uuid 完全一样。GTID 复制要求每个实例的 UUID 唯一,不然无法区分事务来源。
解决:改从库的 auto.cnf,把 server-uuid 换掉,重启 MySQL:
cat /var/lib/mysql/auto.cnf # 修改 UUID 后重启 systemctl restart mysqld这个坑在 docx 里一般只占一道题,但自己做实验时能卡你半小时。迁移虚拟机、打包镜像、复制数据目录之后,都要检查 auto.cnf,这条可以写进你的复盘表。
5.5 答案把 tx_isolation 当标准答案:5.7 的变量改名陷阱
现象:docx 某题问“查看当前隔离级别,正确命令是哪个”,给出的标准答案里只有 SELECT @@tx_isolation。
原因:题库没有同步 5.7 的变量改名。tx_isolation 是 5.6 及之前的变量名,5.7 里改成了 transaction_isolation,tx_isolation 只是兼容别名,并且被标记为废弃。
解决:考试时优先选 transaction_isolation 开头的选项。如果两个选项同时出现,选官方推荐名那个。这类“新老变量名并存”的考点在 5.7 里不止一个,比如 sql_mode、optimizer_switch 都有类似情况,刷题时看到变量名要顺手去实验机查一下当前版本的真实输出。
6. 考前一周把题库“清零”:两轮筛题和一份冷启动预案
6.1 两轮筛题法:把 docx 越刷越薄
考前一周别再从头到尾刷整本 docx。我的做法是第一轮快速过,凡是一眼能写出答案的题直接略过;凡是犹豫超过五秒的题,在题号前标一个记号。第二轮只做这些标记题,做对一道就擦掉一道。到考前一天,文档里剩下的就是你反复错的那几道题,这时候集中看它们的复盘表,比刷一百道新题有用得多。这个动作的价值在于,它把备考从“覆盖所有知识点”变成了“只处理知识盲点”,效率差好几倍。
6.2 三分钟冷启动预案:杀库、恢复、追 binlog
我给自己的最后一个练习,叫“三分钟冷启动”:把实验机的 mysqld 服务停掉,只允许自己用三分钟把数据库恢复到“出事前一秒”的状态。步骤固定为:先确认 binlog 文件还在,再恢复全量备份,最后用 mysqlbinlog 追到指定时间点。
# 模拟故障:进程异常退出,数据目录还在 systemctl stop mysqld # 查看现有 binlog 文件,确定追哪个文件 ls -lt /var/lib/mysql/binlog.* mysqlbinlog --stop-datetime="2025-01-20 03:00:00" \ /var/lib/mysql/binlog.000012 > /tmp/recover.sql # 全量备份恢复后,回放增量日志 mysql -uroot -p < /backup/app_db.sql mysql -uroot -p < /tmp/recover.sql参数说明:--stop-datetime用于指定恢复边界,这个时间点要在误操作发生之前。如果 binlog 里有 DROP TABLE 或 DELETE 这类破坏性语句,直接整段回放等于二次事故,所以要先把生成的 recover.sql 打开看一眼,再用 grep 过滤掉危险语句。这个练习做完,1z0-888 里的备份恢复场景题基本都变成了你已经做过一遍的流程。
考 1z0-888 那年,我最后一周没再碰 docx,只干一件事:每天把主从复制干掉一次再拉起来,每天做一次备份恢复冷启动。考场上有两道复制判断题和一个恢复场景题,我等于把原题提前做过了。这套办法救过我不少次,希望也能帮到你。
本文还有配套的精品资源,点击获取