我们 MySQL 数据库基本架构是 Github 关键组件。 MySQL 供给 Github.com、 GitHub 的 API 和验证等等的办事。每一次的 git 请求都以某种方法触及 MySQL。我们的义务是保持数据的可用性,并保持其完全性。即使我们 MySQL 集群是按流量分派的,然则我们照样须要履行深度清理、即时更新、在线模式schema迁徙、集群拓扑重构、连接池化pooling和负载均衡等义务。 我们建有基本架构来主动化测试这些操作,在这篇文┞仿中,我们将分享几个例子,来解释我们是若何经由过程持续测试打造我们的基本架构的。这是让我们一梦到天亮的根本保障。
出现:纷乱测试
备份
除了完全的二进制备份外,我们天天还会多次运行逻辑备份。这些备份数据可以让我们的工程师获取到最新的数据副本。有时刻,他们欲望大年夜表中获取一整套数据,以便他们可以在一个临盆级范围的表上测试索引的修改,或查看特准时光以来的数据。Hubot 可以让我们恢复备份的表,并且当表预备好应用时会通知我们。
- .mysql backup-list locations
Hubot
- +-----------+------------+---------------+---------------------+---------------------+----------------------------------------------+
- | Backup ID | Table Name | Donor Host | Backup Start | Backup End | File Name |
- +-----------+------------+---------------+---------------------+---------------------+----------------------------------------------+
- | 1699494 | locations | db-mysql-0903 | 2017-07-01 22:09:17 | 2017-07-01 22:09:17 | backup-mycluster-locations-1498593122.sql.gz |
- | 1699133 | locations | db-mysql-0903 | 2017-07-01 16:11:37 | 2017-07-01 16:11:39 | backup-mycluster-locations-1498571521.sql.gz |
- | 1698772 | locations | db-mysql-0903 | 2017-07-01 10:09:21 | 2017-07-01 10:09:22 | backup-mycluster-locations-1498549921.sql.gz |
- | 1698411 | locations | db-mysql-0903 | 2017-07-01 04:12:32 | 2017-07-01 04:12:32 | backup-mycluster-locations-1498528321.sql.gz |
- | 1698050 | locations | db-mysql-0903 | 2017-06-30 22:18:23 | 2017-06-30 22:18:23 | backup-mycluster-locations-1498506721.sql.gz |
- | ...
- | 1262253 | locations | db-mysql-0088 | 2016-08-01 01:58:51 | 2016-08-01 01:58:54 | backup-mycluster-locations-1470034801.sql.gz |
- | 1064984 | locations | db-mysql-0088 | 2016-04-04 13:07:40 | 2016-04-04 13:07:43 | backup-mycluster-locations-1459494001.sql.gz |
- +-----------+------------+---------------+---------------------+---------------------+----------------------------------------------+
tomkrouper
Hubot