我有一个名为的本地 mysql 数据库intranet_production
,在远程服务器(我有该服务器和 mysql 的 root 访问权限)上有一个名为“extranet”的数据库。
远程extranet
数据库中有几十个表。我只需要其中大约 5 个,因此导入整个数据库似乎有些过分。
我正在寻找导入数据库的最佳方法,一旦导入成功,我将把它设置为每 24 小时一次的 cron 作业。目前,远程数据库只能覆盖其本地数据,因为我们没有向导入的表中写入任何内容。
因此,假设本地数据库称为intranet_production
,远程数据库称为,那么导入称为 的表的extranet
最佳方法是什么?table1
table2
table3
我遇到了以下方法,但我认为必须在远程服务器上运行才能导出表。我需要在本地服务器上运行 cron 作业。
mysqldump db-name foo | ssh [email protected] mysql bar
任何指点都将不胜感激!
答案1
您可以将 mysqldump 与远程主机一起使用:
mysqldump -h database.server.com -u username -pPassword dbName tblName > local.file.sql
除了重定向到文件之外,您还可以通过管道将其传输到 mysql:
mysqldump <args> | mysql -u uname -pPwd localDbName
答案2
您可以编写一个执行以下操作的小脚本:
ssh [email protected] "mysqldump db table1 table2 > /tmp/your_dump.sql"
rsync [email protected]:/tmp/your_dump.sql /tmp/
mysql db < /tmp/your_dump.sql
您可以选择在传输过程中压缩文件以适应慢速链接。