MySQL部署和操作规范

规范的部署和操作可以让MySQL更加安全,并且可以提高数据库的性能。

选择合适的MySQL版本

不建议使用太旧的版本
因为很多特性旧版本都没有,并且性能也没有新版本的好
线上环境建议使用 GA (General Availability,正式发布的版本)

必须开启 Binlog

Binlog 的两个主要作用:复制和灾备
在通常情况下,必须开启 Binlog

对数据安全要求较高的场景,建议设置为“双 1”

innodb_flush_log_at_trx_commit 参数和 sync_binlog 参数都设置为 1

配置不区分大小写

可以将 lower_case_table_names 参数设置为 1,表示表名以小写形式存储在磁盘上,并且不区分大小写

如无特殊说明,设置业务用户只有增、删、查、改的权限

权限最小化可以大大降低误删数据库的风险

合理设置缓冲池

将 innodb_buffer_pool_size 参数设置为机器内存的 60%~75%

批量导入、导出、更新、删除操作建议在业务低峰操作,并且要提前通知DBA协助观察

批量导入、导出、更新、删除操作以及会导致主从延迟和磁盘空间增加的操作(如碎片整理、增减字段等)建议在业务低峰进行。防止这些操作对线上业务影响。例如,批量删除数据可能会导致主从延迟,如果有从库提供业务查询,可能会导致读取延迟。碎片整理、增减字段等操作,短时间需要大量的磁盘空间,可能会导致数据库磁盘跑满

如果有可能导致 MySQL QPS 上升,应提前告知 DBA

如果超过现有数据库配置所能承载的最大 QPS,则需要考虑扩容

删除库或表前,先修改库名或表名,观察几天,确定对业务没有影响,再删除,防止有其他不知道的业务连接了该库或该表