1月 10

网页产生二级菜单的SQL优化

将菜单放一张表中,查询时通过用户id查到组id,然后再用组id查权限表,获得有权限的菜单id。
最后组装成两级菜单的数据。
数据列为菜单名,菜单链接,菜单级别,父菜单id,该级菜单的排序。sql如下:

最初想是将表关联然后查找,sql如下:

这个sql有个缺点,一比较长,二获得权限部分写了两次。然后换个写法,先把有权限的选出然后再关联。

因为只有10条数据,所以通过多次手动执行也没有发现性能差多少,但是短了不少。

7月 13

CentOS6安装mariadb

在CentOS6.5的64位机器上安装mariadb10.0.12。

mariadb下载位置
https://downloads.mariadb.org/interstitial/mariadb-10.0.12/source/mariadb-10.0.12.tar.gz

升级遥控的工具和库
yum install -y cmake cmake-* openssl-* libevent libevent-devel
yum install -y boost boost-devel libxml libxml-devel
yum install -y pcre pcre-devel
yum install -y gcc* g++* gcc-c++
yum install -y suitable suitable-*
yum install -y ncurses-devel.x86_64
yum install -y libaio.x86_64
yum install -y bison.x86_64

建立用户
groupadd -g 800 mysql
useradd -u 800 -g 800 -M -s /sbin/nologin -r mysql

开始编译安装
tar zxvf mariadb-10.0.12.tar.gz
cd mariadb-10.0.12
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/program/mariaDB -DMYSQL_DATADIR=/program/mariaDB/data -DSYSCONFDIR=/etc ..
make
make install

cd /program/mariaDB
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp ./support-files/my-huge.cnf /etc/my.cnf
vi /etc/my.cnf #编辑配置文件,在 [mysqld] 部分增加
datadir = /program/mariaDB/data #添加MariaDB数据库路径

以下为选做工作。
#./scripts/mysql_install_db –user=mysql #生成MariaDB系统数据库
#下面这两行把MariaDB的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定MariaDB的库文件地址。
#ln -s /program/mariaDB/lib/mysql /usr/lib/mysql
#ln -s /program/mariaDB/include/mysql /usr/include/mysql
#直接修改密码/program/mariaDB/bin/mysqladmin -u root -p password “123456”

5月 23

python 生成统计图

  想用python+matplotlib生成每天用户使用的统计图。测试环境,CentOS6.5,数据存放于mysql中,python2.7,matplotlib使用easy_install安装。

  首先建一个表。

  测试数据部分还是写个python脚本生成,这样批量做就方便了。

  开始正式部分,获取数据并生成图片。

  运行脚本完成,生成图片如下:
mysql数据生成图片

试验代码部分

6月 24

监控mysql从机同步状态脚本1.1

  之前写了个一个检查mysql从机的脚本(http://www.simonzhang.net/?p=1823),但是在使用中发现一个问题。如果数据库被重启了,但是同步的没有启动,此脚本检查还是正常,不会进行报警,数据不会同步。
  我做了个调整,每次检查同步主机的pos,通过crontab进行调用,如果多次都没有变化则进行告警。如果10分钟调用一次,设为3次,就是半个小时内没有更新则报警。
crontab配置如下:
*/10 * * * * /bin/bash /script/check_mysql_slave/check_mysql_slave.sh start >/dev/null 2>&1
部分代码如下:

源代码

4月 18

监控mysql从机同步状态脚本

  mysql数据库主从运行。为了知道从机的同步情况,写了个脚本,放在crontab中,如果同步出错,则邮件报警。去年写的,放上来做个备忘。