为生产环境数据库提供审计功能是非常重要的,一方面,敏感操作和误操作有据可循,简化运维复杂度;另一方面,提高 DBA 以及相关使用方的风险意识。MySQL 提供了 3 种方式实现审计功能:audit_log.so 插件实现审计(企业版提供)、init-connect 参数 + access_log + binlog 实现审计、general log 记录所有操作。general log 会记录详细的 SQL 执行记录,但是生产环境如果业务量大,会产生大量的磁盘 IO 操作,严重降低数据库性能,所以生产环境一般不会开启 general log。除此之外,我们可以通过 init-connect 参数 + access_log + binlog 的方法进行 MySQL 的操作审计。由于 MySQL binlog 记录了所有对数据库产生实际修改的 SQL 语句、执行时间和 connection_id,但是却没有记录 connection_id 对应的详细用户信息。在后期审计进行行为追踪时,根据 binlog 记录的行为及对应的 connection_id,再加上之前连接记录进行分析,可以得出最后的结论。

Read more...


2017 年 5 月 13 日,应用性能管理大讲堂广州站圆满落幕,其中来自三七互娱的 DBA 温国兵在会场与各位进行了精彩的 Redis 技术分享。Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。如今,互联网业务的数据正以更快的速度在增长,数据类型越来越丰富,这对数据处理的速度和能力提出了更高要求。Redis 是一种开源的内存非关系型数据库,给开发人员带来的体验是颠覆性的。在自始至终的设计过程中,都充分考虑高性能,这使得 Redis 成为当今速度最快的 NoSQL 数据库。考虑高性能的同时,高可用也是很重要的考虑因素。互联网 7x24 无间断服务,在故障期间以最快的速度 Failover,能给企业带来最小的损失。那么,在实际应用中,都有哪些高可用架构呢?架构之间有何优劣?我们应该怎么取舍?有哪些最佳实践?

Read more...


数据库在使用的过程中会随着数据量的增加而需要扩容,一般需要扩容的原因如下:历史数据量增加,磁盘空间不足;计算的数据量增加,计算性能跟不上(CPU 或磁盘 IO 吞吐限制); 网络传输量增加,网卡限制。为了增加计算节点,Greenplum 提供了 gpexpand 扩容脚本。此次扩容遇到不少问题,总结如下:1. Greenplum 服务器不建议运行在非标准 SSH 端口上。2. root 和 gpadmin 用户都需要做 SSH 等效性验证。3. 扩容过程之前检测磁盘空间是否充裕、时间是否同步。4. 扩容过程中如果出现某张表没有分布,需要重新执行 gpexpand -d 60:00:00 -D gpexpand 命令。5. 扩容过程中,注意告警信息,包括 Greenplum 机器负载、流量和进程数。

Read more...


SQLAdvisor 是由美团点评公司北京 DBA 团队开发维护的 SQL 优化工具:输入 SQL,输出索引优化建议。它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。目前 SQLAdvisor 在美团公司内部大量使用,较为成熟、稳定。美团点评开源 SQL 优化工具 SQLAdvisor 得到的优化建议比较满意,建议在线上试用一段时间。这个工具的成本在于需要在线上 DB 安装相关依赖,如果确认采用,可以考虑在初始化 DB 服务器时部署此工具。

Read more...


在平时的迁移或者其他维护场景中,我们需要利用备份的物理 binlog 做回溯。本篇文章根据真实案例进行讲解,如何优雅地利用 binlog 进行物理回溯。结论如下:拷贝回去的 binlog,需要将属性改为 mysql;mysql-bin.index 这个文件不管加一行减一行,在触发 FLUSH LOGS 的时候原有的复制会被中断。如果旧 Master 有从库,恢复其他从库数据的时候,需要暂时将已有的从库同步停掉(执行 STOP SLAVE),就能避免中断;任何线上操作,都要在完备的测试前提下再操作;迁移过程中,重要的一点是做好数据校验,不管是用 pt,还是手动写脚本,这个过程不能缺失。

Read more...