2013-01-16 88 views
2

我想用bash腳本將數據庫中的特定表中的行插入到另一個數據庫中。這兩個數據庫位於不同的服務器上。我怎樣才能做到這一點?如何使用bash腳本鏈接2個MySQL數據庫

我想是這樣的:

INSERT INTO db1.table1(ROW1,ROW2)SELECT ROW1,ROW2 FROM db2.table2;

但是數據庫在不同的服務器上。

謝謝。

+1

看來你可以從內置的功能中獲益,稱爲「複製」。 –

+0

[mysql replication](http://dev.mysql.com/doc/refman/5.0/en/replication.html)[percona toolkit](http://www.percona.com/software/percona-toolkit)有有用的複製監控東西。 – peteches

回答

1

我認爲你需要使用ssh執行遠程命令和mysldump從遠程數據庫和MySQL讓行的行插入到本地數據庫。

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

收費attenction說:

  1. 有-p和密碼之間沒有空格。
  2. -t選項避免CREATE TABLE SQL指令

使用手冊頁,瞭解mysqldump命令的詳細信息。

0

如果你想在同一臺服務器上的兩個MySQL數據庫之間進行操作,很容易。看到這個線程:

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

如果你想將數據從一個數據庫在不同的服務器上轉移,或者如果它是一個不同類型的數據庫,它是比較困難的,你可能會需要使用軟件或建立一些。 MySQL沒有Oracle提供的數據庫鏈接功能

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