mysql:13719
From: Yasufumi Kinoshita <Yasufumi Kinoshita <kinoshita.yasufumi@xxxxxxxxxx>>
Date: Thu, 08 Feb 2007 11:24:08 +0900
Subject: [mysql 13719] Re: オンラインバックアップデータのリカバリ時のエラーについて
木下です。 Oracle についてのご理解はあるようですので、Oracleに例えて説明します。 MySQL(少なくとも4.1)では、Oracleでいうところの 「ALTER TABLESPACE xxx BEGIN BACKUP」−「ALTER TABLESPACE xxx END BACKUP」 にあたる処理は実装されていませんので、MySQL動作中に普通にコピーや、 たとえストレージの機能でデータファイル等のスナップショットを取っても、 そのファイルから復元できる保障はありません。 4.1では、オンラインでバックアップを行う場合は、mysqldumpを利用するか、 データファイルのバックアップ http://dev.mysql.com/doc/refman/4.1/en/innodb-backup.html にあるように「InnoDB Hot Backup」というソフト(有料)を使用する必要があります。 というわけですので、 ログを見ますと、「バックアップファイルからの復元」ではなく、 「クラッシュからの復元」としての扱いを受けているのがわかると思います。 回答になっていますでしょうか? hiraken wrote: > こんばんは。はじめまして > たかひらと申します。 > > 最近、OracleDBユーザから、MySQLユーザへ切り替わってきたものです。 > このMLは、過去ログも含め、非常に参考になる情報ばかりで重宝しております。 > > さて現在、バージョン4.1.12 をRed Hat Linux ES4上で稼動させた、 > OLTP系のシステムの、バックアップ・リカバリ設計をしておりまして、 > 以下の方法で、オンラインバックアップを行おうと考えています。 > > 【バックアップ手順】 > 1. flush tables with read lock; > 2. flush logs; > 3. ストレージのスナップショット > 4. reset master; > 5. unlock tables; > 6. 3で取得したスナップショットをテープ等へバックアップ > > > しかし、検証環境でリカバリ動作を確認したところ、データは戻し、MySQLを起 > 動することができたものの、 > 下記リカバリ手順の2.のタイミングで、/var/log/mysqld.logにエラーが出力さ > れているのに気づきました。 > > 【リカバリ手順】 > 1.バックアップデータを戻す > 2.ネットワーク接続なしでMySQLを起動 > 3.バイナリログからロールフォワードリカバリ->MySQLを停止 > 4.MySQLを通常起動 > > =[リカバリ時のログ]===================================================== > ========== > 070206 15:10:45 mysqld started > 070206 15:10:45 [Warning] --innodb-safe-binlog is meaningful only if the > global sync_binlog variable > is 1; now setting it to 1. > 070206 15:10:45 InnoDB: Database was not shut down normally! > InnoDB: Starting crash recovery. > InnoDB: Reading tablespace information from the .ibd files... > InnoDB: Restoring possible half-written data pages from the doublewrite > InnoDB: buffer... > 070206 15:10:45 InnoDB: Starting log scan based on checkpoint at > InnoDB: log sequence number 0 44818. > InnoDB: Doing recovery: scanned up to log sequence number 0 44904 > InnoDB: Last MySQL binlog file position 0 4, file name > /var/lib/mysql/binlog.000002 > 070206 15:10:45 InnoDB: Flushing modified pages from the buffer pool... > 070206 15:10:45 InnoDB: Started; log sequence number 0 44904 > 070206 15:10:45 [ERROR] After InnoDB crash recovery, checking if the > binary log > '/var/lib/mysql/binlog.000002' contains rolled back transactions which > must be removed from it... > /usr/libexec/mysqld: ready for connections. > Version: '4.1.12-log' socket: '/var/lib/mysql/mysql.sock' port: 0 > Source distribution > =[リカバリ時のログ]===================================================== > ========== > > > [ERROR] After InnoDB crash recovery, checking if the binary log > '/var/lib/mysql/binlog.000002' contains rolled back transactions which > must be removed from it... > > は、 > 『InnoDBのクラッシュリカバリ後、binlog.000002がロールバックトランザク > ションを含むバイナリログならば、 > チェックしなさい。』 > という直訳で理解しましたが、binlog.000002自体が、 > バックアップ手順の2.で、flush logsを実行した時にできた、 > 最新バイナリログですので、中身に処理は記載されておりません。 > 従いましてこの場合、このメッセージを無視していいものかどうか、迷っており > ます。 > > どなたか、同様のご経験をされた方がいらっしゃいましたら、何卒ご教授願いま > せんでしょうか。 > 以上、よろしくお願い申し上げます。 > > / Takahira Ken > > >
13712 2007-02-07 03:18 ["hiraken" <hiraken@x] オンラインバックアップデータのリカバリ時のエラーについて 13713 2007-02-07 10:26 ┣[<ska_king2005@xxxxxx] 13714 2007-02-07 17:38 ┃┣[<kaidnu2@xxxxxxxxxx>] MySQL GUI-tool ( Linux 版)インストール方法 13715 2007-02-07 22:02 ┃┃┗[舘山 聖司 <tateyan@x] 13716 2007-02-07 22:30 ┃┃ ┗[<kaidnu2@xxxxxxxxxx>] 13717 2007-02-08 01:54 ┃┗["hiraken" <hiraken@x] 13718 2007-02-08 10:07 ┃ ┗[<ska_king2005@xxxxxx] -> 13719 2007-02-08 11:24 ┗[Yasufumi Kinoshita <] 13720 2007-02-08 16:10 ┗[<ska_king2005@xxxxxx] 13721 2007-02-08 17:21 ┗[Yasufumi Kinoshita <] 13722 2007-02-09 01:33 ┗["hiraken" <hiraken@x] 13724 2007-02-14 02:05 ┗["hiraken" <hiraken@x]