实战Zabbix-Server数据库MySQL的libdata1文件过大
今天我们的zabbix-server机器根空间不够了,我一步步排查结果发现是/var/lib/mysql/下的libdata1文件过大,已经达到了41G。我立即
今天我们的zabbix-server机器根空间不够了,我一步步排查结果发现是/var/lib/mysql/下的libdata1文件过大,已经达到了41G。我立即想到了zabbix的数据库原因,随后百度、谷歌才知道zabbix的数据库他的表模式是共享表空间模式,随着数据增长,ibdata1 越来越大,性能方面会有影响,而且innodb把数据和索引都放在ibdata1下。
共享表空间模式:
InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。
独立表空间模式:
优点:
1.每个表都有自已独立的表空间。
2.每个表的数据和索引都会存在自已的表空间中。
3.可以实现单表在不同的数据库中移动。
4.空间可以回收(drop/truncate table方式操作表空间不能自动回收)
5.对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。
缺点:
单表增加比共享空间方式更大。
结论:
共享表空间在Insert操作上有一些优势,但在其它都没独立表空间表现好,所以我们要改成独立表空间。
当启用独立表空间时,请合理调整一下 innodb_open_files 参数。
下面我们来讲下如何讲zabbix数据库修改成独立表空间模式
1.查看文件大小
[root@localhost ~]#cd /var/lib/mysql
[root@localhost ~]#ls -lh
-rw-rw---- 1 mysql mysql 41G Nov 24 13:31 ibdata1
-rw-rw---- 1 mysql mysql 5.0M Nov 24 13:31 ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Nov 24 13:31 ib_logfile1
drwx------ 2 mysql mysql 1.8M Nov 24 13:31 zabbix
大家可以看到这是没修改之前的共享表数据空间文件ibdata1大小已经达到了41G
2.清除zabbix数据库历史数据
1)查看哪些表的历史数据比较多
[root@localhost ~]#mysql -uroot -p
mysql > select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='zabbix';
+-----------------------+---------------+------------+
| table_name | total_mb | table_rows |
+-----------------------+---------------+------------+
| acknowledges | 0.06250000 | 0 |
....
| help_items | 0.04687500 | 103 |
| history | 1020.00000000 | 123981681 |
| history_log | 0.04687500 | 0 |
...
| history_text | 0.04687500 | 0 |
| history_uint | 3400.98437500 | 34000562 |
| history_uint_sync | 0.04687500 | 0 |
可以看到history和history_uint这两个表的历史数据最多。
另外就是trends,trends_uint中也存在一些数据。
由于数据量太大,按照普通的方式delete数据的话基本上不太可能。
所以决定直接采用truncate table的方式来快速清空这些表的数据,再使用mysqldump导出数据,删除共享表空间数据文件,重新导入数据。
2)停止相关服务,避免写入数据
[root@localhost ~]#/etc/init.d/zabbix_server stop
[root@localhost ~]#/etc/init.d/httpd stop
3)清空历史数据
[root@localhost ~]#mysql -uroot -p
mysql > use zabbix;
Database changed
mysql > truncate table history;
Query OK, 123981681 rows affected (0.23 sec)
mysql > optimize table history;
1 row in set (0.02 sec)
mysql > truncate table history_uint;
Query OK, 57990562 rows affected (0.12 sec)
mysql > optimize table history_uint;
1 row in set (0.03 sec)
3.备份数据库由于我/下的空间不足所以我挂载了一个NFS过来
[root@localhost ~]#mysqldump -uroot -p zabbix > /data/zabbix.sql
4.停止数据库并删除共享表空间数据文件
1)停止数据库
[root@localhost ~]#/etc/init.d/mysqld stop
2)删除共享表空间数据文件
[root@localhost ~]#cd /var/lib/mysql
[root@localhost ~]#rm -rf ib*
5.增加innodb_file_per_table参数
[root@localhost ~]#vi /etc/my.cnf
在[mysqld]下设置
innodb_file_per_table=1
6.启动mysql
[root@localhost ~]#/etc/init.d/mysqld start
7.查看innodb_file_per_table参数是否生效
[root@localhost ~]#mysql -uroot -p
mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
8.重新导入数据库
[root@localhost ~]#mysqldump -uroot -p zabbix
9.最后,恢复相关服务进程
[root@localhost ~]#/etc/init.d/zabbix_server start
[root@localhost ~]#/etc/init.d/httpd start
恢复完服务之后,查看/分区的容量就下去了,,之前是99%,处理完之后变成了12%。可见其成效
一些Zabbix相关教程集合:
安装部署分布式监控系统Zabbix 2.06
《安装部署分布式监控系统Zabbix 2.06》
CentOS 6.3下Zabbix安装部署
Zabbix分布式监控系统实践
CentOS 6.3下Zabbix监控apache server-status
CentOS 6.3下Zabbix监控MySQL数据库参数
64位CentOS 6.2下安装Zabbix 2.0.6
ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里
本文永久更新链接地址:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. インポート テンプレートを直接ダウンロードし、次の手順に従ってテンプレートをインポートします。 [構成] -> [テンプレート] -> [インポート] -> [ダウンロードした XML ファイルをインポート] をクリックします。 2. 監視対象ホストでクライアント キーを構成し、/etc/zabbix/zabbix_agentd.conf 構成ファイルを開き、最後の行に UserParameter=redis_stats[*],redis-cli-h127.0.0.1-p$1 を追加します。 info |grep$2|cut-d:-f2 設定が完了したら、/etc/init.d/zabbix_agentdre を渡します。

1. Zabbixserver とプロキシは mtrmtr スクリプトをインストールし、zabbixserver とプロキシの次のパスに配置します。 chownzabbix:zabbixmtrtrace.shzabbix を実行して mtrtrace テンプレートを作成します。 5. ホストをテンプレートに関連付け、zabbix のデータを観察します。 ]-[最新データ]:

SNMP の概要 1 SNMP の概要 SNMP は、最も広く使用されるネットワーク管理プロトコルとして開発され、現在適用されているバージョンは主に SNMPv1、SNMPv2c、SNMPv3 です。各バージョンの主な違いは、情報の定義、通信プロトコルの動作、セキュリティ機構にありますが、同時に、SNMP アプリケーションの 2 つの拡張機能であるリモート ネットワーク監視 RMON (Remote Network Monitoring) と RMON2 も登場しました。物理層の観点から見ると、SNMP を使用してネットワークを管理するには、ネットワーク管理ステーション (NMS)、エージェント (エージェント)、およびプロキシ サーバー (プロキシ) を含める必要があります。 NMS はコマンドを生成し、通知情報を受信できます。ネットワーク管理には少なくとも 1 つ必要です。

プロジェクトの説明 このプロジェクトの目的は、WeChat アラームを実装し、NGINX クラスター全体を簡単に監視し、同時にクラスター全体をバッチで展開および管理できる zabbix 監視システムを構築することです。プロジェクトの手順: zabbixserver を zabbix サーバー (192.168.2.138) にインストールし、zabbixagent (192.168.2.58) を nginx 側にインストールし、Nginx ロード バランシング クラスターを構成し、ステータス統計をオンにします。 nginx側でnginxの状態を取得する監視スクリプトを記述します。サーバーサイドWebでは監視項目の追加や映像の出力を行います。エンタープライズ WeChat を登録し、WeChat インターフェイスを構成します。インターフェイスプッシュスクリプトをzabbixサーバーに追加し、インターフェイスが正常であることをテストします。私たちの中で

JavaAPI開発において、監視管理は非常に重要な部分です。アプリケーションの安定性と信頼性を確保するには、CPU 使用率、メモリ使用率、ネットワーク トラフィックなどのさまざまな指標を監視し、タイムリーに対応する必要があります。この場合、Zabbix は優れた監視ツールです。 Zabbix は、ネットワーク、サーバー、アプリケーション、データベースなどのさまざまなパラメーターとサービスを監視できるオープンソースの監視ソリューションです。それは強力な私たちを提供します

Zabbix は nginx を監視します a マシン: zabbix サーバー (192.168.234.128) b マシン: zabbix クライアント (192.168.234.125) b マシン (zabbix クライアント) での操作: nginx 仮想ホスト設定ファイルの編集: [root@centos~]#vi/etc/nginx /conf.d/default.conf サーバーに次のコンテンツを追加します。{}: location/nginx_status{stub_statuson;access_logoff;allow127.0.0.1;denyall;}Reload ngi

ケース: zabbix が nginx 監視を設定する 1. 設定ファイルを変更します vim/usr/local/nginx/conf/nginx.conflocation/nginx_status{stub_status;} 説明: nginx_status カスタム フィールド、アクセス アドレス (例: 192.168.169.131/nginx_status) stub_status 固定パラメータ #Restart nginx./nginxreload ブラウザ アクセス ステータスの説明: ActiveconnectionsNginx はアクティブなリンクの数を処理しています; 現在までに重要な serverNginx が起動しています

使用する主なツール: マクロ (テンプレート マクロ、ホスト マクロ、自動検出マクロに分かれています) ホスト マクロの形式: $MACRO (値を直接入力できます) 自動検出マクロ: #MACRO (作成されたキーの値と一致する必要があります) ) 一般構造 1. エージェント ホスト - エージェント ホストは、マクロ変数 $MYSQLPORT を作成します。マクロ変数の値は、Discoveryrules の自動検出スクリプト パラメータです。 2. テンプレート - 自動検出に依存して、テンプレートに自動検出ルールを作成します。スクリプトを使用して自動検出マクロ変数を取得します。 3. 監視項目 – Discoveryrules で監視項目を作成すると、監視項目の名前とキー値が自動的に送信されます。
