11. 3.3 SqlChanges
Google-MySQL-Tools 对 MySQL 的 SQL 分析进行了一定的改变。为 MySQL 增加了新的 tokens,
新的函数,新的语句(statements),也为已有的语句增加了新的选项(options)。
3.3.1 New tokens
Google-MySQL-Tools 为 MySQL 增加了一些新的 token,主要包括:CLIENT_STATISTICS,
TABLE_STATISTICS, USER_STATISTICS, INDEX_STATISTICS, IF_IDLE, MAKE, MAPPED,
MAX_QUERIES_PER_MINUTE, NEW_PASSWORD, ROLE, SLOW, TCMALLOC,
IEEE754_TO_STRING, LAST_VALUE, ORDERED_CHECKSUM, UNORDERED_CHECKSUM。
3.3.2 New SQL functions
Google-MySQL-Tools 为 MySQL 增加了一些新的函数。包括:ORDERED_CHECKSUM,
UNORDERED_CHECKSUM, LAST_VALUE, HASH, IEEE754_TO_STRING, NEW_PASSWORD。这些函
数的具体信息可以通过这里查找到详细信息。参见 3.16 NewSqlFunctions
3.3.3 New options for existing statements
KILL <id> IF_IDLE 可以仅在一个连接空闲的时候切断它。MAX_QUERIES_PER_MINUTE 可以用
来替代 MAX_QUERIES_PER_HOUR,从而对查询的限制从每小时转为每分钟。CREATE MAPPED
USER 'foo' ROLE 'bar'和 DROP MAPPED USER 'foo'为 Mapped user 提供支持。详情请查看 MySQLRoles
介绍或者这里。相对应的 SHOW PROCESSLIST WITH ROLES 和 SHOW USER_STATISTICS WITH
ROLES 通过 role 而不是用户名来再结果中展示进程和用户数据。
3.3.4 New statements
Google-MySQL-Tools 为 MySQL 增加了用户表监控函数:SHOW USER_STATISTICS, SHOW
TABLE_STATISTICS, SHOW INDEX_STATISTICS, SHOW CLIENT_STATISTICS, FLUSH
TABLE_STATISTICS, FLUSH INDEX_STATISTICS, FLUSH CLIENT_STATISTICS。参见 3.8 节
UserTableMonitoring。
Google-MySQL-Tools 为 MySQL 增加了针对帐号和客户端 IP 速度限制的函数。例如:MAKE
USER 'foo' DELAYED 1000, MAKE CLIENT '10.0.0.1' DELAYED 2000, SHOW DELAYED USER, SHOW
DELAYED CLIENT。参见 3.11 节 MysqlRateLimiting。
另外,还包括:SHOW TCMALLOC STATUS 用于展示 tcmalloc 的状态,它只有在在 MySQL 连
11
19. 4 FEATURES IN THE V2 BETA PATCH
Google-MySQL-Tools 的 V2 patch 目前并没有发布出来。我们这里简要介绍一下它的几个简单特性。
4.1 GlobalTransactionIds
Google-MySQL-Tools 让 slave 能够直接从一个 master 切换到另外一个 master。它提出了一个 Global
Group ID 的概念。每个 MySQL instance 都有一个统一的 Global Group ID,并且在复制的过程中 Global
Group ID 不会变化。这个 ID 将加到 binlog 的事件头中,一个 group 中的所有事件 event 的 ID 都相同,
并且 group ID 都是唯一并且比之前的 group ID 要大。这个 group ID 同样也要写到 slave 的 relay log 中。
这样,slave 的 SQL thread 分析执行 event 的时候也要解析 group ID 并且把它保持不变的写到自己的
binlog 中。这样,当 fail over 到新的 master 的时候,它就可以从以前的 master 的 group ID 号继续。更多
详细信息见这里。
4.2 OnlineDataDrift
这个工具主要做以下事情:1、评估数据库里面的 row 的数目来决定它运行的速度。 、
2 对每一个表
执行一系列语句来计算一些行(a chunk of rows)的校验和(checksum)并把结果记录到一个表中。当它运行
完时,就可以比较 master 和 slave 的存放结果的表。如果两者有不同,那就说明有数据偏差(data drift)。
更多详细信息见这里。
4.3 MysqlThreadPool
Google-MySQL-Tools 为 MySQL 增加了线程池的代码。
19