我做的主/從複製在MySQL5.1和R/W分裂與MySQL代理0.8.4MySQL代理R/W複製和臨時表
它工作正常,除非使用臨時表。 MySQL拋出一個錯誤,臨時表不存在。
這是查詢日誌主服務器:
CREATE TEMPORARY TABLE IF NOT EXISTS sh (ad_id MEDIUMINT(8) UNSIGNED NOT NULL, score float , INDEX (`ad_id`), INDEX (`score`)) ENGINE = MEMORY
INSERT INTO sh
SELECT cl.ID, 1
FROM classifieds cl
WHERE cl.advertiser_id = '40179'
這是查詢日誌中從站:
CREATE TEMPORARY TABLE IF NOT EXISTS sh (ad_id MEDIUMINT(8) UNSIGNED NOT NULL, score float , INDEX (`ad_id`), INDEX (`score`)) ENGINE = MEMORY
這是MySQL errror消息:
Occured during executing INSERT INTO sh SELECT cl.ID, 1 FROM classifieds cl WHERE cl.advertiser_id = '40179' statement
Error: 1146 Table 'dbname.sh' doesn't exist
如果我直接查詢主(PHP變化DB連接掌握,而不是到mysql代理),它的工作原理沒有PROBL EMS。
我用這MySQL代理配置:
[mysql-proxy]
daemon = true
pid-file = /home/mysqladm/mysql-proxy.pid
log-file = /home/mysqladm/mysql-proxy.log
log-level = debug
proxy-address = 192.168.0.109:3307
proxy-backend-addresses = 192.168.0.108:3306
proxy-read-only-backend-addresses = 192.168.0.109
proxy-lua-script = /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
有沒有人對如何解決這種想法?感謝您的任何幫助!
//編輯第二天
我相信我知道爲什麼這不工作:
MySQL代理髮送創建tmp和插入SELECT語句它複製命令正確地從主,那麼在下一步中選擇被髮送到從機。可惜的是在MySQL中TMP表僅適用於發放它的連接,從而通過複製創建的TMP表無效由MySQL代理奴隸發出的第二個連接。
我現在想通過改變我的應用程序和發行解決這個與TMP表直接連接到主機。
請讓我知道,如果你認爲有更好的解決方案。