2015-12-12 112 views
0

我在託管Web應用程序的EC2實例上設置了LAMP。當一家新公司在網絡應用程序上註冊時,它會爲該公司創建一個新的mysql數據庫,一個新的mysql用戶並將該用戶分配給數據庫,以便每個公司都擁有自己的單獨數據庫。Amazon RDS - 使用用戶憑據將MySql數據庫從EC2遷移到RDS

我們現在計劃遷移到RDS,我需要將所有公司數據庫與相應的mysql用戶帳戶從EC2遷移到RDS。我怎樣才能做到這一點?這甚至有可能嗎?我知道我可以通過mysqldump遷移數據庫,但是如何將數據庫的mysql用戶遷移?

+0

您可以像使用任何其他MySQL服務器一樣在RDS上創建新的MySQL用戶。嘗試查看這個問題的答案:http://serverfault.com/questions/8860/how-can-i-export-the-privileges-from-mysql-and-then-import-to-a-new-server/13050#13050 –

+0

您發佈的鏈接似乎很有幫助。我會嘗試並在此更新答案。 –

+0

以下是關於將外部Mysql實例遷移到RDS中的AWS最佳實踐的文檔。 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Migrate.MySQL.html – strongjz

回答

0

我發現這種將用戶從ec2或其他實例遷移到RDS的方法可能是最容易移動用戶帳戶的方法。然後使用pt-show-grants獲取用戶的授權。根據需要更新where子句以排除您不希望遷移的任何內容,例如可能已存在於您的AWS實例中的根用戶。

SELECT CONCAT('CREATE USER ', '`',u.User,'`', '@','`', u.Host,'`', ' IDENTIFIED BY PASSWORD ','''', u.Password,'''',';') FROM mysql.user u WHERE u.is_role = 'N' and u.plugin <> 'unix_socket' and user <> 'root'; 

使用mysqldump如下將提取所有表的SQL和分隔格式的數據,以允許並行數據庫導入在此使用的格式允許每個數據庫轉儲到自己的文件夾與SQL文件和每個表的txt文件。這是根據來自Amazon https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html的建議從EC2實例上的從服務器運行的。我們不同在我們的方法,以獲取奴隸AWS使用Percona的Xtrabackup遷移新副本設置從

mysqldump  --tab=/data/mysql/dump/rds/trash --fields-terminated-by '|-|'  --fields-enclosed-by '"'  --lines-terminated-by 0x0d0a  trash  --master-data=2  --single-transaction  --order-by-primary --routines=0 --triggers=0 --events=0 
+0

用於導出用戶的SQL很好,但不會導出每個用戶的授予,僅限於創造它。因此,每個用戶的贈款必須通過 ''' 出口給用戶@主機 ''' –

0

1)可以使所有的數據庫和進口的sqldump /在執行它們RDS實例。

您可以使用下面的命令來轉儲所有數據庫,

mysqldump --all-databases > all_databases.sql 

不然,如果你需要轉儲只有特定的數據庫,然後用

mysqldump database_name > database_name.sql 

傾倒多個數據庫使用,

mysqldump --databases database_one database_two > two_databases.sql 

然後,您可以連接到RDS實例並導入sql轉儲,

要導入一個數據庫的使用,

mysql database_name < database_name.sql 

對於來自所有數據庫的轉儲導入一個數據庫,然後用,

mysql --one-database database_name < all_databases.sql 

否則,如果您需要導入所有的數據庫,然後使用,

mysql -u root -p < alldb.sql 

2)要將現有的mysql用戶導入RDS實例,可以創建一個轉儲的MySQL數據庫使用下面的命令

> mysqldump mysql user > user.sql 

語法上述命令的用戶表:

mysqldump <database_name> <table_name> > <filename.sql> 

由於的表'的MySQL的數據庫被轉儲,則需要手動執行刷新特權使用命令,

> mysql -e ""FLUSH PRIVILEGES」 

作爲替代適當的恢復,您可以使用MySQL客戶端工具,如SQLyog它可以讓你導入的數據庫d使用GUI的mysql用戶。

相關問題