怎麼使 Mysql 資料同步

2021-03-31 08:56:29 字數 2481 閱讀 5964

先假設有主機 a 和 b ( linux 系統),主機 a 的 ip 分別是 1.2.3.4 (當然,也可以是動態的),主機 b 的 ip 是 5.6.7.8 。兩個主機都裝上了 php+mysql ,現在操作的是主機 a 上的資料,如果另外乙個主機 b 想跟 a 的資料進行同步,應該怎麼做呢?

ok,我們現在就動手。

首先,如果要想兩個主機間的資料同步,一種方法就是主機 a 往主機 b 送資料,另外一種主法就是主機 b 到主機 a 上拿資料,因為 a 的 ip 是動態的(假設),所以我們就得從主機 a 往主機 b 送資料。

在主機 b 上建立乙個 mysql 賬戶。

# grant all on test.* to user@% identified by "password"; //建立使用者 user,可以從任何機器訪問到主機 b 上的 test 資料庫。

如果這裡顯示錯誤,先把 % 改為乙個 ip ,然後再利用 phpmyadmin 把 ip 改為 % ,測試無誤後就可以寫 php 程式。

<?

$link=mysql_pconnect("localhost","user","password");

mysql_pconnect("localhost","user","password"); //連線本機(主機a)的資料庫

mysql_select_db("test"); //選擇資料庫test

$re=mysql_query("select * from table order by id desc");

$num=mysql_numrows($re);

if (!empty($num))

mysql_close($link); //關閉與本機資料庫的連線

$link=mysql_pconnect("5.6.7.8","test","test");

mysql_pconnect("5.6.7.8","test","test"); //連線主機b的資料庫

mysql_select_db("test"); //選擇資料庫test,此資料庫應該與主機a上test資料庫的結構一樣。

$re=mysql_query("select * from table order by id desc");

$num=mysql_numrows($re);

if (!empty($num))

if ($id>$remote_id) 的資料不同

mysql_close($link); //關閉主機b的資料庫連線

$link=mysql_pconnect("localhost","user","password");

mysql_pconnect("localhost","user","password");

mysql_select_db("test");

if (empty($result_id)) $result_id=0;

if (empty($remote_id)) $remote_id=0; //如果主機b中的table的最大id為空(裡面沒有資料),那麼就等0

$re=mysql_query("select * from table limit $remote_id,$result_id"); //取出主機a中table表與主機b中table表裡不同的資料

$num=mysql_numrows($re);

if (!empty($num))

} mysql_close($link); //關閉主機a的資料庫連線

$link=mysql_pconnect("5.6.7.8","user","password");

mysql_pconnect("5.6.7.8","user","pasword");

mysql_select_db("test");

for ($j=0;$j<$i;$j++)

mysql_close($link); //關閉主機b的資料庫連線

?>

這時就初步實現了 a 主機和 b 主機資料的同步,但現在還需要人手動每次去啟用這個程式,有沒有辦法把它作為乙個指令碼一樣的,放在 crontab 裡面指定時間自動執行呢?

在安裝 php 時會自動生乙個叫 php 的可執行檔案,一般在/你安裝的 php 目錄 /bin 下面,不過較底的版本好像沒有,如果沒有這個檔案,你就得公升級你的 php 。

#php -q test.php

php 原本是應用在網頁應用的﹐因此它會送出 html 的 header﹐但是在此我們是要將 php 用作 shell script﹐"-q" 就是表示不要送出 header 的意思.

最後編輯 /etc/crontab 裡的檔案,加上下面這一句。

0 0 * * * root /home/httpd/html/test //每天晚上零點執/home/httpd/html/test檔案(具體使用方法請檢視cron的相關資料)

ok,到這裡差不多就已完成 mysql 資料的同步了,如果各位還有興趣的話,可以想乙個連編輯、刪除都能同步的更好的辦法。

mysql同步資料 MySQL同步資料

mysql dump工具用於匯出現有資料,匯出結果為sql檔案 目前dump工具支援整庫dump以及單錶dump。下面為單錶dump操作過程 1 選擇匯出目標目錄 確保該目錄有足夠的儲存空間。mkdir opt bas backup 2 使用mysqldump命令匯出表資料 mysqldump u ...

mysql慢查詢怎麼用 MYSQL 慢查詢使用方法

分析mysql語句查詢效能的問題時候,可以在mysql記錄中查詢超過指定時間的語句,我們將超過指定時間的sql語句查詢稱為 慢查詢 mysql自帶的慢查詢分析工具mysqldumpslow可對慢查詢日誌進行分析 主要功能是,統計sql的執行資訊,其中包括 出現次數 count 執行最長時間 time...

mysql的資料同步

找到所在的伺服器直接輸入一下命令 mysqldump uroot p test students scores data student scores.sql 執行後輸入密碼即可 2.同步資料 這裡使用的是source命令 登入要同步的資料庫使用命令列登入,並切換到要同步的庫中命令如下 mysql ...