1、超100万⾏的批量写(UPDATE、DELETE、INSERT)操作,要分批多次进⾏操作
⼤批量操作可能会造成严重的主从延迟,主从环境中,⼤批量操作可能会造成严重的主从延迟,⼤批量的写操作⼀般都需要执⾏⼀定长的时间,⽽只有当主库上执⾏完成后,才会在其他从库上执⾏,所以会造成主库与从库长时间的延迟情况。
binlog⽇志为row格式时会产⽣⼤量的⽇志,⼤批量写操作会产⽣⼤量⽇志,特别是对于row格式⼆进制数据⽽⾔,由于在row格式中会记录每⼀⾏数据的修改,我们⼀次修改的数据越多,产⽣的⽇志量也就会越多,⽇志的传输和恢复所需要的时间也就越长,这也是造成主从延迟的⼀个原因,
⼤批量修改数据,⼀定是在⼀个事务中进⾏的,这就会造成表中⼤批量数据进⾏锁定,从⽽导致⼤量的阻塞,阻塞会对MySQL的性能产⽣⾮常⼤的影响。
特别是长时间的阻塞会占满所有数据库的可⽤连接,这会使⽣产环境中的其他应⽤⽆法连接到数据库,因此⼀定要注意⼤批量写操作要进⾏分批。
2、对于⼤表使⽤pt-online-schema-change修改表结构
避免⼤表修改产⽣的主从延迟
避免在对表字段进⾏修改时进⾏锁表
对⼤表数据结构的修改⼀定要谨慎,会造成严重的锁表操作,尤其是⽣产环境,是不能容忍的。
pt-online-schema-change 它会⾸先建⽴⼀个与原表结构相同的新表,并且在新表上进⾏表结构的修改,然后再把原表中的数据复制到新表中,并在原表中增加⼀些触发器。把原表中新增的数据也复制到新表中,在⾏所有数据复制完成之后,把新表命名成原表,并把原来的表删除掉。把原来⼀个DDL操作,分解成多个⼩的批次进⾏。
3、禁⽌为程序使⽤的账号赋予super权限
当达到最⼤连接数限制时,还运⾏1个有super权限的⽤户连接super权限只能留给DBA处理问题的账号使⽤。
4、对于程序连接数据库账号,遵循权限最⼩原则
程序使⽤数据库账号只能在⼀个DB下使⽤,不准跨库 程序使⽤的账号原则上不准有drop权限,⽆delete权限。
5、运维⽇志
任何操作都要记录在运维⽇志。
6、审计
任何操作都要经过DBA审核。
7、测试
禁⽌在线上做压⼒测试




