如何有效的跟踪线上 MySQL 实例表和权限的变更

介绍 从系统管理员或 DBA 的角度来讲, 总期望将线上的各种变更限制在一个可控的范围内, 减少一些不确定的因素. 这样做有几点好处: 1. 记录线上的库表变更; 2. 对线上的库表变更有全局的了解; 3. 如果有问题, 方便回滚操作; 从这三点来看, 有很多种方式可以实现, 比如通过 migrate 等工具强制所有的操作都以统一的方式执行, 这需要开发人员做更多的配合, 所以这类工具在非规模话的业务场景中较难实现; 另外管理员或 DBA 也可以通过知识库比如 redmine 等类似的方式记录变更, 不过不可控因素很多, 特别依赖上线的流程, 也容易出现纰漏. 这就引申出本文要介绍的如何跟踪线上库表的变更,…

Continue reading

如何使用 iptables 来进行端口转发

1. 介绍 传统的端口转发工具portproxy 、rinetd 等, 这些应用工具都通过接收并转发 tcp 数据报文实现转发端口的目的, 但是都存在或多或少的缺陷, 比如不能 tcp/udp 同时支持, 难以修改数据报文的一些路由规则等. 庆幸的是我们可以通过 linux 的 iptables 的数据包过滤规则在 kernel 层面实现端口的转发. 在 iptables 的层面, 端口转发也可以称为端口映射, 是通过NAT(地址转发)的方式来修改数据包目的地址或端口, 再将报文转发到最终的主机(通常在没有公网地址的私有网络中). 通过这种方式用户既可以访问到远端的私有网络的机器(比如运行着 http 服务的主机). 2.…

Continue reading

memcached 内存分配及性能优化

memcached 介绍 memcached 是一个基于内存, 通过 key-value 方式访问和存储数据的工具. 一般通过缓存数据库查询和 api 调用等不经常变更的结果来减少程序直接访问数据库或 api 服务的次数, 进而提高动态 web 应用的性能; 由于 memcached 基于内存存储, 并没有持久化到硬盘中, 所以重启 memcached 或主机的操作会引起数据的丢失. 另外数据达到指定的内存值后, memcached 则采用基于 LRU(least recently used)算法自动删除不使用的缓存. 更具体的则包含以下特性: 协议简单(ascii…

Continue reading

raid 控制器对系统性能的影响

raid 控制器对系统性能的影响 raid 控制器介绍 raid 控制器的初衷设计是为了提高系统的性能, 通过管理将一组磁盘当做一个逻辑的单元进行处理, 进而使得系统更加稳定, 而且也具备了容错特性. 大多数企业的基础设施都以 raid 控制器作为保护磁盘数据的解决方案, 并提供更高的读写IO. 更多介绍见 intel 官方站点: intel-raid-controllers 不过在一般业务系统中, 我们通常使用 raid 控制器来满足数据的一致性需求. 最常见的则是在数据库系统中, 在是否使用 raid 以及使用那种 raid 的情况下, 数据的读写以及数据的一致性都会有很大的差别, 不同的 raid…

Continue reading