2015-12-12 149 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用户。

相关问题