付録1

付録1

FreeBSD 上の MySQL に問題があります。

20 分ごとに 1 GB のバイナリ ファイルが大量に作成され、空きディスク領域が急速にいっぱいになります。

-rw-rw----  1 mysql mysql 1073741982 2013-09-14 18:26 mysql-bin.000174
-rw-rw----  1 mysql mysql 1073741890 2013-09-14 18:42 mysql-bin.000175
-rw-rw----  1 mysql mysql 1073741988 2013-09-14 18:59 mysql-bin.000176
-rw-rw----  1 mysql mysql 1073741964 2013-09-14 19:15 mysql-bin.000177
-rw-rw----  1 mysql mysql 1073741974 2013-09-14 19:29 mysql-bin.000178
-rw-rw----  1 mysql mysql 1073741923 2013-09-14 19:46 mysql-bin.000179
-rw-rw----  1 mysql mysql  577143852 2013-09-14 19:59 mysql-bin.000180

これは、ユーザーによるインターネットアクティビティがなくても発生します。my.cnfmax_binlog_file=526870912

私はやろうとした

freebsd# mysql -u root -p
mysql> flush logs;
mysql> flush master;

その結果、すべての mysql-bin ファイルが削除され、カウントは mysql-bin.000001 から開始されます。

私はshutdown -r nowFreeBSD を使用しています (rc.conf で mysql_enable="YES")。MySQL は動作しますが、再び 20 分ごとに 1 GB の bin ファイルを作成し始めます。

付録1

Mysql は aimsniff と netams では動作します。netams を停止しました。また、mysql は "mysql-bin" ファイルの生成を停止しました。したがって、問題はおそらく mysql と netams の間にあると思われます。しかし、原因はまだわかりません。

現在のファイルより前に作成された mysql-bin ファイルを読み取ろうとすると、「mysqlbinlog mysql-bin.000179 | less」コマンドの行がいくつか表示されます。

'fw-sher1# mysqlbinlog mysql-bin.000179 | 以下
'/!40019 @@session.max_insert_delayed_threads=0 に設定/;
'/!50003 @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE、COMPLETION_TYPE=0 に設定/; '区切り文字 //;
'# 4
'#130915 11:27:20 server id 1 end_log_pos 98 開始: binlog v 4、server v 5.0.81-log 作成 130915 11:27:20
'警告: file_id: 1417 の Create_file イベントがないため、Append_block を無視します
'警告: file_id: 1417 の Create_file イベントがないため、Append_block を無視します'警告: file_id: 1417
の Create_file イベントがない
ため、Append_block を無視します
'# 98
'#130915 11:27:19 server id 1 end_log_pos 8313
'#Append_block: file_id: 1417 block_len: 8192
'# at 8313
'#130915 11:27:19 server id 1 end_log_pos 16528
'#Append_block: file_id: 1417 block_len: 8192
'# at 16528
'#130915 11:27:19 server id 1 end_log_pos 24743
'#Append_block: file_id: 1417 block_len: 8192
'# at 24743
'#130915 11:27:19 server id 1 end_log_pos 32958
'#Append_block: file_id: 1417 block_len: 8192
'# at 32958
'#130915 11:27:19 server id 1 end_log_pos 41173
'#Append_block: file_id: 1417 block_len: 8192
'# at 41173
'#130915 11:27:19 server id 1 end_log_pos 82248
'#Append_block:警告: file_id: 1417 の Create_file イベントがないため、Append_block を無視します
'警告: file_id: 1417 の Create_file イベントがないため、Append_block を無視します
'警告: file_id: 1417 の Create_file イベントがないため、Append_block を無視します

などなど。私には全く意味が分かりません。

netams.logに書かれていること

ファイル: netams.log 行 1006126 列 0 180576689 バイト 84%
13.09.2013 23:59:52.8916 data-source:1 [WARN]: MySQL から次のエラーが発生しました: レベル = エラー、コード = 126、メッセージ = テーブル './netams/monitor.MYI' のキー ファイルが正しくありません。修復してください。
13.09.2013 23:59:52.8916 data-source:1 [WARN]: MySQL から次のエラーが発生しました: レベル = エラー、コード = 126、メッセージ = テーブル './netams/monitor.MYI' のキー ファイルが正しくありません。修復してください。
13.09.2013 23:59:52.8919 data-source:1 [WARN]: モニターの SQL へのデータのロードに失敗しました。「debug storage」を試してください。
14.09.2013 00:01:20.0461 data-source:1 [WARN]: SQL データのロード: テーブル './netams/monitor.MYI' のキー ファイルが正しくありません。修復してください
。 14.09.2013 00:01:20.0464 data-source:1 [WARN]: MySQL から次の警告を受け取りました: レベル = 警告、コード = 1262、メッセージ = 行 243 が切り捨てられました。入力列よりも多くのデータが含まれていました。
14.09.2013 00:01:20.0464 data-source:1 [警告]: MySQL から次の警告を受け取りました: レベル = 警告、コード = 1262、メッセージ = 行 265 が切り捨てられました。入力列よりも多くのデータが含まれていました。

答え1

14.09.2013 00:01:20.0461 data-source:1 [WARN]: SQL Load data: Incorrect key file for table './netams/monitor.MYI'; try to repair it
14.09.2013 00:01:20.0464 data-source:1 [WARN]: Got the following WARNINGS from MySQL: level = Warning, code = 1262, message = Row 243 was truncated; it contained more data than there were input columns.
14.09.2013 00:01:20.0464 data-source:1 [WARN]: Got the following WARNINGS from MySQL: level = Warning, code = 1262, message = Row 265 was truncated; it contained more data than there were input columns.

このエラーは、netams データベースに破損したテーブルがあることを示しています。「テーブル './netams/monitor.MYI' のキー ファイルが正しくありません。修復を試みる「」。

テーブルの修復は通常、いくつかのコマンドで実行できます。テーブルの修復によってデータが失われる場合があるため、最初にテーブルをバックアップしてください。データベースのサイズによっては修復に時間がかかることがあります。修復が 10 ~ 20 分間停止しているように見える場合もありますが、実際には破損した行を静かにスキャンしているだけです。セカンダリ ウィンドウでこれを実行し、監視しながら辛抱強く待ちます。

テーブルの修復に関するヒントについては、MySQL マニュアルを参照してください。

関連情報