zabbix最適化痛ましいzabbixデータベース最適化を記す

3820 ワード

最近、会社のzabbixプロジェクトを担当しています.前期は全体的な性能アーキテクチャの計画が欠けていたため、後期に一連の問題が発生しました.zabbixを遊ぶ兄弟は、zabbixの最大のボトルネック自体がzabbixサービスではなく、mysqlデータベースの圧力の上で、zabbixを最適化することはzabbixの配置とzabbixのmysqlを最適化することです.
Zabbixデータベースの一般的な最適化処理方法は2つあります.
01.データベースを最適化し、データベースを表分割処理する.
02.データベースのhistory,history_をクリアuintテーブル;
次のシナリオではmysqlデータベースのテーブルを最適化します.
具体的な考え方:
1.まずスクリプトをダウンロード
https://github.com/itnihao/zabbixdbpartitioning
hao兄がスクリプトと助けを提供してくれたことに感謝します.
2.前期の準備作業は、安全のためにscreenをインストールしたほうがいい.http://www.kwx.gd/CentOSApp/CentOS-screen.html
zabbixのメールアラームを閉じるかzabbix serverサービスを閉じるかmysql自体がテーブルをロックします
3.screenモードでスクリプトを実行し、
ここで注意しなければならないのは、もしあなたのデータベースが特に大きいならば、先にバックアップして、それからスクリプトを修正して、それから表に分けて、スクリプトを修正する時に注意しなければならないいくつかの場所をここで先に列挙して、以下の通りです.
まずzabbixデータベースとパスワードを変更するデフォルトはzabbixです.もしあなたもそうであれば、変更する必要はありません.
次に、プロファイルのパスを変更し、独自のカスタムパスに基づいてスクリプトのパスを変更します.
手動でバックアップする場合は、スクリプトのバックアップを閉じます.
4.作成が完了したかどうかを確認します.
具体的な実施:
1.まず配置をインストールする前に、2枚の画像を見てから、プレッシャーがどうなっているかを知っています.
2.バックアップについて覚えておいてください.バックアップについてはここにリストされていません.mysqldumpを使用してバックアップを完了します.zabbixサーバをシャットダウンします.
データベースのバックアップを完全にエクスポートし、
mysqldump -uroot -p zabbix > /www/zabbix.sql
            :
mysqldump --opt -d zabbix -uroot -p > zabbix.biao.sql
  zabbix  :
/etc/rc.d/init.d/zabbix-server stop

3.スクリプトを実行します.スクリプトを実行する前に、2つのテーブルを作成します.history_bakとhistory_uint_bak、そして元の2つのテーブルhistoryとhistoryの名前を変更します.uint 2枚のテーブル;作成した2枚のテーブルを元にすると、テーブルにデータがありません.次のようになります.
≪表の作成|Create Table|emdw≫:作成については、bbixデータベースの表構造をあちこちでzabbixし、この表を見つければよいが、この2つの表は依存関係がない.
CREATE TABLE `history_bak` (
`itemid` bigint(20) unsigned NOT NULL,
`clock` int(11) NOT NULL DEFAULT '0',
`value` double(16,4) NOT NULL DEFAULT '0.0000',
`ns` int(11) NOT NULL DEFAULT '0',
KEY `history_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `history_uint_bak` (
`itemid` bigint(20) unsigned NOT NULL,
`clock` int(11) NOT NULL DEFAULT '0',
`value` bigint(20) unsigned NOT NULL DEFAULT '0',
`ns` int(11) NOT NULL DEFAULT '0',
KEY `history_uint_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

テーブル名の変更:
rename table history to history_bak_14_03_08;
rename table history_bak to history;
rename table history_uint to history_uint_bak_14_03_08;
rename table history_uint_bak to history_uint;

4.次にスクリプトを実行します.
bash -x partitiontables.sh、ヒントに従ってY/Nを選択できます
私は代bugモードで出力されたスクリプトなので、出力が多いので、ここで重要な画像をいくつかカットします.皆さんは参考にしています.
5.完了後、データが成功したかどうかを確認できます.
生成されたタスク計画スクリプトのパス:
cat /etc/cron.daily/zabbixhousekeeping

シナリオではmutt+msmtpスクリプトを使用しているので、スクリプトでメールを構成することを忘れないでください.
[root@zabbix-server-01 ~]# cat /usr/local/zabbix/cron.d/housekeeping.sh
#!/bin/bash
[email protected]
tmpfile=/tmp/housekeeping$$
date >$tmpfile
/usr/bin/mysql --skip-column-names -B -h localhost -u zabbix -pzabbix zabbix -e "CALL create_zabbix_partitions();" >>$tmpfile 2>&1
/usr/bin/mutt -s "Zabbix MySql Partition Housekeeping" $MAILTO  
    

, ? ? , history , , , history 8G , 8 , history_uint 30G , , LNMP LAMP, , mysql 。 zabbxi server , ; , !

    zabbix               .  :
use zabbix;
truncate table history;
optimize  table history;
truncate table history_str;
truncate table history_uint;

 
:
https://www.zabbix.org/wiki/Docs/howto/mysql_partition
:https://blog.51cto.com/devliangel/1428325