数据安全对于普通人而言会很陌生,然而早已在 DBA 心里生根发芽。数据对于一家企业的重要程度不言而喻,个人数据的管理也是极其重要,否则当数据损坏或者永久丢失,那将是毁灭性的灾难。根据墨菲定律,凡是可能出错的事必定会出错。在计算机世界里,没有任何系统、任何组件是 100% 靠谱的。在架构世界里,高可用是非常重要的考虑点。在现实世界里,也有很多黑天鹅事件。做好数据安全策略,比如软件开启云同步、数据备份多份、Time Machine 云备份、Dropbox Plus 云备份、定期淘汰硬盘、重要文件加密、有条件做 NAS等。数据是无价的,不要等到数据无法恢复时再后悔莫及。

Read more...


想了半天标题,不知如何是好。时间管理这个主题提及次数太多,道和术也太多,然而找到适合自己的才是最好的。回到问题本身,我们来谈谈时间。时间这个概念理解起来非常复杂。时间是什么?时间是左手腕上手表、墙上挂钟的滴答循环?时间是屏幕上的数字跳跃?时间是沙漏里沙子的流淌?在笔者看来,这些都只是时间的表现形式,是我们人类这样定义时间,赋予时间这样的意义。时间是个相对概念,我们靠万物生长、朝夕日落来感受时间的存在,另外一个不争的事实,我们都在老去。当我们无视时间,感受不到时间的存在,这就是「心流」。一切管理,归根结底都是对自我的管理,工具再多再好也只是辅助。

Read more...


为生产环境数据库提供审计功能是非常重要的,一方面,敏感操作和误操作有据可循,简化运维复杂度;另一方面,提高 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...