转载

mysql进修

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




正文到此结束
Loading...