Quantcast
Channel: 日々の覚書
Viewing all articles
Browse latest Browse all 581

ストレージエンジンをインストールしている環境でのリストアではまりがちなこと

$
0
0

TL;DR

  • plugin_dirに必要な .soファイルを置いておくのは大前提
  • mysqldumpから戻す時は、戻す前に自分で INSTALL PLUGIN
  • 物理バックアップから戻すときは基本的にそのまま戻して起動すればおk

周囲1mくらいで2回聞かれたのでメモしておく。
対象は ストレージエンジンプラグイン (デーモンプラグインである innodb_memcachedとか mysqlxは対象外)かつサーバーデフォルトで有効になって いないもの( InnoDB, MyISAMなどは対象外)、つまりだいたい Mroonga, TokuDB, RocksDBあたりをターゲットとして見ている。
ストレージエンジンプラグインが有効化されるタイミングは、 INSTALL PLUGINまたは mysqldの起動時に mysql.plugin にレコードがあるの2つ。
プラグインは plugin_dir$basedir/lib/pluginとか、 x86_64のrpm版だったら /usr/lib64/mysql/pluginとか)に置いてあるファイル以外は読めないので、 どちらの場合も plugin_dirに対応する .soファイルが設置済である必要がある。
という訳で、リストア先の plugin_dir.soファイルを置いていない場合は最初に置いておく。
TokuDBとか RocksDBとかのバンドルされている(= plugin_dir.soファイルは置いてある)けど有効化されていないストレージエンジンであればこの前提は既に満たされている。
MySQLで Mroongaを使っている時に置き忘れるパターンがほぼほぼ(MariaDBの場合はMroongaは「バンドルされているけど有効化されていないストレージエンジン」なのでMariaDBの場合は当てはまらないと思うけど最近もまだバンドルされているのかよくわからない…)
次。
物理バックアップから mysqlスキーマを含んだ完全な datadirを戻す場合、特に気にする必要はない。
何故ならその mysql.pluginテーブルには既にその .soファイルを示すレコードがINSERTされているので(バックアップ元のサーバーで INSTALL PLUGINをした時点で、プラグインが有効化されると同時に mysql.pluginINSERTが走る)、次に mysqldを起動した段階でそのストレージエンジンは有効化される。
物理バックアップでも、 mysqlスキーマを 含まないdatadirを戻す場合は、 mysql.pluginにレコードがないことが期待できるので、リストアする前にリストア先のインスタンスで INSTALL PLUGINを実行する必要がある(なんなら INSERT INTO mysql.plugin VALUES (..)でもいいけど、わざわざSQLで叩く必要はないから INSTALL PLUGINの方がいいと思う)
というか今日日こういう取り方することは少ないと思うけれども。
論理バックアップの場合、必ずリストア前に INSTALL PLUGINが要る。
mysqlスキーマを含んでいない場合は物理バックアップの時と同じくだが、全体をまるっとリストアする場合でも、 mysql.pluginへの INSERTはプラグインを有効化 しないので、 mysqlスキーマのリストアまでは成功したとしても後続(単純にASCII順に並べる気もするから、前ってこともあり得る)のスキーマをリストアするどこかで失敗する( sql_modeのNO_ENGINE_SUBSTITUTIONが設定されている場合はエラー、されていない場合はワーニングでデフォルトのストレージエンジン(たぶんInnoDB)に勝手に置き換えられる)
もしどうしても論理バックアップで INSTALL PLUGINをせずにやるとしたら、
  1. mysqlスキーマだけを先にリストアする
  2. mysqld再起動(これにより mysql.pluginのレコードが読まれてプラグインが有効化)
  3. 残りのスキーマ、もしくは mysqlスキーマも含めてもう一度リストアする
    という感じになる。敢えてやる必要はどこにもないと思うけれど。
というわけで、
  • 論理バックアップから戻す時は自分で INSTALL PLUGIN
  • 物理バックアップから戻す時はそのままでおk
    なのでしたん。

Viewing all articles
Browse latest Browse all 581

Trending Articles