web-dev-qa-db-ja.com

MySQL:不正なバイナリログ形式-OFF.000

私はマスターとしてPerconaMySQL 5.5.30を持っています(Debian6.0.7)。すべてのバイナリログが.cnfファイルで指定された形式ではなくOFF.00 *形式で保存され始めるという奇妙な問題が発生しました。

 
 mysql>バイナリログを表示; 
 + ------------ + ------------ + 
 | Log_name | File_size | 
 + ------------ + ------------ + 
 | OFF.000084 | 1073744171 | 
 | OFF.000085 | 1073741909 | 
 | OFF.000086 | 1073742904 | 
 | OFF.000087 | 1073745627 | 
 | OFF.000088 | 1073742910 | 
 | OFF.000089 | 1073742081 | 
 | OFF.000090 | 1075694984 | 
 
 mysql> show variable like "%log_bin%"; 
 + --------------------- ------------ + ------- + 
 | Variable_name |値| 
 + --------------------------------- + ------- + 
 | log_bin |オン| 
 | log_bin_trust_function_creators |オフ| 
 | sql_log_bin |オン| 
 + --------------------------------- + ------- + 
 
 bash-4.1#grep log-bin /etc/mysql/conf.d/mycustom.cnf
log-bin =/var/log/mysql/acct-db1- bin.log 
 

MySQLサービスを再起動したり、何もしていませんが、バイナリログの形式がどのように変更されたのか疑問に思っています。

このマスターに新しいスレーブをセットアップしましたが、レプリケーションに問題はありません。しかし、それが将来問題を引き起こすかどうかを考えています。

1
Nandan A

私はあなたの問題を見たことがあります

問題#1

/etc/mysql/conf.d/mycustom.cnfがあり、log-bin行が読み取られていません

問題#2

/etc/mysql/conf.d/my.cnfが存在し、次の行がある可能性があります

[mysqld]
log-bin=OFF

そのため、binlogはOFFのファイル名で始まります。

log-bin=OFFがbinloggingを無効にしていると感じる人もいます。 log-bin のMySQLドキュメントには、許可される値はファイル名であると記載されています。したがって、ブール値ではありません。行を削除するかコメントアウトするだけで、binloggingが無効になります。

提案#1

を使用してmysqldを手動で開始することをお勧めします

service mysql stop
mysqld --defaults-file="/etc/mysql/conf.d/mycustom.cnf"

提案#2

log-bin/etc/mysql/conf.d/my.cnfを変更するだけです

次にservice mysql restart

エピローグ

まだmysqlを再起動しないでください。この問題はマスターの1つです。

ステップ01:マスターへのすべての書き込みを停止します

ステップ02:スレーブに移動し、STOP SLAVE;を実行します

ステップ03:マスターでmysqlを再起動します

ステップ04:スレーブで、これを実行します

CHANGE MASTER TO master_log_file='acct-db1-bin.000001',master_log_pos = 4;
START SLAVE;

ステップ05:マスターへのすべての書き込みを開始します

これでメンテナンスが完了します

1
RolandoMySQLDBA