LoginSignup
0
0

More than 3 years have passed since last update.

オンプレDBサーバ(MySQL)のデータをRDSに移行する方法

Last updated at Posted at 2020-11-14

What's this?

サーバのAWS移設で、DBのデータをRDSに持っていった際の備忘です。
気をつけるべきポイントは以下の通りです。

  • RDSではrootを使用できない
  • 多くの場合直接RDSに接続でいないため、対向サーバ(今回の場合EC2)を経由させる必要がある

注意

取得したダンプファイルはmy_databases_yyyyMMdd.sqlで表しています。
Mysqlは5.7系です

手順

①オンプレの方のフルダンプを取得する

> mysqldump --password=■■■ --skip-add-drop-table --single-transaction --databases 【ダンプ取得対象のDB】 > my_databases_yyyyMMdd.sql

新規の(まっさらな)RDSに反映させる前提なので--skip-add-drop-tableをつけてDROP TABLEステートメントを省略しています。
またデータの整合性を保つために--single-transactionを付与しております。

②sqlデータを置き替える

RDSではrootは取れないので、代わりにadminに修正します。

> sed -i -e 's/DEFINER=`root`@`localhost`/DEFINER=`admin`@`%`/g' my_databases_yyyyMMdd.sql

③sqlデータをzip化する

> zip -e --password=【パスワード】 my_databases_yyyyMMdd.zip my_databases_yyyyMMdd.sql

④zipデータをローカルに取得する

WinSCPなりなんだりでよしなに取得してください

⑤データをEC2サーバに上げる

今回の場合、ローカルからS3にアップし、EC2からS3にアップしたファイルを引き上げてます

> aws s3 cp s3://tmp/my_databases_yyyyMMdd.zip .

⑥zipデータを解凍する

# unzip -P 【パスワード】 my_databases_yyyyMMdd.zip

⑦RDSにデータを突っ込む

# mysql -h 【RDSエンドポイント】 -u admin -p < my_databases_yyyyMMdd.sql
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