0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エアークローゼットAdvent Calendar 2024

Day 11

LinuxでのMySQLデータベースのバックアップ&リストア方法

Last updated at Posted at 2024-12-23

この記事は、エアークローゼットアドベントカレンダー2024の11日目の記事です。

はじめに

この記事では、Linux環境でMySQLデータベースをバックアップおよびリストアするためのコマンドをご紹介します。

Linuxでは、バックアップにはmysqldumpコマンドを使用し、リストアにはmysqlまたはmysqlimportコマンドを使用します。この2つのコマンドはMySQL管理において欠かせない存在です。

それでは早速、バックアップ方法から見ていきましょう!

I. MySQLデータベースをバックアップする方法

mysqldumpコマンドは、ローカルまたはリモートでデータベースをバックアップするために使用されます。このコマンドの実行結果はSQL形式の1つのファイルとして出力されます。

ただし、バックアップするには以下の条件が必要です:

  • バックアップ対象のデータベースがサーバー上に存在すること
  • 使用するユーザーアカウントがデータベースにアクセスできる権限を持っていること

バックアップの基本的なコマンド構文は以下の通りです:

# mysqldump -u [ユーザー名] -p [パスワード] [データベース名] > [バックアップファイル.sql]

説明:
[ユーザー名]:MySQLにアクセスするためのユーザー名
[パスワード]:そのユーザーのパスワード
[データベース名]:バックアップ対象のデータベース名
[バックアップファイル.sql]:バックアップとして保存するファイル名

1. 単一のデータベースをバックアップする

以下のようにコマンドを実行します。

# mysqldump -u root -p databaseName > databaseFile.sql

この場合、databaseNameというデータベースがバックアップ対象で、出力されるファイルはdatabaseFile.sqlです。

2. 複数のデータベースをまとめてバックアップする

複数のデータベースを1つのファイルにバックアップする場合は、--databasesオプションを使用します。

# mysqldump -u root -p --databases databaseName1 databaseName2 > databaseFile.sql

上記の例では、databaseName1とdatabaseName2の2つのデータベースを1つのファイルdatabaseFile.sqlにバックアップしています。

3. すべてのデータベースをバックアップする

すべてのデータベースをバックアップするには、--all-databasesオプションを使用します。

# mysqldump -u root -p --all-databases > allDatabasesFile.sql

4. テーブル構造だけをバックアップする

データは不要で、テーブル構造だけをバックアップしたい場合は、--no-dataオプションを使用します。

# mysqldump -u root -p --no-data databaseName > databaseNameStructureFile.sql

5. データだけをバックアップする

テーブル構造は不要で、データだけをバックアップするには、--no-create-dbと--no-create-infoオプションを使用します。

# mysqldump -u root -p --no-create-db --no-create-info databaseName > databaseFile.sql

6. 特定のテーブルをバックアップする

特定のテーブルだけをバックアップする場合は、以下のように指定します。

# mysqldump -u root -p databaseName tableName > TableFile.sql

7. 複数のテーブルをバックアップする

複数のテーブルをバックアップするには、テーブル名をスペースで区切ります。

# mysqldump -u root -p databaseName tableName1 tableName2 > TablesFile.sql

8. リモートサーバーのデータベースをバックアップする

リモートサーバーのデータベースをバックアップする場合は、サーバーのIPアドレスを指定します。

# mysqldump -h 192.168.1.100 -u root -p databaseName tableName > TableFile.sql

リモートサーバーのパスワードを入力すると、バックアップが実行されます。

II. MySQLデータベースをリストアする方法

バックアップファイル(.sql)をリストアするには、mysqlまたはmysqlimportコマンドを使用します。
基本構文:

# mysql -u [ユーザー名] -p[パスワード] [データベース名] < [バックアップファイル.sql]

例:

  • データベースが空でない場合
    このコマンドで、databaseName.sqlファイルをdatabaseNameデータベースにリストアします。
# mysql -u root -p databaseName < databaseName.sql
  • データベースが既に存在しており、空でない場合はmysqlimportを使用します。
# mysqlimport -u root -p databaseName < databaseName.sql

まとめ

この記事では、LinuxでMySQLデータベースをバックアップおよびリストアする方法を解説しました。mysqldumpやmysqlimportを使いこなせば、データベース管理がぐっと楽になります!

困った時はこの記事を参考にしてみてくださいね。😉

おまけ

本番環境のデータをマスクしてステージング環境に自動同期する仕組みをやりたい時は、
こちらの記事を参考してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?