SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME, COUNT(0) AS COUNT FROM information_schema.SCHEMATA GROUP BY DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME;
# to filter schema use SCHEMA_NAME in the where clause
SELECT TABLE_COLLATION, COUNT(0) AS COUNT FROM information_schema.TABLES WHERE TABLE_COLLATION IS NOT NULL GROUP BY TABLE_COLLATION;
# to filter schema use TABLE_SCHEMA in the where clause
SELECT CHARACTER_SET_NAME, COLLATION_NAME, COUNT(0) AS COUNT FROM information_schema.COLUMNS WHERE CHARACTER_SET_NAME IS NOT NULL AND COLLATION_NAME IS NOT NULL GROUP BY CHARACTER_SET_NAME, COLLATION_NAME;
# to filter schema use TABLE_SCHEMA in the where clause
如果找到任何结果,以下查询将来自 cron 作业,该作业会通过电子邮件发送给您:
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE DEFAULT_CHARACTER_SET_NAME NOT LIKE '%utf8%' OR DEFAULT_COLLATION_NAME NOT LIKE '%utf8%';
# to filter schema use SCHEMA_NAME in the where clause
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES WHERE TABLE_COLLATION IS NOT NULL AND TABLE_COLLATION NOT LIKE '%utf8%';
# to filter schema use TABLE_SCHEMA in the where clause
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_SET_NAME, COLLATION_NAME FROM information_schema.COLUMNS WHERE CHARACTER_SET_NAME NOT LIKE '%utf8%' OR COLLATION_NAME NOT LIKE '%utf8%';
# to filter schema use TABLE_SCHEMA in the where clause
这些查询适用于 MySQL >= 5.0。如果您在编写 cron 作业时需要帮助,请告诉我。
我的开发人员(主要是 Ruby on Rails 团队)在不需要时创建 InnoDB 表时,我也遇到了问题。为了保密,我使用一个调用的 cron 监视暂存数据库:
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE ENGINE = 'InnoDB';
Rory,首先,您希望监控数据库中创建的内容是正确的。虽然我们都实施了防止错误的步骤,但您不能假设错误不会蔓延。我做的事情非常相似,因为我们的大多数基础设施都需要 UTF8。
以下查询适用于检查统计信息:
如果找到任何结果,以下查询将来自 cron 作业,该作业会通过电子邮件发送给您:
这些查询适用于 MySQL >= 5.0。如果您在编写 cron 作业时需要帮助,请告诉我。
我的开发人员(主要是 Ruby on Rails 团队)在不需要时创建 InnoDB 表时,我也遇到了问题。为了保密,我使用一个调用的 cron 监视暂存数据库:
我会做类似 mysqldump --all-databases --no-data | grep -i 字符
Jure1873 建议使用 grep,我评论说 awk 更合适。这是我一起扔的。
在这里它具有更高的可读性:
Nagios 确实是一种错误的工具。Nagios 更多的是用于服务监控,不检查配置是错误的。更好的工具是某种配置管理工具,例如 puppet 或 cfengine,以确保配置文件具有正确的设置。
就实际配置而言,MySQL 手册中有一个非常全面的关于字符集和编码的章节。