2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[MySQL]mysqldumpを利用して別の環境にデータを移行する

Last updated at Posted at 2020-08-15

任意の環境のデータを別の環境に移行してテストしたい、という場面は開発をしているとよく起こるかと思います。

本記事では、このような際にmysqldumpを利用して別の環境へデータを移行する方法を記載します。

mysqldumpとは

MySQLのバックアップを作成するコマンドです。

mysqldumpで取得したファイル中にはテーブルのDROP文・CREATE文・INSERT文が入っていて、このバックアップを利用することで元のテーブル・データの状態に復元できることが分かります。

イメージ

mysqldumpで取得したバックアップを別のサーバーに利用することで、データ移行を実現します。

image.png

データ取得

上記イメージの①②に当たる部分です。

mysqldump --single-transaction -h(取得元IP) -u(取得元ユーザー) -p(取得元パスワード) --port=(取得元ポート) (DB名) (テーブル名) > backup.sql

Tips:

  • 指定したDB内の全てのデータを取得する際には、テーブル名を省略します。
  • テーブル名は複数指定できます。
  • --whereを利用して、テーブルに対してWHERE句を指定できます。 例:--where="user_id = 'abc'"

データ取込

上記イメージの③に当たる部分です。

上記で作成したbackup.sqlを利用して、mysqlコマンドでデータ取込を行います。

mysql -h(取込先IP) -u(取込先ユーザー) -p(取込先パスワード) --port=(取込先ポート) (DB名) < backup.sql

一部のデータのみを取り込みたい場合

すでにあるデータを削除せずに追加で取り込みたい場合は、データ取得時に-no-create-infoを利用してDROP・CREATE文を発行しないようにします。

mysqldump --single-transaction --no-create-info -h(取得元IP) -u(取得元ユーザー) -p(取得元パスワード) --port=(取得元ポート) (DB名) (テーブル名) > backup.sql

但し、プライマリキーが衝突する場合等にはエラーが発生し、異常終了します。この際、データは全てロールバックされるので一部のデータだけが取り込まれるということはありません。

参考

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?