daily pastebin goal
21%
SHARE
TWEET

Untitled

a guest Jun 23rd, 2018 80 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MySQL管理之道:性能调优、高可用与监控
  2. 跳转至: 导航、 搜索
  3. 目录
  4.  
  5.     1 MySQL 5.5介绍
  6.     2 半同步复制
  7.     3 故障诊断
  8.     4 同步复制报错故障处理
  9.     5 性能调优
  10.     6 备份与恢复
  11.     7 目前流行的4种HA架构
  12.     8 批量管理服务器
  13.     9 性能监控
  14.     10 服务监控
  15.     11 项目案例讲解
  16.  
  17. MySQL 5.5介绍
  18.  
  19.     InnoDB Plugin文件格式:Antelope --> Barracuda
  20.     充分利用CPU多核:innodb_read/write_io_threads=8
  21.     提高脏页刷新和合并插入数量:innodb_io_capacity=200
  22.         自适应:innodb_adaptive_flushing
  23.     InnoDB_Buffer_Pool
  24.         innodb_old_blocks_pct/time
  25.     数据恢复时间加快
  26.         redo log最大可设为4G
  27.     InneDB同时支持多个BufferPool实例:innodb_buffer_pool_instances
  28.     可关闭自适应Hash索引
  29.         ?Hash索引是基于表上已存在的B树索引建立的
  30.         高并发下,可造成RW-latch争用,进而阻塞进程
  31.         可通过“show engine innodb status\G;”监控SEMAPHORES,如果有很多waits,那么就应该关闭该功能
  32.     可选择内存分配器(差距不是很大)
  33.         export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
  34.     提高默认线程并发数:innodb_thread_concurrency innodb_concurrency_tickets=500
  35.     预读算法
  36.         线性 innodb_read_ahead_threshold=<pages>,默认56
  37.         随机
  38.     首次在Linux上实现了异步I/O:innodb_use_native_aio
  39.         cat /proc/slabinfo | grep kio
  40.     组提交(group commit)
  41.         sync_binlog必须=0
  42.     多个回滚段提升性能
  43.     innodb_purge_threads
  44.     添加删除缓冲和清除缓冲
  45.         SET GLOBAL innodb_change_buffering = all;
  46.     控制自旋锁轮询间隔:innodb_spin_wait_delay=6
  47.     快速创建、删除、修改索引*
  48.     支持创建压缩数据页
  49.         CREATE TABLE ... ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
  50.     *innodb_stats_on_metadata
  51.     安全性、稳定性的显著改变
  52.         复制功能加强
  53.         relay-log可自我修复
  54.         set global innodb_strict_mode=1;
  55.     动态更改系统配置参数
  56.     SQL语法的改变
  57.         存储过程支持limit变量
  58.     5.1升级为5.5
  59.         MySQL_update
  60.  
  61. 半同步复制
  62.  
  63.     install plugin rpl_semi_sync_master_soname 'semisync_master.so';
  64.     SET GLOBAL rpl_semi_sync_master_enabled=ON;
  65.     功能验证:
  66.         略
  67.     性能测试
  68.  
  69. 故障诊断
  70.  
  71.     性能主要因素:磁盘I/O
  72.     CPU性能指标:%us %sy %wa %id %ni
  73.     磁盘性能指标
  74.         I/O等待
  75.         队列平均长度
  76.         平均等待时间
  77.         每秒传输数量(多少次I/O操作,包括读写)
  78.         每秒读写块的数量
  79.         每秒读写字节的数量
  80.     开源工具:
  81.         dstat(Python编写的?)
  82.         sysstat(iostat、mpstat、cifsiostat、sar)
  83.     “连接数过多”
  84.         闲置连接?
  85.         整理表空间碎片
  86.         预热
  87.             my.cnf:innodb_buffer_pool_dump_at_shutdown=1(必须pkill mysql正常关闭)
  88.     加内存!
  89.     子查询问题
  90.         5.6:强劲优化?(自动改写成join?)
  91.     分析binlog,查找读写操作频繁的表?(使用awk)
  92.         mysqlbinlog ... | awk '/###/{if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count)print i,"\t",count[i]}' | column -t | sort -k3nr | more
  93.     谨慎设置binlog_format=MIXED
  94.         p92 如果采用默认隔离级别(可隔离读),设置=ROW;如果是读提交,MIXED和ROW的效果是一样的
  95.             5.6 binlog_row_image=minimal
  96.     未设置swap分区导致内存耗尽死机
  97.         echo 0 > /proc/sys/vm/swappiness
  98.             只能减少swap概率,并不能避免Linux swap
  99.         内存监控:当使用率>90%,重启MySQL
  100.     *故障(主从)切换时事件调度器注意事项
  101.         p96 event只能在master上触发,不能在slave,如果slave上触发了同步复制就会坏掉
  102.     误删InnoDB ibdata和ib_logfile
  103.         找到mysqld的PID
  104.         ll /proc/<pid>/fd | egrep 'ib_|ibdata'
  105.         FLUSH TABLES WITH READ LOCK;
  106.         set global innodb_max_dirty_pages_pct=0;
  107.         cd /proc/<pid>/fd
  108.             cp 10 /u2/mysql/data/ib_logfile1(哦,文件虽然被误删除,对应inode还在)
  109.             ...
  110.         cd /u2/mysql/data/ && chown mysql:mysql ib*
  111.         /etc/init.d/mysql restart
  112.     *模拟Oracle闪回(这里的大段代码真无聊~)
  113.  
  114. 同步复制报错故障处理
  115.  
  116.     避免在master上执行大事务
  117.     set global slave_exec_mode='IDEMPOTENT';
  118.     如何验证主从一致
  119.         Maatkit:mk-table-checksum
  120.     p124 想在slave上忽略一个表,不要用binlog_ignore_db,用replicate-ignore-db=testdb代替
  121.     不支持低版本向高版本同步?
  122.     5.5.20+ MySQL>reset slave all;
  123.  
  124. 性能调优
  125.  
  126.     5.6一个表里多个字段可以是TIMESTAMP,5.5只能有一个 ?
  127.     p152 pt-online-schema-change(实际就是创建了一个新表,st)
  128.         实际上还是MVCC没实现好吧
  129.     p177 Read Commited:会导致不可重复读、虚读和第二类丢失更新等并发问题
  130.     p179 like '%xxx%':覆盖索引
  131.     p182 加快count(*)
  132.         count(辅助索引)
  133.         count(distinct x)
  134.     ON REPLICATE KEY UPDATE
  135.     my.cnf配置文件调优
  136.         per_thread_buffers优化*
  137.         global_buffers优化*
  138.     5.6同步复制新特性
  139.         会通过内部GTID机制自动找同步点
  140.         多个库之间可多线程复制
  141.  
  142. 备份与恢复
  143.  
  144.     --dump-slave 降低主库压力
  145.         master_LOG_POS
  146.     新工具mydumper
  147.     热备份
  148.         Percona xtrabackup
  149.  
  150. 目前流行的4种HA架构
  151.  
  152.     自带的Replication
  153.         Keepalived
  154.         MMM(主主,By Google)
  155.     Heartbeat + DRBD
  156.     RHCS共享存储架构
  157.  
  158. 批量管理服务器
  159. 性能监控
  160. 服务监控
  161. 项目案例讲解
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top