[前][次][番号順一覧][スレッド一覧]

mysql:16672

From: yoku0825 <yoku0825 <yoku0825@xxxxxxxxxx>>
Date: Sun, 26 Sep 2021 17:37:10 +0900
Subject: [mysql 16672] Re: [mysql 16671] Re: [mysql 16668] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について

yoku0825です。


> 自宅サーバでWordPressを立ち上げていて、不覚にもデータベースのバックアップ

> 取らずにOSをFreeBSD 11.3Rp13から12.2Rp7に上げてしまいました。


> wordpressを構築した時は、MySQL5.6でした。


OSをバージョンアップした時点でのMySQLはいくつでしたか?
(その時点のMySQLと合わせたバージョンにするのが望ましいと思っています。
 ibdファイルだけ無理矢理インポートするようなイレギュラーなケースなので、
 リリースシリーズをまたいだ(たとえば、5.6と5.7)状態で
 それが無理矢理できるようなものなのかわかりません)


> ただ、DISCARD TABLESPACEを実行後、ibdは、消えていませんでしたが、念のため


これも何かおかしいです。パスが間違っているか正しくibdファイルをつかめていない気がします。



綺麗に以下のように再実行できますか?
FreeBSDのレイアウトは知らないので、Linux - Generalを使って /usr/local/mysql
の下にもろもろがある状態のコマンド例です。適宜読み替えてください。

----

/usr/local/mysql/bin/mysqladmin shutdown ###
MySQLを止めます。他にコマンドがあるようならこれでなくてかまいません
rm -r /usr/local/mysql/data              ### 一度中身をきれいにします
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql
--datadir=/usr/local/mysql/data ### データディレクトリを初期化します
/usr/local/mysql/bin/mysqld --daemonize  ###
MySQLを起動します。他にコマンドがあるようならこれでなくてかまいません
/usr/local/mysql/bin/mysql -uroot < mysqldump_zenpakudb20190223.dump
### 以前のmysqldumpをリストアします。まだ.ibdファイルには触りません

この時点では、古いデータを格納したibdファイルが出来上がっているはずです。

sql_modeを''に設定、これは好きな方法でやって大丈夫だと思います(my.cnfに書くのかSET GLOBALでやるのか)


mysql> use zenpakudb
mysql> ALTER TABLE .. ROW_FORMAT = Compact;

この時点では、古いデータを格納したibdファイルがまだ存在しているはずです。


mysql> ALTER TABLE .. DISCARD TABLESPACE;

ここでibdファイルが消えます。


cp -ip /path/to/ibd /usr/local/mysql/data/zenpakudb/

ここでibdファイルを置きますが、まだmysqldはこのファイルを認識していないはずです(何ならlsofとかで確認できるはずです)


mysql> ALTER TABLE .. IMPORT TABLESPACE;
mysql> SHOW WARNINGS;

.cfgファイル(本来ならibdと一緒においてIMPORT TABLESPACEすべきもの)が無いというワーニングが一発返ってくるはずです。
この時点で.ibdファイルを掴むので、lsofとかするとmysqldが掴んでいるのが確認できます。


cat /usr/local/mysql/data/*.err

手元で5.7のibdを無理矢理同じ手順で突っ込んだ時は、↓のようなエラーログ出力がありました。

2021-09-24T22:53:53.503767+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:53:53.506481+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:53:53.506584+09:00 7 [Note] InnoDB: Phase I - Update all pages
2021-09-24T22:53:53.507082+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:53:53.508440+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:53:53.509726+09:00 7 [Note] InnoDB: Phase III - Flush
changes to disk
2021-09-24T22:53:53.514926+09:00 7 [Note] InnoDB: Phase IV - Flush complete
2021-09-24T22:53:53.515191+09:00 7 [Note] InnoDB: `world`.`country`
autoinc value set to 0
2021-09-24T22:54:09.281184+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:54:09.282847+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:54:09.282903+09:00 7 [Note] InnoDB: Phase I - Update all pages
2021-09-24T22:54:09.283399+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:54:09.284621+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:54:09.285799+09:00 7 [Note] InnoDB: Phase III - Flush
changes to disk
2021-09-24T22:54:09.292091+09:00 7 [Note] InnoDB: Phase IV - Flush complete
2021-09-24T22:54:09.292302+09:00 7 [Note] InnoDB:
`world`.`countrylanguage` autoinc value set to 0
2021-09-24T22:54:14.613937+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:54:14.616092+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:54:14.616143+09:00 7 [Note] InnoDB: Phase I - Update all pages
2021-09-24T22:54:14.617168+09:00 7 [Note] InnoDB: Sync to disk
2021-09-24T22:54:14.618780+09:00 7 [Note] InnoDB: Sync to disk - done!
2021-09-24T22:54:14.619797+09:00 7 [Note] InnoDB: Phase III - Flush
changes to disk
2021-09-24T22:54:14.625587+09:00 7 [Note] InnoDB: Phase IV - Flush complete
2021-09-24T22:54:14.625773+09:00 7 [Note] InnoDB: `world`.`city`
autoinc value set to 0
2021-09-24T22:54:14.630708+09:00 7 [Note] InnoDB: AUTOINC next value
generation is disabled for '`world`.`city`'


もしどこか想定していない事象(特に、ibdファイルが現れたり消えたり掴んだりするあたり)が発生したら、
MySQLを停止してデータディレクトリを空っぽにするところから再実行してください。

OSアップグレード前のバージョンが5.6だったなら、5.6のmysqldを使った方が確実だと思います。


yoku0825,

2021年9月25日(土) 21:52 岡善博 <zenpaku@xxxxxxxxxx>:
>

> 岡善博@中札内です。

>

> ちょっと気に成る事が有って、再度復元作業をしました。

> -rw-rw----  1 mysql  mysql  6679 12月 12  2020 wp_comments.frm

> は、ちゃんとパックアップした日に成っていて、WordPressをアップデートする前に

> バックアップを取って、バージョンアップで更新されたのかもと思いました。

>

> で復元手順を進めて行くと、下記のエラーが出ました。

> ERROR 2013 (HY000): Lost connection to MySQL server during query

>

> https://qiita.com/shy_azusa/items/9f6ba519cfda626db52b

> のページの対策をしました。

> [mysqld]

> wait_timeout            = 86400  ;これは、全くの追加でした。

> max_allowed_packet      = 256M   ;16Mから1Gは、どうよと思い256Mにしました。

> innodb_buffer_pool_size = 1G     ;これは、元々記述されていました。

>

> mysqldを再起動して、mysqlもコネクションを張り直し、復元作業は、エラー無く

> 出来ました。

> ただ、DISCARD TABLESPACEを実行後、ibdは、消えていませんでしたが、念のため

> cpを実行しています。

>

> /usr/home/oka/BACKUP: mysqldump --single-transaction --no-tablespaces \

> --set-gtid-purged=OFF -u zenpakudb -p zenpakudb > /home/oka/BACKUP/mysqldump_zenpakudb.dump

> Enter password:

> mysqldump: Couldn't execute 'show table status like 'wp\_postmeta'': \

> Lost connection to MySQL server during query (2013)

>

> と云うメッセージは、まだ出ます。

>

> -rw-r--r--  1 oka   oka    2001654  9月 25 21:20 mysqldump_zenpakudb.dump <=今回。

> -rw-r--r--  1 root  oka    3070302  2月 23  2019 mysqldump_zenpakudb20190223.dump

> -rw-r--r--  1 oka   oka    3966673 10月  4  2019 mysqldump_zenpakudb20191004.dump

> -rw-r--r--  1 root  oka    3964939 10月 19  2019 mysqldump_zenpakudb20191019.dump

> -rw-r--r--  1 root  oka    7925810 12月 12  2020 mysqldump_zenpakudb20201212.dump

>

> 2021年9月25日(土) 1:35 岡善博 <zenpaku@xxxxxxxxxx>:

>>

>> 岡@中札内です。

>> ちょっと気に成る事が有ります。

>> 有る時点で、mysql_mode=‘’に設定して、元の状態に戻していません。

>

> この問題は、セッションを張り直したら元の設定に戻っていると云う

> 理解であっていますか?


[前][次][番号順一覧][スレッド一覧]

   @ 16662 2021-09-24 10:36 [岡善博 <zenpaku@xxxx] Re: [mysql 16660] Re: [mysql 16659] Re: [mysql 16657] Re: [mysql 16656] frmとibdのみのデータからデータベースの復旧方法について
     16663 2021-09-24 11:58 ┗[Takahiro Kambe <taca] Re: frmとibdのみのデータからデータベースの復旧方法について
     16664 2021-09-24 13:01  ┗[yoku0825 <yoku0825@x] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について
   @ 16665 2021-09-24 14:04   ┗[岡善博 <zenpaku@xxxx] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について
     16666 2021-09-24 14:20    ┗[yoku0825 <yoku0825@x] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について
   @ 16667 2021-09-24 20:08     ┗[岡善博 <zenpaku@xxxx] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について
     16668 2021-09-24 23:26      ┗[yoku0825 <yoku0825@x] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデータベースの復旧方法について
   @ 16669 2021-09-25 01:16       ┣[岡善博 <zenpaku@xxxx] Re: [mysql 16668] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデ
     16670 2021-09-25 01:34       ┗[岡善博 <zenpaku@xxxx] Re: [mysql 16668] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re: frmとibdのみのデータからデ
   @ 16671 2021-09-25 21:51        ┗[岡善博 <zenpaku@xxxx]                         
->   16672 2021-09-26 17:37         ┗[yoku0825 <yoku0825@x] Re: [mysql 16671] Re: [mysql 16668] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re: [mysql 16663] Re
   @ 16673 2021-09-26 20:20          ┗[岡善博 <zenpaku@xxxx] Re: [mysql 16672] Re: [mysql 16671] Re: [mysql 16668] Re: [mysql 16667] Re: [mysql 16666] Re: [mysql 16665] Re: [mysql 16664] Re
   @ 16676 2021-10-05 16:20           ┗[岡善博 <zenpaku@xxxx]