如何使用bash脚本链接2个MySQL数据库

时间:2013-01-16 13:45:04

标签: mysql bash

我想使用bash脚本将数据库中特定表的行插入另一个数据库。这两个数据库位于不同的服务器上。我怎么能这样做?

我想要这样的事情:

INSERT INTO db1.table1(row1,row2)SELECT row1,row2 FROM db2.table2;

但数据库位于不同的服务器上。

谢谢。

4 个答案:

答案 0 :(得分:2)

我建议使用Percona Toolkit中的pt-archiver工具。它可以将行从一个实例复制或移动到另一个实例。它有效且渐进地完成工作。

示例:

$ pt-archiver --no-delete \
    --source h=host1,D=db1,t=table1 \
    --dest h=host2,D=db2,t=table2 \
    --columns col1,col2 \
    --where "1=1" --limit 1000 --commit-each

答案 1 :(得分:1)

我认为您需要使用ssh来执行远程命令,并使用mysldump来获取远程数据库和mysql中的行以将该行插入本地数据库。

ssh <remoteuser>@<remoteServer> mysqldump -t -u <remoteDbUser> -p<remoteDbPass> <remoteDbName> <remoteDbTable> -w<whereCondition> | mysql -u <localDbUser> -p<localDbPass> <localDbName>

注意:

  1. -p和密码之间没有空格。
  2. -t选项避免使用CREATE TABLE sql指令
  3. 使用手册页获取有关mysqldump命令的更多信息。

答案 2 :(得分:0)

如果要在同一台服务器上的两个MySQL数据库之间进行操作,这很容易。见这个主题:

http://forums.mysql.com/read.php?61,3063,4004#msg-4004

如果您想从另一台服务器上的数据库传输数据,或者它是一种不同类型的数据库,则更加困难,您可能不得不使用软件或构建一些软件。 MySQL没有Oracle拥有的数据库链接功能

答案 3 :(得分:0)