2014-05-08 105 views
0

我有2臺具有MySQL master-master複製集的服務器。
當我從任何服務器上的PHP腳本運行INSERT/UPDATE查詢時,它在另一臺服務器上覆製得很好。從bash腳本運行查詢時,MySQL複製不起作用

無論如何,當我從bash腳本運行UPDATE時,不會發生這種情況:字段的值只會在運行bash腳本的服務器上更新,並且不會在另一個腳本上覆制。

有關爲什麼複製無法通過BASH腳本工作的任何想法?

這是MySQL更新僅更新本地記錄的樣子:
mysql -B -N -u $USER -p$PASSWORD -h $HOST -e "UPDATE $DATABASE.$TABLE SET Status='-1' WHERE Id=$ID"

+0

複製的主要目的是將主設置爲讀/寫和從設備。如果你更新奴隸,那麼它是錯的。 –

+0

@AbhikChakraborty對不起,我的意思是主 - 主複製。 –

+0

當你從bash腳本中更新/插入時,你是否使用了來自同一主機的同一個mysql用戶。還有,你有沒有嘗試通過shell控制檯而不是瀏覽器來執行.php腳本。 – kpopovbg

回答

1

我想你有REPLICATE_DO_DB集。用SHOW SLAVE STATUS檢查。這是一個有點棘手:如果您有它僅複製foo數據庫和你做這樣的事情:

use bar; -- or even without it 
UPDATE foo.table SET Status='-1' WHERE Id=69; 

比它會被複制。確保你想要複製的數據庫爲use

+0

這解決了這個問題,我在'UPDATE'前面加了'USE $ DATABASE',它按照預期工作。謝謝! –