MySQL DBA从小白到大神实战-08 MySQL监控系统之Zabbix

部署zabbix监控

简介

zabbix(音同 zbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

为了使用最新3.2版本的Zabbix,本次部署选用的Linux OS是最新的CentOS7.3(php版本为5.4)。
CentOS6.X和CentOS7.X的安装和使用均有较大变化,为便于今后的学习和工作,下面将CentOS7.3的安装和基本配置也记录到本文中。

安装CentOS7.3

详见:CentOS7.3安装图解

MySQL DBA从小白到大神实战-07 MySQL锁机制与事务机制实现

MySQL参数autocommit生产环境设1还是0?为什么?

MySQL参数autocommit生产环境设成0,即不自动提交。 设置成不自动提交,事务能做rollback,以满足事务的原子性Atomicity的要求,设置方法:

set autocommit=0;

# 也可以修改my.cnf配置文件
autocommit=0

MySQL参数tx_isolation生产环境上大多数是设什么值,为什么?

MySQL参数tx_isolation生产环境上大多数是设成READ-COMMITED。事务的隔离级别设置为READ-COMMITED时不会发生脏读现象,虽会出现不可重复读和幻读问题,但不会对业务应用造成影响。而设置成以下隔离级别会出现的问题如下:

  • Read Uncommitted:会产生脏读、不可重复读、幻读现象,而脏读这在生产环境中是不被允许的
  • Repeatable Read:不会出现不可重复读和幻读问题,但此特性一般不符合应用业务需要,且并发性能也不好。
  • Serializable:所有事务全部串行执行(只允许同时一个事务操作,若有其他事务,也需要等前一个事务完成后才能开始),不能并发执行,这在生产环境中是不现实的。

hexo解决代码块空行自动删除问题

修改hexo源码

node_modules\hexo-util\lib\highlight.js文件中第35

# 原
    numbers += '<div class="line">' + (firstLine + i) + '</div>\n';
    content += '<div class="line';
    content += (mark.indexOf(firstLine + i) !== -1) ? ' marked' : '';
    content += '">' + line + '</div>\n';

# 改后
    numbers += '<span class="line">' + (firstLine + i) + '</span>\n';
    content += '<span class="line';
    content += (mark.indexOf(firstLine + i) !== -1) ? ' marked' : '';
    content += '">' + line + '</span>\n';

清理临时数据库并重启本地服务

hexo clean
hexo s -g

MySQL DBA从小白到大神实战-05 MySQL DBA日常操作

使用mysqld_mutil start命令启动多实例3306、3307,使用mysqld_multi report命令显示结果。

规划多实例目录

mkdir -p /u01/mysql             # 程序目录
mkdir -p /u01/conf              # 配置文件
mkdir -p /u01/data/3306         
mkdir -p /u01/data/3307
mkdir -p /u01/log/3306/iblog
mkdir -p /u01/log/3307/iblog
mkdir -p /u01/log/3306/binlog
mkdir -p /u01/log/3307/binlog
mkdir -p /u01/run/3306
mkdir -p /u01/run/3307
mkdir -p /u01/tmp/3306
mkdir -p /u01/tmp/3307

chown -R mysql:mysql /u01
chmod -R 755 /u01

MySQL DBA从小白到大神实战-04 揭密MySQL databock and binlog的格式

1. 为什么创建一个InnoDB表只分配了96K而不是1M?

Mysql中extent(区)中是64个连续的page(页),是分配空间的最小单位,标准大小是1M。 但在用户启用了参数innodb_file_per_table=on后,创建一个Innodb表时,初始分配的大小却是为96K。这是因为在每个段开始时,先用32个页大小的碎片页(fragment page)来存放数据,在使用完这些页之后才是64个连续页的申请。这样做的目的是,对于一些小表,或者是undo这类的段,可以在开始时申请较少的空间,节省磁盘容量的开销。 下面通过示例来显示InnoDB存储引擎对于区的申请方式。