MariaDBのバージョンアップに伴うテーブル移行:`mysql_upgrade`と互換性レイヤー徹底解説


このコマンドは、以下の機能を提供します。

  • 辞書の更新
    辞書を最新バージョンに更新します。
  • インデックスの更新
    インデックス構造を検査し、必要に応じて最新バージョンに更新します。
  • データ型変換
    必要に応じて、データ型を互換性の高い新しい型に変換します。
  • テーブル構造のチェックと更新
    各テーブルの構造を検査し、必要に応じて最新バージョンに更新します。

mysql_upgradeコマンドを実行する前に

  • アップグレードするMariaDBバージョンと互換性のあるクライアントを使用していることを確認してください。
  • 十分なバックアップを取ってください。
  • MariaDBサーバーが停止していることを確認してください。

mysql_upgradeコマンドの実行

以下のコマンドを使用して、mysql_upgradeを実行できます。

mariadb-upgrade [options]

オプション

  • --version: バージョン情報を表示します。
  • --verbose: ログ情報を詳細に出力します。
  • --force: エラーが発生してもアップグレードを続行します。
  • --datadir: データディレクトリを指定します。
  • --basedir: MariaDBインストールディレクトリを指定します。


mariadb-upgrade --basedir=/usr/local/mariadb --datadir=/var/lib/mysql
  • 問題が発生した場合は、MariaDBドキュメントまたはコミュニティフォーラムを参照してください。
  • mysql_upgradeコマンドを実行すると、データベースの構造が変更されます。アップグレード前に必ずバックアップを取ってください。
  • mysql_upgradeコマンドは、すべてのMariaDBバージョン間で使用できるわけではありません。アップグレード前に、互換性マトリックスを確認してください。
  • 問題が発生した場合は、MariaDBドキュメントまたはコミュニティフォーラムを参照してください。
  • アップグレード前に、互換性マトリックスを確認して、アップグレードするバージョンが現在のバージョンと互換性があることを確認してください。
  • mysql_upgradeコマンドは、MariaDBサーバーが停止している状態で実行する必要があります。


# MariaDBサーバーを停止する
sudo systemctl stop mariadb

# mysql_upgradeコマンドを実行する
sudo mariadb-upgrade --basedir=/usr/local/mariadb --datadir=/var/lib/mysql

# MariaDBサーバーを起動する
sudo systemctl start mariadb

例:--forceオプションの使用

# エラーが発生してもアップグレードを続行する
sudo mariadb-upgrade --basedir=/usr/local/mariadb --datadir=/var/lib/mysql --force

例:--verboseオプションの使用

# ログ情報を詳細に出力する
sudo mariadb-upgrade --basedir=/usr/local/mariadb --datadir=/var/lib/mysql --verbose

例:--versionオプションの使用

# バージョン情報を表示する
sudo mariadb-upgrade --version
  • 問題が発生した場合は、MariaDBドキュメントまたはコミュニティフォーラムを参照してください。
  • mysql_upgradeコマンドを実行する前に、必ずバックアップを取ってください。
  • 上記のコードはあくまで例であり、ご自身の環境に合わせて変更する必要があります。


mysql_upgradeコマンドは、MariaDBの古いバージョンのテーブルを新しいバージョンにアップグレードするために使用されるツールですが、非推奨となっています。MariaDB 10.5以降では、mariadb-upgradeという名前になっています。

代替手段として、以下の方法が推奨されています。

mysqldump と mysql を使用する

  1. mysqldumpコマンドを使用して、古いバージョンのデータベースをダンプします。
  2. 新しいバージョンのMariaDBをインストールします。
  3. mysqlコマンドを使用して、ダンプしたファイルを新しいデータベースにインポートします。
  4. 必要に応じて、テーブル構造の変更を手動で行います。


# 古いバージョンのデータベースをダンプする
mysqldump -u root -pold_database > old_database.sql

# 新しいバージョンのMariaDBをインストールする
# ...

# 新しいデータベースを作成する
mysql -u root -p -e "CREATE DATABASE new_database;"

# ダンプしたファイルを新しいデータベースにインポートする
mysql -u root -pnew_database < old_database.sql

# 必要に応じて、テーブル構造の変更を手動で行う
# ...

Percona xtraBackup を使用する

Percona XtraBackupは、MariaDBのバックアップとリストアのためのオープンソースツールです。mysql_upgradeコマンドの代替手段として使用することができます。


# 古いバージョンのデータベースをバックアップする
xtrabackup --backup --database old_database

# 新しいバージョンのMariaDBをインストールする
# ...

# 古いバージョンのデータベースを新しいデータベースにリストアする
xtrabackup --restore --target-dir=/path/to/new_datadir

互換性レイヤーを使用する

MariaDB 10.2以降には、古いバージョンのアプリケーションとの互換性を保つための互換性レイヤーが導入されています。このレイヤーを使用すると、mysql_upgradeコマンドを使用せずに古いバージョンのテーブルを新しいバージョンで開くことができます。


# 古いバージョンのデータベースを新しいデータベースに接続する
mysql -u root -p -Dnew_database --compat=mysql57
  • 問題が発生した場合は、MariaDBドキュメントまたはコミュニティフォーラムを参照してください。
  • 上記の方法はすべて、互換性の問題が発生する可能性があります。アップグレード前に必ずバックアップを取ってください。