mysql:13718
From: <ska_king2005@xxxxxxxxxx>
Date: Thu, 8 Feb 2007 10:07:46 +0900 (JST)
Subject: [mysql 13718] Re: オンラインバックアップデータのリカバリ時のエラーについて
skakingです。 リカバリ手順の「1.バックアップデータを戻す」時は、スナッ プショットで取得した 「InnnoDBデータファイル」と「InnoDBログファイル」と「デ ータベースファイル(.frm)」を戻していますか? クラッシュリカバリ時には「InnnoDBデータファイル」と「InnoDB ログファイル」を使用しますので、 あまり内容が食い違っているとリカバリに失敗したような気が します。 リカバリ時のログを見ると「ibd」ファイルを使用していると いうことは、 「innodb-file-per-table 」オプションを使用しているのでし ょうか? その場合は、「データベースファイル(.frm, .ibd)」と「InnoDB ログファイル」になると思われます。 基本的にMySQL5しかさわったことがないので過去バージョンは 詳しくわかりませんが、 「innodb_safe_binlog」は、トランザクションとバイナリログ の同期性に関するオプション設定なので、 クラッシュリカバリの動きには特に影響ないと思われます。 また、「innodb_safe_binlog」はMySQL5.0.3くらいに廃止され 、 代わりとして「sync_binlog」になっていますので注意して下 さい。 以上です。 --- hiraken <hiraken@xxxxxxxxxx> wrote: > skakingさん > > たかひらです。 > アドバイスありがとうございます。 > > 確かに、バックアップ時のflush > logs;は、意味がありませんね。(^.^) > > ただ、バックアップ手順「1→3→4→5→6」でも試してみま したが、 > 同様のエラーがでてしまいます。(;_;) > > 今回、my.cnfにて、innodb_safe_binlogを指定していますの で、 > バックアップデータを戻し、MySQLを起動すれば、 > InnoDB表に関してはクラッシュリカバリが成功し、エラーは 出ないと考えていたのですが.... > > 特に似たような事象はないようですので、バージョンの問題 でしょうか? > > / Takahira Ken > > ----- Original Message ----- > From: <ska_king2005@xxxxxxxxxx> > To: <ml@xxxxxxxxxx> > Sent: Wednesday, February 07, 2007 10:26 AM > Subject: [mysql 13713] Re: > オンラインバックアップデータのリカバリ時のエラーについ て > > > > skakingです。 > > > > エラーを無視してよいかの回答ではありませんが。。。 > > > > reset > masterコマンド実行時に、バイナリログもローテートさ > > れると思ったのですが、 > > > あえて、2を実行しているのは何か意図があるのでしょうか ? > > flush > logsコマンドはバイナリログを安全にローテートするく > > らいと認識しているのですが。 > > > > > なので、バックアップ手順は「1→3→4→5→6」でよいと思 い > > ます。 > > > 特に問題なければこの手順ではエラーが発生しないと思われ ま > > す。 > > > もしくは、expire_logs_daysオプション付で「1→3→2→5→6 > > 」でも問題ないのかなと。。。 > > > > > ちょっとMySQLを試せる環境が無い状態なので、間違った内 容 > > を書いていた場合はすいません。 > > > > 以上です。 > > > > > > --- hiraken <hiraken@xxxxxxxxxx> 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 > >> > >> > >> > > > > > > -- > === 以下のメッセージは省略されました === -- skaking <ska_king2005@xxxxxxxxxx> DB:MySQL5.0.19, OS:WinXPProSP2 -------------------------------------- Start Yahoo! Auction now! Check out the cool campaign http://pr.mail.yahoo.co.jp/auction/
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]