深山大咖
1月前来过
全职 · 800/日  ·  17400/月
工作时间: 工作日20:00-24:00、周末20:00-24:00工作地点: 远程
服务企业: 0家累计提交: 0工时
联系方式:
********
********
********
聊一聊

使用APP扫码聊一聊

个人介绍

熟悉 mysql、redis、tidb 等数据库日常运维工作。熟悉常见的高可用、监控、分库分解决方案方案。熟悉常见数据库自动化运维解决方案。熟悉 python、go 编程语言。熟悉 Django、DRF、gofram 等后端框架。


工作经历

  • 2018-08-04 -至今买卖平台DBA

    1、数据库高可用改造:基于开源中间件二次开发,增加切换防抖、切换通知、切换失败降级等; 2、慢查询治理专项:采集统计工具开发、平台展示、推动治理、自动诊断; 3、监控改造:客户端单机多实例采集、展示; 4、paas 平台建设:数字资产管理、SQL 封禁、数据库瘦身、备份管理、巡检等功能开发; 5、数据库降本推动:MySQL 降本方案选型、k8s 部署数据库可行性分析、k8s CRD(mysql-operator)开发等。

  • 2017-08-04 -2018-04-19维信金科DBA

    1、MySQL、Redis 等数据库日常运维管理,数据库高可用架构调研和搭建、备份脚本制定、监控部署管理等。 2、sql 上线审核、开发规范制定与推广、数据库版本升级统一迁移、成本核算等。 3、数据库运维平台开发,主要包含:sql审核、慢查询优化、自助查询、备份管理等功能。

  • 2015-07-01 -2017-04-13中国外汇交易中心数据库工程师

    1、MySQL 数据库的日常工单上线审核、备份、监控环境搭建、故障处理等日常运维事物处理。 2、运维脚本开发、产品上线评审。

教育经历

  • 2011-09-01 - 2015-06-30湖南工业大学通信工程本科

    学信网报告地址,如有需要可提供

技能

MySQL
Oracle
MongoDB
0
1
2
3
4
5
0
1
2
3
4
5
作品
《MySQL DBA 精英实战课》

目 录 第 1 章 MySQL 的基础知识 /1 1.1 数据库的安装全过程 /1 1.1.1 平台的选择 /1 1.1.2 安装包的选择 /2 1.1.3 系统环境的配置 /3 1.1.4 数据库的安装 /3 1.2 数据库的简单使用 /7 1.2.1 连接 /7 1.2.2 数据库的创建和使用 /8 1.2.3 增、删、改、查 /8 1.3 总结 /9 第 2 章 MySQL 的索引 /10 2.1 索引算法 /10 2.1.1 顺序查找 /10 2.1.2 二分查找 /10 2.1.3 二叉查找树 /11 2.1.4 平衡二叉树 /12 2.1.5 B 树 /12 2.1.6 B+树 /13 2.1.7 B+树索引 /13 2.2 MySQL 中的索引类型 /14 2.2.1 聚集索引 /14 2.2.2 辅助索引 /15 2.2.3 唯一索引 /17 2.2.4 联合索引 /18 2.3 MySQL 中的索引优化 /21 2.3.1 ICP /21 2.3.2 MRR /23 2.4 关于索引的建议 /24 2.5 总结 /24 第 3 章 MySQL 的锁 /25 3.1 共享锁和排他锁 /25 3.2 意向锁 /25 3.3 记录锁、间隙锁、插入意向锁和临键锁 /27 3.4 MDL /29 3.5 死锁 /31 3.6 总结 /34 第 4 章 MySQL 的事务 /35 4.1 事务的特性 /35 4.2 事务的实现 /35 4.2.1 原子性的实现 /36 4.2.2 一致性的实现 /36 4.2.3 隔离性的实现 /36 4.3 MVCC 实现 /37 4.3.1 什么是 MVCC /38 4.3.2 实现的原理 /38 4.4 普通读和当前读 /40 4.4.1 普通读 /40 4.4.2 当前读 /41 4.4.3 小结 /42 4.5 总结 /42 第 5 章 MySQL 的体系结构 /43 5.1 MySQL 的结构 /43 5.2 存储引擎 /44 5.3 InnoDB 的体系结构 /46 5.3.1 内存结构 /46 5.3.2 磁盘结构 /48 5.4 总结 /53 第 6 章 MySQL 常用的日志文件 /54 6.1 Binlog /54 6.1.1 Binlog 基础 /54 6.1.2 开启和关闭 Binlog /55 6.1.3 Binlog 的作用 /56 6.1.4 Binlog 记录的格式 /56 6.1.5 Binlog 的解析 /57 6.1.6 MySQL 8.0 Binlog加密 /59 6.1.7 Binlog 的清除 /60 6.1.8 Binlog 的落盘 /61 6.1.9 Binlog 相关的参数 /62 6.2 General Log /62 6.2.1 General Log 的开启 /62 6.2.2 General Log 的用法 /63 6.3 Slow Log /63 6.3.1 Slow Log 的开启 /64 6.3.2 Slow Log 的特殊设置 /64 6.3.3 Slow Log 的内容解析 /64 6.3.4 MySQL 8.0 慢查询额外信息的输出 /66 6.4 Error Log /66 6.4.1 Error Log 的配置 /67 6.4.2 Error Log 的切割 /67 6.4.3 借助 Error Log 定位的问题 /67 6.5 Redo Log /68 6.5.1 Redo Log 初探 /68 6.5.2 Redo Log 的落盘 /69 6.5.3 Redo Log 的数量及大小修改 /71 6.5.4 CheckPoint /72 6.5.5 LSN /72 6.5.6 MySQL 8.0 中的 RedoLog 归档 /73 6.5.7 MySQL 8.0 中的 RedoLog 禁用 /74 6.6 Undo Log /75 6.6.1 初识 Undo Log /75 6.6.2 Undo Log 的 Purge /76 6.6.3 两种 Undo Log /76 6.6.4 Undo Log 的记录格式 /76 6.6.5 回滚时刻 /77 6.6.6 Undo Log 的相关配置 /77 6.7 总结 /77 6.7.1 Binlog 和 Redo Log 的区别 /78 6.7.2 Undo Log 和 RedoLog 的区别 /78 第 7 章 MySQL 的优化 /79 7.1 硬件优化 /79 7.1.1 硬件的选择 /79 7.1.2 RAID 的选择 /80 7.2 操作系统的优化 /82 7.2.1 文件系统的选择 /82 7.2.2 系统参数的选择 /82 7.2.3 MySQL 多实例资源隔离优化 /83 7.3 参数调优 /87 7.3.1 参数的加载顺序 /87 7.3.2 常用参数的调优 /88 7.4 慢查询分析 /97 7.4.1 Explain /98 7.4.2 Performance Schema分析 /105 7.4.3 Trace 追踪器 /107 7.5 SQL 语句优化 /113 7.5.1 分页查询优化 /113 7.5.2 not in 优化 /116 7.5.3 order by 优化 /119 7.5.4 group by 优化 /122 7.5.5 索引 hint 优化 /123 7.6 总结 /124 第 8 章 MySQL 的规范 /125 8.1 建表的规范 /125 8.2 部署和操作的规范 /128 8.3 SQL 的规范 /129 8.4 总结 /131 第 9 章 MySQL 的主从复制 /132 9.1 主从复制的搭建 /133 9.2 GTID 复制 /135 9.2.1 GTID 主从复制的配置 /136 9.2.2 GTID 的相关知识 /138 9.2.3 GTID 的自动定位 /140 9.2.4 使用 GTID 复制模式的限制 /141 9.3 MySQL 复制报错的处理 /141 9.3.1 主从复制 crash-safe /141 9.3.2 跳过 GTID 模式下的复制中断错误 /142 9.4 MySQL 半同步复制 /145 9.4.1 MySQL 半同步复制的注意事项 /146 9.4.2 MySQL 半同步复制中的无损复制 /146 9.4.3 无损复制的配置和参数 /147 9.4.4 无损复制的改进 /150 9.5 MySQL 并行复制 /151 9.5.1 MySQL 并行复制的原理和演进 /151 9.5.2 MySQL 并行复制的配置 /152 9.6 总结 /153 第 10 章 MySQL 的安全 /154 10.1 安全指南 /154 10.2 访问控制 /154 10.3 预留账户 /155 10.4 角色管理 /156 10.5 密码管理 /157 10.5.1 密码过期 /158 10.5.2 密码重用 /159 10.5.3 密码验证 /160 10.5.4 双密码支持 /161 10.5.5 随机密码 /161 10.5.6 密码试错 /162 10.6 账户资源限制 /162 10.7 加密连接 /163 10.8 审计 /164 10.9 总结 /166 第 11 章 MySQL 的备份 /167 11.1 物理备份和逻辑备份 /167 11.2 mysqldump /167 11.2.1 备份用户的权限 /168 11.2.2 备份举例及参数解释 /168 11.2.3 数据恢复 /178 11.3 mydumper /178 11.3.1 mydumper 的安装 /179 11.3.2 使用 mydumper备份数据 /179 11.3.3 使用 myloader 进行数据恢复 /180 11.4 XtraBackup /181 11.4.1 XtraBackup 的安装 /181 11.4.2 XtraBackup 的工作流程 /181 11.4.3 XtraBackup 的用法举例 /182 11.5 Clone Plugin /185 11.5.1 Clone Plugin 的安装 /185 11.5.2 Clone Plugin 的用法举例 /185 11.6 总结 /187 第 12 章 MySQL 的监控 /188 12.1 常见的监控项 /188 12.1.1 系统相关 /188 12.1.2 状态相关 /188 12.1.3 锁相关 /190 12.1.4 连接相关 /191 12.1.5 复制相关 /192 12.1.6 参数相关 /193 12.1.7 业务相关 /193 12.2 使用 Zabbix 监控 MySQL /194 12.2.1 架构图 /194 12.2.2 实验环境 /195 12.2.3 安装 Zabbix Server /195 12.2.4 配置 Zabbix 数据库 /195 12.2.5 编辑配置文件 /196 12.2.6 启动 Zabbix Server /196 12.2.7 Zabbix Web 界面初始化 /197 12.2.8 安装 Zabbix Agent /201 12.2.9 安装 Percona 插件 /201 12.2.10 在 Agent 上创建Zabbix 监控用户 /202 12.2.11 修改配置文件 /202 12.2.12 测试监控 /202 12.2.13 导入 Percona 模板 /203 12.2.14 Zabbix Web 增加主机配置 /205 12.2.15 查看监控数据 /207 12.3 使用 Prometheus 监控MySQL /208 12.3.1 架构图 /208 12.3.2 实验环境 /209 12.3.3 部署 Prometheus /209 12.3.4 部署 node_exporter组件 /210 12.3.5 部署 mysqld_exporter组件 /211 12.3.6 配置 Prometheus获取监控数据 /212 12.3.7 部署 Grafana /215 12.3.8 为 Grafana 配置Prometheus 数据源 /216 12.3.9 使用 Grafana 展示Linux 的监控数据 /218 12.3.10 使用 Grafana 展示MySQL 的监控数据 /220 12.4 使用 PMM 监控 MySQL /222 12.4.1 架构图 /222 12.4.2 实验环境 /222 12.4.3 安装并启动 Docker /222 12.4.4 安装 PMM Server /223 12.4.5 安装 PMM Client /224 12.4.6 PMM Client 连接PMM Server /225 12.4.7 配置 MySQL 监控 /225 12.4.8 打开监控页面 /226 12.5 总结 /227 第 13 章 MySQL 的高可用 /228 13.1 MHA /228 13.1.1 架构体系 /229 13.1.2 MHA 工具包 /229 13.1.3 部署和配置 MHA /230 13.1.4 原理 /233 13.1.5 小结 /234 13.2 Orchestrator /236 13.2.1 主要功能 /236 13.2.2 优势 /236 13.2.3 高可用 /236 13.2.4 执行计划 /238 13.2.5 集群重塑 /239 13.2.6 部署和配置Orchestrator /240 13.2.7 参数配置 /242 13.2.8 Hook 介绍 /243 13.2.9 集群的使用 /245 13.2.10 小结 /247 13.3 InnoDB Cluster /250 13.3.1 MGR 初探 /251 13.3.2 MGR 与传统复制的区别 /251 13.3.3 部署 InnoDB Cluster /253 13.3.4 InnoDB Cluster 的常用操作 /261 13.3.5 MGR 的原理 /265 13.3.6 MGR 的一致性保证 /267 13.4 总结 /269 第 14 章 MySQL 的分库分表 /270 14.1 分库分表的原则 /270 14.2 分库分表的场景 /270 14.3 拆分模式 /271 14.3.1 垂直拆分 /271 14.3.2 水平拆分 /271 14.4 分库分表的工具 /272 14.5 分库分表后面临的问题 /273 14.5.1 事务支持问题 /273 14.5.2 跨库查询问题 /273 14.5.3 中间件高可用问题 /273 14.6 总结 /274 第 15 章 MySQL 的周边工具 /275 15.1 Redis /275 15.1.1 MySQL 与 Redis 配合完成秒杀场景 /275 15.1.2 如何保证 Redis 和MySQL 数据一致 /276 15.2 ClickHouse 和 ClickTail /277 15.3 Percona Toolkit /284 15.3.1 pt-osc /284 15.3.2 pt-query-digest /284 15.3.3 pt-kill /286 15.3.4 pt-table-checksum /287 15.3.5 pt-table-sync /287 15.4 总结 /287 第 16 章 MySQL 8.0 的新特性 /288 16.1 事务性数据字典 /288 16.1.1 MySQL 8.0 之前版本的数据字典 /288 16.1.2 MySQL 8.0 之前版本的数据字典存在的问题 /289 16.1.3 MySQL 8.0 的数据字典 /290 16.1.4 序列化字典信息 /292 16.1.5 MySQL 8.0 的数据字典的优势 /293 16.2 快速加列 /293 16.2.1 快速加列功能的使用和限制 /293 16.2.2 快速加列的原理 /294 16.2.3 快速加列的过程 /295 16.3 原子 DDL /295 16.3.1 原子 DDL 的使用范围和限制 /295 16.3.2 原子 DDL 的特性和操作 /296 16.3.3 原子 DDL 的原理 /298 16.3.4 原子 DDL 的调试 /298 16.4 资源组 /299 16.4.1 资源组系统和权限准备 /299 16.4.2 查看资源组信息 /300 16.4.3 使用资源组 /301 16.5 不可见索引 /302 16.6 窗口函数 /304 16.6.1 窗口函数的特性 /304 16.6.2 窗口函数的使用 /304 16.7 持久化全局变量 /309 16.8 其他新特性 /310 16.9 总结 /311 第 17 章 云时代 DBA 工作的变化 /312 17.1 3 种类型的云 /312 17.2 云应用的分类 /313 17.2.1 SaaS /313 17.2.2 IaaS /313 17.2.3 PaaS /313 17.2.4 DBaaS /314 17.3 RDS /314 17.4 云原生数据库 /314 17.5 上公有云的好处 /314 17.6 上公有云的缺点 /315 17.7 数据库上公有云前的注意事项 /315 17.8 传统 DBA 的工作 /316 17.9 上云后 DBA 工作的变化 /316 17.9.1 关注点 /317 17.9.2 监控 /317 17.9.3 备份 /318 17.9.4 迁移 /319 17.9.5 云数据库的使用规范 /322 17.9.6 云产品文档 /323 17.9.7 命令行工具 /323 17.9.8 API/SDK 工具 /324 17.9.9 成本控制 /324 17.10 云时代 DBA 的发展方向 /325 17.11 总结 /325

0
2023-04-12 17:33
数据库脱敏工具

1、主要功能:通用数据库客户端、文件校验、数据脱敏、敏感识别、数据导入导出等; 2、技术站:golang 3、解决痛点:敏感数据识别难、数据脱敏难、数据传递安全难保证等问题

0
2023-04-12 17:35
数据库运维平台化

1、主要功能:如部署、SQL审核、监控、高可用、备份管理、自愈、优化、分库分表等操作; 2、技术站:Golang、Python、vue 3、解决的痛点:人肉运维效率低下、错误率高、故障响应慢、审计不达标、开发客诉高等问题; 4、难点:开发者需要深入了解数据库运维的同时还要能有一定的开发能力; 5、外部依赖:主要依赖一些开源的成熟高可用组件、SQL审核主键、监控组件、分库分表组件等; 6、个人实现:SQL解析、SQL改写、Binlog解析采集、监控定制化、慢查询自动化审核实现等等;

0
2023-04-12 17:39
更新于: 2022-11-04 浏览: 568