前提条件
- 移したいRDSは起動済みである
- OSはAmazonLinux2を利用
//EC2からRDSにルートユーザでログイン
//adminはRDS作成時デフォルトのルートユーザ名
$ mysql -u admin -p -h RDSのエンドポイント
//mysqlログイン中
//移行するDBと同じ名前のDBを作成
CREATE DATABASE データベース名;
//DB用のユーザ作成&権限付与
CREATE USER 'ユーザ名'@'%' IDENTIFIIED BY 'パスワード';
GRANT SELECT,UPDATE,DELETE, INSERT, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE, CREATE TEMPORARY TABLES, TRIGGER, CREATE VIEW, SHOW VIEW, EVENT ON データベース名.* TO 'ユーザ名'@'%';
//いったんログアウトする(exitとかctrl+dで抜けたはず…)
//既存のDBからdump.sqlを作成
//この時に既存DBのユーザ名とパスワードが必要。今回はルートユーザで行った。
$ mysqldump -u root -p データベース名 > dump.sql
//RDSにdump.sqlをインポート
//この時にRDS側のユーザ名とパスワードが必要。RDSのルートユーザで実行
$ mysql -h RDSのエンドポイント -P 3306 -u admin -p データベース名 < dump.sql
//最初に作成したDB用ユーザでRDSにログインし、移行できたか確認
//OKならば、旧DBサーバーは停止するなど必要な操作を行う
$ mysql -u ユーザ名 -p -h RDSのエンドポイント
SHOW DATABESES;
USE データベース名;
SELECT * FROM データベース名;
感想
- 思ってたより簡単に移行できた。
- あっちこっちログインしたりユーザ作ったりして、今何のユーザを使っているのか、どこにログインしているのか混乱した。
参考