MySQL 安装完成后,测试数据一致性主要是验证数据库能否正确存储、读取和处理数据,确保事务完整性、主从同步(如配置)以及表结构与数据的稳定性。以下是几个关键步骤来测试数据一致性:
1. 创建测试数据库和表
连接到 MySQL 服务后,创建一个简单的测试环境:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
确认表结构是否正确:
DESCRIBE users;
2. 插入和查询数据验证基本一致性
插入几条记录并立即查询,检查写入和读取是否一致:
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
SELECT * FROM users;
查看输出结果是否与插入内容一致,包括自增 ID、默认时间等字段。
3. 测试事务一致性(ACID)
使用事务插入数据,并测试回滚功能,验证原子性和一致性:
START TRANSACTION;
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');
ROLLBACK;
SELECT * FROM users; -- 应该看不到 Charlie
再次执行但使用 COMMIT,确认数据持久化。
4. 检查字符集和排序规则
确保字符存储正确,避免乱码或比较异常:
SHOW CREATE TABLE users;
确认表的字符集(如 utf8mb4)和排序规则(如 utf8mb4_unicode_ci)符合预期。可插入包含中文的数据测试:
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');再查询确认显示正常。
5. 主从复制环境下测试数据同步(如适用)
如果你配置了主从复制,可在主库插入数据,在从库执行 SELECT 验证是否同步:
-- 在主库
INSERT INTO users (name, email) VALUES ('ReplicaTest', 'replica@test.com');
<p>-- 在从库
SELECT * FROM test_db.users WHERE name = 'ReplicaTest';</p>同时检查复制状态:
SHOW SLAVE STATUS\G
关注 Slave_IO_Running 和 Slave_SQL_Running 是否为 Yes,Seconds_Behind_Master 是否接近 0。
6. 使用 CHECKSUM 验证表数据完整性
对表运行 checksum,可用于对比不同实例间的数据是否一致:
CHECKSUM TABLE users;
在主从或其他备份库上运行相同命令,比对 checksum 值是否一致。
7. 使用 pt-table-checksum(Percona Toolkit)进行深度校验
对于生产级一致性检查,推荐使用 Percona Toolkit 中的 pt-table-checksum 工具,自动检测主从数据差异:
pt-table-checksum --host=localhost --user=root --password=xxx
它会逐表计算 checksum 并记录结果,帮助发现潜在不一致。
基本上就这些。通过以上步骤,可以系统性地验证 MySQL 安装后的数据一致性,涵盖本地写入、事务处理、字符支持以及复制环境下的数据同步情况。关键是从小数据入手,逐步扩展到复杂场景。
