Skip to content

最小权限、逻辑备份与 PITR ​

← 本站索引 | 练习答案

可运行 SQL ​

仅在本地实验实例执行,并替换实验密码:

sql
CREATE USER 'course_reader'@'localhost'
  IDENTIFIED BY 'replace-this-lab-password';
GRANT SELECT ON mysql_course.* TO 'course_reader'@'localhost';
SHOW GRANTS FOR 'course_reader'@'localhost';

SELECT @@log_bin, @@binlog_format, @@binlog_expire_logs_seconds;
SHOW BINARY LOG STATUS;

逻辑备份与恢复命令在 shell 运行:

bash
mysqldump --single-transaction --routines --events --triggers \
  --databases mysql_course > mysql_course.sql

mysql < mysql_course.sql

机制解释 ​

账户由 user 与 host 共同标识。权限应授予完成任务所需的最小对象和动作,应用迁移、运行、备份和监控账户应分离。

InnoDB 一致性逻辑备份常用 single-transaction 获取一致性快照,但长备份会保留旧版本;非事务表、DDL 并发、存储过程和账户等对象需要单独确认。PITR 以有效全量备份为起点,再重放目标区间 binlog。

真实边界 ​

  • 不把密码写进仓库、命令历史或备份文件名;使用安全凭据通道。
  • 备份必须加密、限制访问、校验完整性并验证保留策略。
  • 恢复目标必须是新实例,避免覆盖唯一可用副本。
  • RPO 是最多可丢数据量,RTO 是恢复时间;两者要通过演练证明。

练习 ​

  1. 验证 course_reader 能查不能改。
  2. 完成备份,在新实例恢复并比较表、行数和关键汇总。
  3. 记录一次业务更新前后的 binlog 位置,规划恢复到更新前。

验收清单 ​

  • 只读账户的正例和越权负例都已运行并保存结果。
  • 备份恢复到新实例,schema、精确行数和关键汇总通过校验。
  • PITR 报告记录起点、目标点、重放范围、RPO、RTO 和回切。

完成后核对答案

深度加餐:备份没有演练就只是大型幻觉 ​

最小权限防止误操作,备份与 PITR 负责灾难恢复;两者都要通过一次真实恢复证明。

先做一个可观察实验 ​

sql
CREATE USER 'report_reader'@'10.%' IDENTIFIED BY 'rotate-me';
GRANT SELECT ON billing.* TO 'report_reader'@'10.%';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'report_reader'@'10.%';

SHOW GRANTS FOR 'report_reader'@'10.%';

预期:报表账号只能读取 billing;SHOW GRANTS 是权限基线,密码和来源网段仍应由 secret 管理。

原理下潜与工程边界 ​

物理备份恢复整库速度快,逻辑备份便于迁移;PITR 需要基线备份加连续 binlog,并明确时间点、时区和一致性边界。恢复目标包含 RTO、RPO 与数据校验。

只备份主库不等于备份成功;binlog 保留周期不足会断链;恢复到临时实例后还要检查字符集、账户、事件和外部依赖。

反例排错路线 ​

每次备份记录 GTID/文件位置、开始结束时间、校验和与恢复测试结果;权限异常时先 SHOW GRANTS,再查角色继承和默认权限。

练习加码(仍不提供答案) ​

加码:设计“误删后恢复到删除前一分钟”的演练脚本,包含隔离恢复实例、binlog 应用、校验与切换证据。

验收时请补充:一份可复现的环境/数据前提、正常结果、失败结果以及可回滚或清理动作。

继续查阅:MySQL 8.4 参考手册(外部资料已收录于证据账本) · InnoDB 文档(外部资料已收录于证据账本)

用心记录每一步成长