Bug #36962 | mysql-proxy ERROR 1105 (07000): can't change DB to on slave rw-splitting.lua | ||
---|---|---|---|
Submitted: | 26 May 2008 12:58 | Modified: | 3 Jul 2008 12:03 |
Reporter: | jabincn jabincn | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Proxy | Severity: | S3 (Non-critical) |
Version: | 0.6 0.7 | OS: | Linux |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | Contribution |
[26 May 2008 12:58]
jabincn jabincn
[2 Jun 2008 11:12]
Sveta Smirnova
Thank you for the report. Please provide output of show variables like 'port';
[3 Jun 2008 0:31]
jabincn jabincn
thank you for you replay. this is debug log: server default db: cjhjd client default db: syncronizing server default db: cjhjd client default db: syncronizing server default db: cjhjd client default db: syncronizing server default db: client default db: cjhjd syncronizing
[3 Jun 2008 0:37]
jabincn jabincn
mysql-proxy run: LUA_PATH="/usr/local/mysql-proxy/share/mysql-proxy/?.lua" \ /usr/local/mysql-proxy/sbin/mysql-proxy \ --proxy-backend-addresses=192.168.0.8:3306 \ --proxy-read-only-backend-addresses=192.168.0.9:3306 \ --proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua \ --pid-file=/tmp/mysql-proxy.pid \ --log-level=debug \ --log-use-syslog \ --log-file=/tmp/mysql-proxy.log \ --plugins=admin \ --plugins=proxy \ --plugin-dir=/usr/local/mysql-proxy/lib/mysql-proxy/ \ --daemon [root@localhost ~]# mysql -h 192.168.0.8 -P 4040 -u devdbuser -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 28 Server version: 5.1.24-rc-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show variables like 'port'; ERROR 1105 (07000): can't change DB to on slave 192.168.0.8:3306 mysql> use mysql; Database changed mysql> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.00 sec) mysql>
[18 Jun 2008 8:43]
Christian Meisinger
Adding 'c.default_db ~= ""' for default DB check seems to solve the problem: -- if client and server db don't match, adjust the server-side -- -- skip it if we send a INIT_DB anyway if cmd.type ~= proxy.COM_INIT_DB and c.default_db and c.default_db ~= "" and c.default_db ~= s.default_db then print(" server default db: '" .. s.default_db .. "'") print(" client default db: '" .. c.default_db .. "'") print(" syncronizing") proxy.queries:prepend(2, string.char(proxy.COM_INIT_DB) .. c.default_db) end
[24 Jun 2008 8:14]
jabincn jabincn
it's ok. thank you very much!
[3 Jul 2008 12:03]
Sveta Smirnova
Thank you for the feedback. Verified as described with version 0.6.1. To repeat: 1. Start Proxy as ./src/mysql-proxy --proxy-backend-addresses=127.0.0.1:3351 --proxy-read-only-backend-addresses=127.0.0.1:3306 --proxy-lua-script=./lib/rw-splitting.lua 2. Connect to MySQL server via Proxy. 3. Issue USE db_name command. 4. Disconnect 5. Connect again 6. Issue SHOW DATABASES query. From my terminal: apple@apple ~/bzr/mysql-6.0 $mysql -h127.0.0.1 -P4040 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2305 Server version: 5.1.28-debug Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> \q Bye apple@apple ~/bzr/mysql-6.0 $mysql -h127.0.0.1 -P4040 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2306 Server version: 5.1.28-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; ERROR 1105 (07000): can't change DB to on slave 127.0.0.1:3351 mysql>
[11 Dec 2008 13:36]
Sveta Smirnova
Bug #41392 was marked as duplicate of this one.
[9 Jan 2009 19:14]
boyko yordanov
Seems that proxy selects a connection from the pool which is authed for another username.. check backend logs for "access denied" entries.. Proxy tries to sync the client/server databases but the selected connection username has no rights on the database it has to 'USE'.