如何将现有MySQL数据库导入Amazon RDS?
答案 0 :(得分:10)
我发现this page on the AWS docs解释了如何使用mysqldump并将其传输到RDS实例中。
这是他们的示例代码(在命令行/ shell / ssh中使用):
mysqldump acme | mysql --host=hostname --user=username --password acme
其中acme
是您要迁移的数据库,而hostname
/ username
是来自您的RDS实例的数据库。
您可以连接到RDS,就像它是常规的mysql服务器一样,只需确保按照this forum posting将EC2 IP添加到您的安全组。
我必须包含本地mysqldump的密码,所以我的命令看起来更像是这样的:
mysqldump --password=local_mysql_pass acme | mysql --host=hostname --user=username --password acme
FWIW,我刚刚完成移动数据库。我使用this reference for mysql commands来创建用户和授予权限。
希望这有帮助!
答案 1 :(得分:6)
导入数据的方法有两种:
mysqldump
:如果数据大小小于1GB,则可以直接使用mysqldump命令并将数据导入RDS。mysqlimport
:如果您的数据大小超过1GB或任何其他格式,您可以使用sqlimport命令将数据压缩为平面文件并上传数据。答案 2 :(得分:4)
我是SqlYog工具的忠实粉丝。它允许您连接到源和目标数据库并同步模式和/或数据。我也使用了SQLWave,但是切换到了SqlYog。我做了开关已经很久了,我记不清切换的原因了。无论如何,那是我的两分钱。我知道有些人会反对我对MySQL的Windows GUI工具的建议。我实际上非常喜欢SqlYog产品,因此我从Wine运行它(在Ubuntu上为Wine完美地工作)。 这个blog可能会有所帮助。
答案 3 :(得分:3)
GoSquared Engineering帖子的快速摘要:
mysqldump --single-transaction --master-data=2 -C -q dbname -u username -p > backup.sql
以转储当前数据mysql -u username -p -h RDS_endpoint DB_name < backup.sql
将数据导入RDS实例(这可能需要一段时间,具体取决于您的数据库大小)master-data=2
和binlogging的来源CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
backup.sql
获取差异作为SQL文件mysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
cat output.sql | mysql -h RDS_endpoint -u username -p DB_name
end_log_pos
文件末尾找到output.sql
来获取新的日志位置。output.sql
以来的差异(如第6步),并重复步骤7 + 8. end_log_pos
output.sql
FLUSH TABLES WITH READ LOCK;
以停止所有写入使用这种方法,您将花费少量时间(取决于部署应用程序所需的时间长度以及您的MySQL实例所服务的写入次数 - 可能只有一两分钟),而旧的写入被拒绝服务器,但您将获得一致的迁移,无需读取停机时间。
此处提供了完整而详细的文章,说明我们(GoSquared)如何以最短的停机时间(包括错误调试)迁移到RDS:https://engineering.gosquared.com/migrating-mysql-to-amazon-rds。
答案 4 :(得分:2)
我完全赞同@SanketDangi。
使用mysqldump
或mysqlimport
建议的方法有两种方法。
我已经看到了在云上恢复数据时会产生问题的情况。
然而,现在在云上导入应用程序变得更加容易。您尝试通过ravello将数据库服务器上传到公共云。
您可以使用ravello在Amazon上导入数据库服务器。
披露:我为ravello工作。
答案 5 :(得分:0)
AWS RDS客户数据Mysql导入指南可在此处获取:http://aws.amazon.com/articles/2933
答案 6 :(得分:0)
如果您使用终端,这对我有用:
mysqldump -u local_username -plocal_password local_db_name | mysql -h myRDS-at-amazon.rds.amazonaws.com -u rds-username -prds_password_xxxxx remote_db_name
然后我使用MYSQL WorkBench(免费下载)来检查它是否正常工作,因为命令行在按下提交后是静态的,我本可以把-v放在最后看看它的输出
注意:-p
后没有空格答案 7 :(得分:0)
最简单的例子:
import pandas as pd
result = []
for i in range(1,31):
result.append(pd.DataFrame((find_peaks(df1['R'], df1['I {}'.format(i)])), index = None))
df2 = pd.concat(result)
print df2.head()
df2.to_csv('Output.csv')
答案 8 :(得分:0)
这是我已经完成并取得成功的步骤。
mysqldump -u用户名-p数据库名--single-transaction --quick --lock-tables = false>数据库名备份-$(date +%F).sql
(大多数时候,不要忘记将用户名替换为root,而databasename->要迁移到RDS的数据库的Db名称)
完成后,从MySQL服务器登录RDS实例(确保已将安全组配置为允许从Ec2到RDS的连接)
(不要忘记用RDS实例的地址替换主机地址,并用RDS实例的用户名替换rdsusernmae,当系统提示时也输入密码)
您可以在–连接性和安全性->在AWS控制台的RDS数据库下找到该主机地址。
创建数据库数据库名称; \ q
mysql -h主机地址-u rdsusername -p数据库名
这应该将SQL文件导入RDS并将内容还原到新数据库中。