使用程序無法實(shí)現(xiàn)這種功能,因?yàn)闊o法保證事務(wù)的一致性,比如:A數(shù)據(jù)庫中的a表復(fù)制到B數(shù)據(jù)庫中的a表的過程中,A數(shù)據(jù)庫中的a表的一條記錄被刪除,這樣就無法實(shí)現(xiàn)數(shù)據(jù)的一致性!正確的做法是使用MySQL復(fù)制的功能!很簡(jiǎn)單,只需要幾步配置即可!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供鼓樓網(wǎng)站建設(shè)、鼓樓做網(wǎng)站、鼓樓網(wǎng)站設(shè)計(jì)、鼓樓網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、鼓樓企業(yè)網(wǎng)站模板建站服務(wù),十載鼓樓做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
你是希望用PHP代碼實(shí)現(xiàn)同時(shí)寫兩個(gè)數(shù)據(jù)庫還是希望只是兩個(gè)數(shù)據(jù)庫的數(shù)據(jù)一致?如果僅是希望數(shù)據(jù)庫數(shù)據(jù)數(shù)據(jù)一至,oracle自帶的機(jī)制就能實(shí)現(xiàn)。如果是想自己編程實(shí)現(xiàn)同時(shí)兩個(gè)數(shù)據(jù)庫的操作,也方便,PHP在鏈接不同數(shù)據(jù)庫實(shí)例時(shí),會(huì)得到不同的鏈接句柄,在后面具體操作時(shí),同時(shí)對(duì)這兩個(gè)鏈接句柄操作就行了,但這樣存在數(shù)據(jù)不完全一致的風(fēng)險(xiǎn),必須校驗(yàn),這樣又拖慢了速度。
演示代碼如下:
echo "br /b演示多數(shù)據(jù)庫克隆操作(多數(shù)據(jù)庫同時(shí)寫操作)/bbr /";
$this-loadModel('student.php',1);
//如果兩個(gè)不同數(shù)據(jù)庫服務(wù)器的表對(duì)象結(jié)構(gòu)完全一致,則不必重復(fù)載入表對(duì)象定義文件,只需要在實(shí)例化時(shí)指定服務(wù)器id就行了。
//$this-loadModel('student.php',2);
$this-loadModel('student2.php',2);
$student1=new Tstudent(1);
$student2=new Tstudent2(2);
$student3=new Tstudent(2);
$student2-cloneFrom($student1);
$student3-cloneFrom($student1);
$student1-uuid='999';
$student1-id='999';
$student1-name='測(cè)試克隆人';
//如果進(jìn)行了主對(duì)象的克隆操作,則在完成主對(duì)象數(shù)據(jù)持久化后,所有的子對(duì)象將會(huì)同步插入數(shù)據(jù)。
$student1-insert();
MySQL數(shù)據(jù)庫的主從同步是通過解析Master庫中的binary-log來進(jìn)行同步數(shù)據(jù)到從庫的。然而我們使用PHP來同步數(shù)據(jù)的時(shí)候,那么只能從master庫分批查詢數(shù)據(jù),然后插入到南寧的slave庫來了。
基于數(shù)據(jù)庫 Log 日志分析可以實(shí)現(xiàn),網(wǎng)上搜一下 CDC 數(shù)據(jù)同步。。
不過你也可以嘗試下 cloud.tapdata.net , 一個(gè)在線的數(shù)據(jù)同步工具,支持一次性全量同步,也支持實(shí)時(shí)的增量同步。