web-dev-qa-db-ja.com

mysql binlogをステートメント形式から行形式に変換することは可能ですか?

オンラインのmysqlサーバーはバージョン4.1であり、行ベースのバイナリログをサポートしていません。それにもかかわらず、行ベースのバイナリログが必要です。古いmysqlによって生成されたbinlogを使用して、それを行ベースのbinlogをサポートするより高いバージョンの別のmysqlにインポートして、行ベースのbinlogを取得できますか?

4
amazingjxq

Binlogを別のバージョンに変換することはできませんが、バージョン4.1のmysqlbinlogがある限り、SQLをインポートします。

次のようにしてください。

  • MySQL 4.1 binlogに対してMySQL 4.1バージョンのmysqlbinlogを実行し、出力をstmts.sqlに保存します。
  • MySQL 5.xをmy.cnf にインストールします
    • log-bin=mysql-bin
    • binlog-format=ROW
  • MySQL 5.1にログインしてsource stmts.sqlを実行します
  • SHOW BINARY LOGS;を実行します

完了すると、表示されるバイナリログは行ベースになります。

試してみる !!!

なぜ変換できないのですか? BINLOGマジックナンバーは、新しいバージョンで置き換えられます。

以前に書いた

Mysqlを再起動するたびに、次の空のbinlogが作成されます。 MySQLのバージョンごとにサイズが異なります。

  • MySQL 5.6:120
  • MySQL 5.5:107
  • MySQL 5.1:106
  • MySQL 5.0:98

この観点から、ゼロからバイナリログを生成するのが最善の方法です。

[〜#〜] update [〜#〜]Michael's Comment のおかげで、データをバイナリログにプリロードする必要がありますMySQL 5.1インスタンスから来ました。

1
RolandoMySQLDBA