DBA 系统学习计划(从入门到进阶)

一、入门阶段(1-2 个月):夯实数据库基础

1.1 数据库理论基础(1 周)

  • 核心知识点:理解数据库基本概念(数据、表、字段、主键、外键、索引等);掌握数据库三大范式(1NF、2NF、3NF);区分关系型数据库(MySQL、Oracle、SQL Server)与非关系型数据库(MongoDB、Redis)的适用场景。
  • 学习资源:教材《数据库系统概论》(萨师煊版);B 站 "数据库系统概论" 公开课(中国大学 MOOC)。
  • 实践任务:手绘 ER 图(实体 - 关系图),描述一个简单业务场景(如电商用户 - 订单 - 商品关系)。

1.2 SQL 基础与实战(3-4 周)

  • 核心知识点
    • DDL(数据定义语言):CREATE(建表 / 库)、ALTER(修改表结构)、DROP(删除);
    • DML(数据操纵语言):INSERT(插入)、UPDATE(更新)、DELETE(删除数据);
    • DQL(数据查询语言):SELECT 基础查询、WHERE 条件(AND/OR/LIKE/IN)、GROUP BY 分组、HAVING 筛选、ORDER BY 排序、JOIN 关联(内连接 / 左连接 / 右连接)。
  • 学习资源:MySQL 官方文档(SQL 语法部分);LeetCode "数据库" 题库(前 50 道简单题)。
  • 实践任务:搭建本地 MySQL 环境(使用 XAMPP 或 Docker),完成 "学生 - 课程 - 成绩" 系统的表设计与 SQL 操作(含数据插入、多表查询、统计分析)。

1.3 数据库安装与基础配置(1 周)

  • 核心知识点:Windows/Linux 系统下 MySQL/Oracle 的安装步骤;配置文件修改(端口、字符集、最大连接数);服务启停与状态查看;客户端工具使用(Navicat、SQLyog、PL/SQL Developer)。
  • 实践任务:在 Linux(CentOS/Ubuntu)系统中安装 MySQL 8.0,配置远程连接,使用 Navicat 连接并执行 SQL 脚本。

二、进阶阶段(3-4 个月):核心运维与性能优化

2.1 数据库备份与恢复(2 周)

  • 核心知识点
    • 备份类型:全量备份、增量备份、差异备份;
    • 工具使用:MySQL(mysqldump、xtrabackup)、Oracle(RMAN、expdp/impdp);
    • 恢复策略:完整恢复、时间点恢复(PITR)、误删数据恢复(如 MySQL binlog 日志利用)。
  • 实践任务
  1. 使用 mysqldump 对 MySQL 数据库进行全量备份,编写 Shell 脚本实现每日自动备份;
  2. 模拟误删表数据,通过 binlog 日志进行时间点恢复;
  3. 使用 xtrabackup 实现 MySQL 增量备份与恢复。

2.2 索引设计与优化(2 周)

  • 核心知识点
    • 索引类型:B + 树索引(主键、普通、唯一)、哈希索引、全文索引、前缀索引;
    • 索引原理:B + 树结构与查询效率、聚簇索引 vs 非聚簇索引(InnoDB vs MyISAM);
    • 优化技巧:避免索引失效(如函数操作、类型转换)、覆盖索引、联合索引(最左前缀原则)、冗余索引清理。
  • 实践任务
  1. 分析慢查询 SQL(使用 EXPLAIN 命令),识别无索引或索引失效场景;
  2. 为电商 "订单表" 设计联合索引(如 order_user_id + order_create_time),对比优化前后查询耗时;
  3. 清理测试库中的冗余索引(使用 sys.schema_unused_indexes 视图)。

2.3 性能监控与调优(4-6 周)

  • 核心知识点
    • 监控工具:MySQL(Performance Schema、Sys Schema、Prometheus+Grafana)、Oracle(AWR、ASH 报告);
    • 性能指标:QPS、TPS、连接数、慢查询数、缓存命中率(InnoDB Buffer Pool)、锁等待时间;
    • 调优方向:参数调优(innodb_buffer_pool_size、max_connections、query_cache_size)、SQL 语句优化(避免子查询、优化 JOIN 顺序)、表结构优化(分库分表、分区表)。
  • 实践任务
  1. 在 MySQL 中启用 Performance Schema,监控慢查询(设置 long_query_time=1 秒),分析 TOP 10 慢 SQL 并优化;
  2. 使用 Prometheus+Grafana 搭建 MySQL 监控面板,实时查看 QPS、连接数等指标;
  3. 调优 InnoDB 参数(如将 innodb_buffer_pool_size 设置为服务器内存的 50%-70%),对比调优前后缓存命中率。

2.4 高可用架构搭建(3-4 周)

  • 核心知识点
    • 高可用方案:MySQL(主从复制、MGR 主从集群)、Oracle(RAC 集群)、Redis(主从 + 哨兵、集群);
    • 负载均衡:使用 ProxySQL、MaxScale 实现 MySQL 读写分离;
    • 故障切换:主从复制中手动切换与 MGR 自动故障转移。
  • 实践任务
  1. 搭建 MySQL 一主两从架构(基于 GTID 复制),配置读写分离(主库写、从库读);
  2. 部署 ProxySQL 作为中间件,实现 SQL 路由与故障自动切换;
  3. 模拟主库宕机,验证从库是否能正常接管服务(MGR 架构)。

三、高级阶段(2-3 个月):架构设计与专项技术

3.1 分库分表与分布式数据库(3 周)

  • 核心知识点
    • 分库分表场景:数据量超千万、单表性能瓶颈;
    • 拆分策略:水平拆分(按时间、用户 ID 哈希)、垂直拆分(按业务模块拆分表);
    • 工具与方案:Sharding-JDBC(客户端分片)、MyCat(中间件分片)、分布式数据库(TiDB、OceanBase)。
  • 实践任务
  1. 使用 Sharding-JDBC 对 "订单表" 按用户 ID 哈希进行水平分表(分 8 个表),测试数据插入与查询;
  2. 了解 TiDB 架构(存储层 TiKV、计算层 TiDB Server),部署本地测试集群并执行 SQL。

3.2 数据库安全与权限管理(2 周)

  • 核心知识点
    • 安全风险:SQL 注入、数据泄露、未授权访问;
    • 防护措施:最小权限原则(创建只读用户、业务用户)、数据加密(传输加密 SSL/TLS、存储加密 InnoDB 透明加密)、审计日志(开启 MySQL 审计插件);
    • 权限管理:MySQL(用户创建 CREATE USER、权限授予 GRANT)、Oracle(角色管理、表空间权限)。
  • 实践任务
  1. 为电商业务创建专用用户,仅授予 SELECT/INSERT/UPDATE 权限(无 DROP/ALTER 权限);
  2. 配置 MySQL SSL 加密连接,强制客户端使用 SSL 连接;
  3. 开启 MySQL 审计日志,记录用户登录与敏感操作(如 DELETE、DROP)。

3.3 非关系型数据库(NoSQL)运维(2-3 周)

  • 核心知识点
    • Redis:数据结构(String、Hash、List、Set、Sorted Set)、持久化(RDB、AOF)、主从复制、哨兵模式、集群部署;
    • MongoDB:文档模型、集合与索引、副本集、分片集群;
  • 实践任务
  1. 部署 Redis 主从 + 哨兵架构(1 主 2 从 3 哨兵),测试故障自动切换;
  2. 在 MongoDB 中创建 "用户日志" 集合,设计索引并执行聚合查询(如按日期统计日志数量)。

四、实战与认证阶段(长期)

4.1 项目实战(持续)

  • 推荐场景
  1. 搭建个人博客数据库(MySQL),实现备份、监控、性能优化;
  2. 模拟电商订单系统(分库分表 + Redis 缓存),解决高并发查询问题;
  3. 参与开源项目数据库维护(如修复慢查询、优化索引)。
  • 输出成果:编写技术文档(如《MySQL 主从复制部署手册》《Redis 性能调优总结》),发布到博客平台(如掘金、知乎)。

4.2 认证考试(可选,提升竞争力)

  • 推荐认证
  1. MySQL:Oracle Certified Professional, MySQL 8.0 Database Administrator (OCP);
  2. Oracle:Oracle Database 19c Administrator Certified Professional (OCP);
  3. Redis:Redis Certified Developer (RCD)。
  • 备考建议:结合官方教材与模拟题,先通过 OCA(初级)认证,再考取 OCP(高级)认证,认证过程中巩固核心知识点。

4.3 持续学习与社区交流

  • 学习渠道
    • 官方文档:MySQL、Oracle、Redis、MongoDB 官方文档(最权威资料);
    • 技术社区:掘金、InfoQ、V2EX(DBA 板块)、Stack Overflow(解决问题);
    • 会议与课程:Percona Live(数据库会议)、极客时间《MySQL 实战 45 讲》《Redis 核心技术与实战》。
  • 习惯养成:每周阅读 1 篇数据库技术文章,每月总结 1 次学习笔记,每季度参与 1 次技术交流(线上 / 线下)。

五、学习时间规划建议(按每天 2-3 小时)

|---------|-------|------------------------------------|
| 阶段 | 周期 | 每日学习重点 |
| 入门阶段 | 1-2 月 | 1 小时理论学习 + 1-2 小时实践操作 |
| 进阶阶段 | 3-4 月 | 1.5 小时技术学习 + 1 小时实战 + 0.5 小时总结 |
| 高级阶段 | 2-3 月 | 1 小时专项技术 + 1.5 小时架构实践 + 0.5 小时文档编写 |
| 实战与认证阶段 | 长期 | 1 小时项目实战 + 1 小时认证备考 / 社区交流 |

相关推荐
leo_yu_yty2 小时前
Mysql DBA学习笔记(客户端常用工具)
学习·mysql·dba
没有bug.的程序员2 小时前
SQL 执行计划解析:从 EXPLAIN 到性能优化的完整指南
java·数据库·sql·性能优化·explain·执行计划
qqxhb2 小时前
系统架构设计师备考第30天——关系数据库
数据库·系统架构·数据库设计·关系模式·范式·关系远算·完整性规则
小狗爱吃黄桃罐头2 小时前
正点原子【第四期】Linux之驱动开发学习笔记-6.1 pinctrl和gpio子系统
linux·驱动开发·学习
小心草里有鬼2 小时前
Linux 数据库 Mysql8 主从复制
linux·运维·数据库·sql·mysql
chen_note2 小时前
Keepalived两个集群实验
linux·服务器·数据库·keepalived·高可用集群
咩?2 小时前
深度学习中的关键工具与数据处理方法
深度学习·学习
boy快快长大3 小时前
@Transactional 事务注解
数据库·sql·oracle
sjh21003 小时前
【学习笔记】20年前的微芯an1078foc技术,smo滑模位置估计,反电动势波形还不错,为何位置估计反而超前了呢?
笔记·学习