欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL 运维之36计

程序员文章站 2022-05-28 16:17:47
...

第1计、重要事情说三遍:备份、备份、备份,定期全备+增备/差异备份,并且开启binlog
第2计、如果写成Mysql、mySQL、MySql 的人,我看MySQL 不适合您,改用其他的吧
第3计、如果还坚持认为MyISAM 比InnoDB 表好的话,也请别再使用MySQL
第4计、光做好备份还不够,还要做恢复测试,并且检查数据有效性
第5计、数据库密码要合规,弱密码等于没密码,没密码就等着被勒索吧
第6计、管理用户和业务用户区分不同权限角色,业务用户切记不可授权过高
第7计、SLAVE 备库谨记关闭写入权限(read_only=1)
第8计、存储过程、触发器、表分区想用就用,用好就行,有性能瓶颈优化就是
第9计、绝不监听公网IP,并用防火墙挡住非外部连接,降低被入侵风险
第10计、InnoDB 表一定要用自增列或呈递增属性的列做主键(该列最好无业务意义),可有效提高InnoDB 表性能、避免主从数据复制延迟
第11计、总是创建合适的索引,否则InnoDB 的行锁会升级成为类似表级锁
第12计、基数低的列,强烈不建议单独创建索引(可以放在联合索引中)
第13计、联合索引中,基数高的列放在前面,基数低的列放在后面
第14计、想保证宕机时数据不丢失, 烧香拜佛不管用, 设置双1 才靠谱(innodb_flush_log_at_trx_commit=1 & sync_binlog=1)
第15计、命令行下写SQL 时,先写好WHERE 条件,或先全部写好确认再三后才提交执行
第16计、EXPLAIN 结果中重点关注type=All/Index,或者Extra 中出现Using temporary、Using filesort 的情况并进行优化
第17计、性能、压力测试时,测试机客户机一定要和Server 端分开
第18计、连接数爆满时更应该调低最大连接数,而非调高,并且尽快用上thread pool
第19计、SHOW PROCESSLIST 结果重点关注频繁出现的Sending data、Sorting result、Copying to tmp table、Copying to tmp table on disk、Creating sort index、Waiting for xx lock
第20计、不想MySQL 死得快,就赶紧关闭鸡肋的Query Cache(query_cache_type=0)
第21计、默认开启autocommit;需一次性写入大量数据时,则应关闭autocommit,最后手工提交
第22计、监控InnoDB 表空间碎片率:ibd 文件实际大小/(Data_length+Index_length),并决定是否需要重整表空间
第23计、环境初始化之一:开启CPU 最大性能模式
第24计、环境初始化之二:关闭NUMA
第25计、环境初始化之三:使用xfs/ext4 文件系统,以及deadline/noop io scheduler
第26计、mysqld 进程占用CPU %user 突然飙高,99.99%是因为索引不当导致
第27计、优先解决频次最高的Slow Query,其次核心业务高峰时段的Slow Query
第28计、每个表都增加create_time、update_time 字段,对DB 运维帮助非常大
第29计、每个SQL 条件都加上引号,并对用户输入强制类型转换,避免SQL 注入及类型隐式转换风险
第30计、只SELECT 必要字段,不要总是SELECT *,避免额外I/O 读
第31计、设置innodb_buffer_pool_size 为物理内存的50%~70%为宜
第32计、疑似SQL 注入一般都会调用SLEEP()函数,或访问information_schema 下的视图,每见必杀
第33计、不要直接删除数据表,而是先RENAME;删除大表用硬链接方式更高效
第34计、要特别注意监控是否有内存泄露问题,尽早排除风险
第35计、优化的核心目标是提高I/O 效率,无论是增加内存,还是换高性能I/O 设备,亦或提高CPU 性能、增加索引等
第36计、少用TEXT/BLOB 等大对象列,每行长度字节数尽量不超过innodb_data_page_size的一半



[url]http://www.ywadmin.com [/url]