1. 程式人生 > >mysql 部署慢日誌收集程序

mysql 部署慢日誌收集程序

ja

配置yum 源

centos 7 配置yum源

http://mirror.centos.org/centos/7/

http://mirror.centos.org/centos/$releasever/os/$basearch/ $releasever $basearch 分別表示操作系統版本和位數,yum能識別這兩個變量

http://mirror.centos.org/centos/7/extras/x86_64/ extra yum 源

保證/etc/yum.repos.d/目錄沒有其他的repo文件,如有可以創建一個bak目錄,備份bak目錄
cat /etc/yum.repos.d/centos7.repo

centos6 配置yum源

http://mirror.centos.org/centos/6/
cat /etc/yum.repos.d/centos6.repo

安裝pt-tools

配置好了yum源,通過yum解決依賴
yum localinstall percona-toolkit-2.2.19-1.noarch.rpm #依賴於mysql-lib,一定要安裝和mysql-server/mysql-client匹配的lib

如果yum沒配置好,需要手動安裝依賴
yum install perl-DBI
rpm -ivh MySQL-shared-5.6.26-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.26-1.el6.x86_64.rpm

perl的依賴有:

perl-DBD-MySQL
perl-IO-Socket-SSL
perl-Net-LibIDN
perl-Net-SSLeay
perl-TermReadKey
perl-Time-HiRes

rpm -Uvh perl-5.10.1-144.el6.x86_64.rpm perl-libs-5.10.1-144.el6.x86_64.rpm perl-Pod-Escapes-1.04-144.el6.x86_64.rpm perl-Pod-Simple-3.13-144.el6.x86_64.rpm perl-Module-Pluggable-3.90-144.el6.x86_64.rpm perl-version-0.77-144.el6.x86_64.rpm

rpm -ivh percona-toolkit-2.2.19-1.noarch.rpm perl-DBI-1.609-4.el6.x86_64.rpm perl-DBD-MySQL-4.013-3.el6.x86_64.rpm perl-IO-Socket-SSL-1.31-3.el6_8.2.noarch.rpm perl-Time-HiRes-1.9721-144.el6.x86_64.rpm perl-TermReadKey-2.30-13.el6.x86_64.rpm perl-Net-LibIDN-0.12-3.el6.x86_64.rpm perl-Net-SSLeay-1.35-10.el6_8.1.x86_64.rpm

安裝Python2.7.5,用自己的Python腳本,安裝一次,拷貝,在其他的服務器安裝

tar xvf Python-2.7.5.tar.bz2 
cd Python-2.7.5
yum install zlib zlib-devel

./configure --prefix=/usr/local/python27
make && make install

安裝setuptools,Python2.7 安裝源碼包依賴於此

unzip setuptools-38.5.2.zip 
cd setuptools-38.5.2
/usr/local/python27/bin/python setup.py  install

安裝 MarkupSafe-1.0,Jinja2-2.7.3依賴於此

tar xvf MarkupSafe-1.0.tar.gz 
cd MarkupSafe-1.0
/usr/local/python27/bin/python setup.py  install

安裝 Jinja2

tar xvf Jinja2-2.7.3.tar.gz 
cd ../Jinja2-2.7.3
/usr/local/python27/bin/python setup.py  install

安裝distribute-0.6.28,MySQL-python-1.2.4b4依賴於此

tar xvf distribute-0.6.28.tar.gz 
cd /distribute-0.6.28
/usr/local/python27/bin/python setup.py  install

3、安裝MySQL-python-1.2.4b4

tar xvf MySQL-python-1.2.4b4.tar.gz
cd  MySQL-python-1.2.4b4
yum install gcc
/usr/local/python27/bin/python setup.py  install

如果mysql是源碼安裝,需要為mysql_config創建一個軟連接
ln -sv /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config,否則安裝MySQL-python-1.2.4b4會報錯

創建slowlog數據庫和用戶

create database slowlog;
set global validate_password_policy=‘MEDIUM‘;
GRANT ALL PRIVILEGES ON `slowlog`.* TO ‘slowlog‘@‘127.0.0.1‘ identified by ‘xxxxx‘;
set global validate_password_policy=‘LOW‘;

use slowlog;
CREATE TABLE slowlog.`global_query_review_history` (
  `ts_min` datetime NOT NULL,
  `ts_max` datetime NOT NULL,
  `ts_cnt` float DEFAULT NULL,
  `Query_time_sum` float DEFAULT NULL,
  `Query_time_min` float DEFAULT NULL,
  `Query_time_max` float DEFAULT NULL,
  `Query_time_pct_95` float DEFAULT NULL,
  `Lock_time_sum` float DEFAULT NULL,
  `Lock_time_min` float DEFAULT NULL,
  `Lock_time_max` float DEFAULT NULL,
  `Lock_time_pct_95` float DEFAULT NULL,
  `sample` text NOT NULL,
  `checksum` bigint(20) unsigned NOT NULL,
  `tag` varchar(100) DEFAULT NULL,
  `ip` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`checksum`,`ts_min`,`ts_max`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

部署腳本

mkdir -p /data/scripts/templates
cp top10slowquery.html /data/scripts/templates
cp s*.py  /data/scripts/

測試:./slowquery_report.py
查看是數據庫中是否有數據產生

select count(*) from slowlog.query_history;
select count(*) from slowlog.query;
select count(*) from slowlog.global_query_review_history;

測試:./send_slowquery_report.py
查看是否有郵件發出

如果有,可以部署contab

crontab -e
0 1 * * *  /data/scripts/slowquery_report.py
0 2 * * *  /data/scripts/send_slowquery_report.py

報錯:

UnboundLocalError: local variable ‘conn‘ referenced before assignment [duplicate]
Python獲取連接失敗,需要在數據中創建用戶和密碼

mysql 部署慢日誌收集程序