내가 MySQL의 프록시 0.8.xMySQL의 프록시 R/W 복제 및 임시 테이블
그것은 임시 테이블을 제외하고 잘 작동으로 MySQL5.1 및 R/W 분할에 마스터/슬레이브 복제를하고있는 중이 야. MySQL은 임시 테이블이 존재하지 않는다는 오류를 발생시킵니다.
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
:
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 메시지입니다 :
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'
이 슬레이브에 대한 쿼리 로그는 다음과 같습니다
이
는 마스터 서버에 대한 쿼리 로그입니다내가 직접 마스터를 쿼리하면 (대신 php db connection을 mysql-proxy로 바꾸십시오), 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 문을 삽입 전송 : // 편집 다음날
는 나는이 작동하지 않는 이유를 알고 믿는 다음 단계에서 선택은 슬레이브로 전송됩니다. Unfortunatelly MySQL에서 tmp 테이블은 그것을 발행 한 연결에만 유효하므로 복제로 생성 된 tmp 테이블은 슬레이브에서 mysql 프록시가 발행 한 두 번째 연결에 유효하지 않습니다.
이제 응용 프로그램을 변경하고 tmp 테이블을 마스터에 직접 연결하여 문제를 해결하려고합니다.
더 나은 해결책이 있다고 생각되면 알려 주시기 바랍니다.