LOAD DATA FROM MASTER
This feature is deprecated and should be avoided. It is subject to removal in a future version of MySQL.
LOAD DATA FROM MASTER
と
LOAD TABLE FROM MASTER
の現在のインプリメンテーションがとても制限されているので、これらのステートメントは
MySQL のバージョン 4.1
以降では廃止予定です。今後のバージョンでは、さらに進歩した技術
(「online backup」 と呼ばれるもの)
を紹介する予定です。その技術は、さらに多くのストレージエンジンと機能する更なる利点を持ちます。
MySQL 5.1 以前のバージョンで
LOAD DATA FROM MASTER
か
LOAD TABLE FROM MASTER
を利用するために推奨する代替方法は、mysqldump
か mysqlhotcopy
を利用することです。後者は Perl と 2 つの Perl
モジュール (DBI
と
DBD:mysql
)
を必要とし、MyISAM
と ARCHIVE
テーブルにだけ機能します。mysqldump
を利用すると、マスタ上に SQL
ダンプを作成でき、それらをスレーブ上の
mysql
クライアントにパイプ (またはコピー)
できます。これはすべてのストレージエンジンに機能するという利点を持ちますが、SELECT
を利用して機能するためスピードが大変遅いです。
このステートメントは、マスタのスナップショットを撮り、それをスレーブにコピーします。それは、スレーブが正しい位置から複製を始めるように
MASTER_LOG_FILE
と
MASTER_LOG_POS
の値を更新します。--replicate-*-do-*
と --replicate-*-ignore-*
オプションを利用して指定されたテーブルとデータベースの除外規則は支持されています。--replicate-rewrite-db
は、ユーザーがこのオプションを使用して、マスターからテーブルをロードするときにスレーブで混乱が生じる
--replicate-rewrite-db="db1->db3"
や
--replicate-rewrite-db="db2->db3"
などの一意でないマッピングを設定できるため、考慮されません。
このステートメントは次の条件に従い利用できます:
これは MyISAM
テーブルにしか機能しません。非
MyISAM
テーブルをロードしようとすると、次のエラーが起こります。
ERROR 1189 (08S01): Net error reading from master
それはスナップショットを撮っている間にグローバル読み取りロックを取得し、それはロード作業中のマスタ上での更新を妨げます。
もし大きいテーブルをロードしていたら、マスタとスレーブの両方で
net_read_timeout
と
net_write_timeout
の値を増やす必要があるでしょう。Server System Variables
を参照してください。
LOAD DATA FROM MASTER
は
mysql
データベースから何もコピー
しない
事に注意してください。これは、マスタとスレーブ上で異なるユーザーと権限を持つことを簡単にします。
LOAD DATA FROM MASTER
を利用するためには、マスタに接続するために利用されるレプリケーションアカウントはマスタ上に
RELOAD
と
SUPER
権限を持ち、ロードしたいすべてのマスタテーブルに
SELECT
権限を持つ必要があります。ユーザーが
SELECT
権限を持たないすべてのマスタテーブルは
LOAD DATA FROM MASTER
に無視されます。これは、マスタがユーザーからそれらを隠すために起こります。LOAD
DATA FROM MASTER
は、ロードするデータベースを知るために
SHOW DATABASES
をコールしますが、SHOW
DATABASES
はユーザーが何かしらの権限を持つデータベースだけを返します。詳しくは項8.5.5.15. 「SHOW DATABASES
構文」を参照してください。スレーブサイドでは、LOAD
DATA FROM MASTER
を発行するユーザーはデータベースをドロップし作成する権限と、コピーされるテーブルを持つ必要があります。