マスターで LOAD DATA LOCAL INFILE を実行すると、読み取りレプリカが次のように確実に強制終了されます。
Error 'Access denied for user ''@'' (using password: NO)' on query. Default database: 'testdb'. Query: 'LOAD DATA INFILE '/rdsdbdata/tmp/SQL_LOAD-5ce65f0d-1a6a-11e3-af1b-12313c014074-352397698-1549.data' IGNORE INTO TABLE `test` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`name`, `age`)'
この状況を再現するために、単純なマスターを用意し、test というテーブルを作成しました。
CREATE TABLE `テスト` ( `name` varchar(25) NOT NULL, `age` int(11) DEFAULT NULL, 主キー (`名前`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
読み取りレプリカに正常に複製されました。次に、入力ファイルをセットアップします。
# 猫のテスト.csv スティーブ、24 ボブ、34 コートニー、12 ベン、28 エイダン、15
次に、それをインポートしました(警告を無視します。セパレーターを正しく取得できませんでしたが、データが入りました):
mysqlimport --local testdb test.csv
testdb.test: Records: 5 Deleted: 0 Skipped: 0 Warnings: 5
リードレプリカを強制終了するのに必要なのはそれだけです。RDS インスタンスを作成するときに作成したユーザーとして mysql に接続しているので、すべての権限が必要です。ただし、いずれにしても、リードレプリカには独自のレプリケーション ユーザーがあります。読み取り複製を読み取り専用ではなくしようとしましたが、うまくいかなかったようです。
mysql> ステータス; -------------- mysql Ver 14.14 Distrib 5.5.27、5.2 を使用する FreeBSD9.0 (amd64) 用 接続 ID: 13481 現在のデータベース: testdb 現在のユーザー: testuser@ip-10-50-99-59.eu-west-1.compute.internal SSL: 使用されていません 現在のポケットベル: もっと 出力ファイルの使用: '' 区切り文字の使用: ; サーバーのバージョン: 5.6.13-log MySQL Community Server (GPL) プロトコル バージョン: 10 接続: TCP/IP 経由の saturn.xxxxxxxxxxx.eu-west-1.rds.amazonaws.com サーバー文字セット: latin1 データベース文字セット: latin1 クライアント文字セット: latin1 接続文字セット: latin1 TCP ポート: 3306 稼働時間: 8 時間 52 分 23 秒 スレッド: 3 質問: 775195 遅いクエリ: 0 開く: 51017 テーブルをフラッシュ: 1 テーブルを開く: 2000 1 秒あたりの平均クエリ数: 24.268
誰かが助けてくれれば幸いです
ありがとう
スティーブ