作者:杨涛涛
来源于客户的问题:数据库校验的方法有哪些,能否给他说说?
我:直接 percona toolkit 不就行了。
客户:服务器装任何软件都得评审,评审一次多长时间不定。而且不准用开源软件。
我:...
好了,来看下 MySQL 自身怎么对数据进行校验。
1.checksum table.
checksum table 会对表一行一行进行计算,直到计算出最终的 checksum 结果。
比如对表 n4 进行校验(记录数 157W,大小为 4G)
[ytt]>desc n4;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| r1 | char(36) | YES | | NULL | |
| r2 | varchar(100) | YES | | NULL | |
| r3 | datetime | YES | | NULL | |
| r4 | text | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
[ytt]>select count(*) from n4;
+----------+
| count(*) |
+----------+
| 1572864 |
+----------+
1 row in set (6.89 sec)
[ytt]>checksum table n4;
+--------+-----------+
| Table | Checksum |
+--------+-----------+
| ytt.n4 | 874125175 |
+--------+-----------+
1 row