MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLデータベースを別のマシンにコピー・移行する方法【mysqldump活用ガイド】

異なるアーキテクチャ間でデータベースを移行する必要がある場合、「mysqldump」コマンドを使ってSQL文を含むファイルを作成するのが一般的な方法です。このファイルはマシン間で転送でき、転送先では「mysql」クライアントへの入力として利用できます。

2台のマシン間でデータベースを移動する

データベースが存在するマシン上で以下のコマンドを実行することで、別のマシンへデータベースを移動できます。

mysqladmin -h 'other_hostname' create db_name
mysqldump db_name | mysql -h 'other_hostname' db_name

1行目のコマンドで転送先ホストに新しいデータベースを作成し、2行目のコマンドで元のデータベースをダンプしながら直接転送先へ流し込みます。パイプ(|)を使うことで、中間ファイルを作成せずに一括処理できるのがポイントです。

低速なネットワーク経由でリモートマシンからコピーする

ネットワーク速度が遅い環境でリモートマシンからデータベースをコピーする場合は、圧縮オプションを付けて通信量を削減すると効率的です。以下のコマンドを実行します。

mysqladmin create db_name
mysqldump -h 'other_hostname' --compress db_name | mysql db_name

--compress オプションにより、クライアントとサーバー間で送受信されるデータが圧縮されるため、帯域幅の狭いネットワークでも転送時間を大幅に短縮できます。

ダンプファイルを使った手順

ダンプをファイルとして保存し、後からターゲットマシンへ転送して読み込む方法もあります。ここでは、ソースマシン上でデータベースを圧縮ファイルにダンプする例を紹介します。

mysqldump --quick db_name | gzip > db_name.gz

--quick オプションを付けると、テーブル全体をメモリに読み込まずに行単位でダンプするため、大きなテーブルでもメモリ不足になりません。生成された圧縮ファイルは、scpやFTPなど任意の手段でターゲットマシンへ転送してください。

その後、ターゲットマシン上で以下のコマンドを実行して、ファイルをデータベースへ読み込みます。

mysqladmin create db_name
gunzip < db_name.gz | mysql db_name

gunzipで展開しながらmysqlクライアントに渡すことで、解凍用の一時ファイルを作らずに済みます。

mysqldumpとmysqlimportを組み合わせた高速な転送

大量のデータを含むデータベースの場合、「mysqldump」と「mysqlimport」を組み合わせることで処理速度を向上させられます。「DUMPDIR」は、mysqldumpの出力を保存するディレクトリのフルパス名を表します。

まず、出力ファイルとデータベースの内容を格納するためのディレクトリを作成します。

mkdir DUMPDIR
mysqldump --tab=DUMPDIR db_name

--tab オプションを指定すると、テーブルごとにSQL定義ファイル(.sql)とタブ区切りのデータファイル(.txt)が生成されます。

次に、DUMPDIR内のファイルをターゲットマシンの対応するディレクトリへ転送します。そして、以下のコマンドでMySQLへファイルを読み込みます。

mysqladmin create db_name   # データベースを作成
cat DUMPDIR/*.sql | mysql db_name   # テーブルを作成
mysqlimport db_name DUMPDIR/*.txt   # テーブルへデータを読み込む

この方法では、テーブル構造の作成とデータの投入が分離されるため、mysqlimportがバルク挿入による高速なロードを行えます。特に数GB以上の大規模なデータベースを移行する際に有効な手法です。

まとめ

MySQLデータベースの移行には、用途に応じて複数の方法があります。小規模なデータベースならmysqldumpの出力をそのままパイプで流し込むのが簡単で、低速ネットワークでは--compressやgzipによる圧縮が効果的です。大規模データベースでは--tabオプションとmysqlimportの組み合わせが高速です。それぞれの特徴を理解して、環境に合った最適な方法を選択しましょう。

  1. オブジェクト指向データベースとは?基本概念と特徴をわかりやすく解説

    オブジェクト指向データベースとはオブジェクト指向データベース(OODB:Object-Oriented Database)とは、オブジェクト指向プログラミングの考え方とリレーショナルデータベースの技術を組み合わせたデータベースです。C++やJavaなどのオブジェクト指向言語で作成されたさまざまなデータは、従来のリレーショナルデータベースにも保存できますが、こうしたオブジェクト形式のデータを管理するには、オブジェクト指向データベースの方がはるかに適しています。オブジェクト中心のデータ管理という考え方オブジェクト指向データベースの最大の特徴は、「処理(アクション)」ではなく「オブジェクト」を軸にデ

  2. MySQLエラー #1046「No database selected(データベースが選択されていません)」の原因と解決方法

    MySQLエラー #1046 とは MySQLでテーブルを作成する際に、使用するデータベースを選択せずに作業を始めると、「ERROR 1046 (3D000): No database selected」というエラーが発生します。この記事では、エラーが起こる原因と、具体的な解決手順をわかりやすく解説します。 エラーが発生するケース まず、以下のようにMySQLを起動します。 正しいパスワードを入力すると、上記のようなコンソール画面が開きます。この状態で、データベースを何も選択せずにテーブルを作成してみましょう。 mysql> CREATE table TblUni -> ( -