zabbix监控MYSQL主从复制

保存这个脚本为sh文件
#!/bin/bash
/usr/local/mysql/bin/mysql -uzabbix -e ‘show slave status\G’ |grep -E “Slave_IO_Running|Slave_SQL_Running”|awk ‘{print $2}’|grep -c Yes
在zabbix_agentd.conf中下方加入以下一条语句:

UserParameter=mysql.slavestatus,/etc/zabbix/mysqlms.sh

重启zabbix-agent,在Zabbix-Server所在服务器执行以下语句,测试是否成功:

zabbix_get -s 192.168.1.106 -k  mysql.slavestatus

折腾Docker中

使用docker配置服务器中

常用指令有:

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

先docker pull centos:centos6拖了一个centos6回来,以此为基础
docker run -i -t --name tms centos:centos6 /bin/bash
开一个centos6的docker,在里面安装sshserver和mysql-server
安装完成后用
docker commit tms/tms1
提交更改

-p port:port 来映射端口
docker rmi <image_id/image_name …>删除docker,-f强制删除

折腾了一天服务器

前几天因为要用到namespace等特性,把PHP升级了一下,今天索性把Nginx,PHP和MYSQL都升级到最新。
期间遇到了各种奇怪的问题包括mysql编译时候gcc版本太低,编译最新版gcc时又遇到了服务器swap不足等各种问题。
然后就是无尽的编译过程,3个小时过去了。
终于都搞定了
听说PHP5.5以后有集成Zend Opcache,在编译的时候就开启了–enable-opcache,
完成安装以后在php.ini中加入了

[opcache]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so"
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=64
opcache.interned_strings_buffer=4
opcache.max_accelerated_files=4000
opcache.max_wasted_percentage=5
opcache.revalidate_freq=60
opcache.fast_shutdown=1

然后重启phpfpm。在phpinfo中就可以看到Zend Opcache了。
从https://gist.github.com/ck-on/4959032这里get了一个脚本可以查看命中率。看起来还不错

PHP升级

刚刚把PHP升级到最新的5.6.6,本想升级到PHP7,但是由于没get到源码作罢。
升级完毕后部分文件显示access denied。
在stackoverflow上发现了几个解决方案,

In your php-fpm www.conf set security.limit_extensions to .php or
.php5 or whatever suits your environment. For some users, completely
removing all values or setting it to FALSE was the only way to get it
working.

In your nginx config file set fastcgi_pass to your socket address
(e.g. unix:/var/run/php-fpm/php-fpm.sock;) instead of your server
address and port.

Check your SCRIPT_FILENAME fastcgi param and set it according to the
location of your files.

In your nginx config file include fastcgi_split_path_info
^(.+.php)(/.+)$; in the location block where all the other fastcgi
params are defined.

都无效,最后发现是php.ini里cgi.fix_pathinfo的值为0,造成pathinfo的部分文件没法用,修改为1重启php后解决问题。