web-dev-qa-db-ja.com

ログファイルが1つだけのMySQLバイナリロギング?

バイナリロギングをオンにしてMySQLデータベースを実行しています。データベースが再起動されるたびに、新しいバイナリログファイルが次の形式で作成されます。

mysql-bin.00001
mysql-bin.00002
...
mysql-bin.0000n

私の質問は、データベースを再起動するたびにバイナリログファイルを同じままにしておく方法はありますか.

したがって、たとえば、常にmysql-bin.00001です。

どんな助けでも大歓迎です。

2
user68337

あなたができる5つの(5)方法があります

方法#1

再起動を実行しないでください。シャットダウンと起動の間にバイナリログを削除します。

mysql-bin.*/var/lib/mysqlにあるとします。以下を実行します。

cd /var/lib/mysql
service mysql stop
rm -f mysql-bin.*
service mysql start

起動後、mysqlにログインして実行します

SHOW MASTER STATUS;

mysql-bin.000001が表示されます

方法#2

RESET MASTER;を実行するスクリプトを作成して実行する

ステップ01:この行をmy.cnfグループヘッダーの下の[mysqld]に追加します

[mysqld]
init-file=/var/lib/mysql/init.sql

ステップ02:以下を実行します

echo "RESET MASTER;" > /var/lib/mysql/init.sql
chown mysql:mysql /var/lib/mysql/init.sql

ステップ03:service mysql restart

方法#3

手作業で行います。 mysqlにログインして実行します

mysql> RESET MASTER;

方法#4

再起動後すぐにバイナリログを消去する

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
service mysql restart
mysql ${MYSQL_CONN} -e"RESET MASTER"

メソッド#5(永続的)

ステップ01:my.cnfに移動し、log-binオプションをコメント化します

[mysqld]
#log-bin=mysql-bin

または、log-bin = mysql-binという行を削除します

ステップ02:以下を実行します

cd /var/lib/mysql
service mysql stop
rm -f mysql-bin.*
service mysql start

ステップ03:mysqlにログインして実行する

mysql> SHOW BINARY LOGS;

出力は

ERROR 1381 (HY000): You are not using binary logging    

試してみる !!!

2
RolandoMySQLDBA

real質問とは何ですか?

ますます多くのバイナリログが積み重なることに悩まされているなら、

expire_logs_days = 7

これにより、binlogが7日間だけ保持されます。それは1 binlogかもしれません(常に起きている場合)。 100になる可能性があります(とんでもない頻度で再起動した場合)。しかし、彼らは永遠に積み重なることはありません。

なんらかの理由でbinlogが有効になっていると思います-リカバリ?バックアップ?等? Rolandoが彼の方法のいくつかで示唆しているように、それらのそれぞれはあなたが盲目的にバイナリログを捨てることができません。

1
Rick James