1、同步方式
binlog和pos同步、异步、半同步、基于GTID同步、单线程同步、多线程同步
2、关键参数配置
innodb_buffer_pool_size、key_buffer_size、innodb_flush_log_at_trx_commit、bin、sync_binlog、innodb_file_per_table、character_set_server、max_connections、transaction_isolation隔离级别、默认为Repeatable Read,如果是binlog是row模式,也经常设置为Read Committed级别
3、数据库环境收集工具
pt-mysql-summary
4、数据库性能情况
- 实例负载情况(CPU负载、IO负载、系统负载)
- 慢查询情况
- SQL延迟情况
- 锁情况
- 脏页情况
- 访问模型:访问模型就是这数据库承担的是读多写少还是读少写多,以及是否是高并发等等。
针对上述问题,可以采用 pt-mysql-summary 工具获取,再加以分析,也可以通过如下两个工具来实时查看:
- innotop
- orzdba
5、数据安全篇
权限安全:(1)数据库一定设置符合密码复杂度的用户密码。(2)禁止给用户设置 % 的登录机器。(3)只给业务最小权限的帐号,并限制登录的机器。
数据一致性:为了保证数据的一致性,记得周期性地使用 pt-table-checksum 来检查主从数据是否一致,如果不一致,可以使用 pt-table-sync 进行修复。
数据安全:备份策略(数据库备份、binlog 备份)。备份有效性和可用性
6、常规操作篇
常规操作:常规的操作一般包含如下几项
- 启动停止。
- 数据库常规变更。
- 索引优化。
- 配置修改。
- 数据库的备份。
- 数据的迁移。
- 切换。
常见故障的预案:1、master 出现故障,我们如何处理?
极端情况下的预案:数据库主从都挂掉的情况。
定期演习!
7、架构篇:
了解MHA、MMM、LVS、keepalived的原理,而不仅仅是搭建。优缺点和故障排查很重要。
MHA 为例,它是如何检测某一个实例异常的?各个组件之间如何配合?当做切换的时候,MHA 是如何保证数据的一致性?如果后端有多台 slave,它是如何选择哪一台从机做切换,并且,其他从机如何处理?
8、线上操作篇:十二个容易导致线上故障的操作以及规避误操作的技巧
- 修改或删除数据前先备份,先备份,先备份(重要事情说三遍)。
- 线上变更一定要有回退方案。
- 批量操作中间添加 sleep。
- DDL 操作要谨慎,对于大表的 alter 操作最好使用 pt-online-schema-change。
- 变更操作先在测试环境测试。
- 重启数据库前先刷脏页。
- 禁止批量删除大量的 binlog。
- 对于变更操作一定要写详细的操作步骤,并 review。
- 按 enter 之前再进行一次环境确认。
- 如果你的操作可能会使状况变得更糟,请停止操作。
- 快速处理磁盘满,使用 tune2fs 释放文件系统保留块。
- 连接数满先修改内存变量,而不是重启,修改方式如下:
gdb -p pid -ex "set max_connections=1000" -batch#pid是mysqld的对应的pid
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28686045/viewspace-2147701/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28686045/viewspace-2147701/