mysqlrouter doesn't send connection errors to read-write client -


i trying set innodb cluster mysqlrouter. cluster works fine, replication works, roles correctly change when 1 of nodes offline, mysqlrouter doesn't return errors clients when r/w node goes offline. according log, mysqlrouter correctly detects changes in cluster structure:

18:45:01 debug    replicaset 'default' has 3 members in metadata, 2 in status table 18:45:01 warning  member 192.168.122.12:3306 (33a131ee-7087-11e7-bbbb-5254005ea589) defined in metadata n actual replicaset 18:45:01 debug    end updating replicaset 'default' 18:45:01 info     changes detected in cluster 'devcluster' after metadata refresh 18:45:01 info     metadata cluster 'devcluster' has 1 replicasets: 18:45:01 info     'default' (3 members, single-master) 18:45:01 info         192.168.122.11:3306 / 33060 - role=ha mode=ro 18:45:01 info         192.168.122.12:3306 / 33060 - role=ha mode=n/a 18:45:01 info         192.168.122.13:3306 / 33060 - role=ha mode=rw 18:45:06 info     connected metadata server running on 192.168.122.11:3306 18:45:06 debug    updating metadata information cluster 'devcluster' 18:45:06 debug    updating replicaset status gr 'default' 18:45:06 debug    replicaset 'default' has 3 members in metadata, 2 in status table 

however, conected clients don't errors long time (about 10 minutes), unacceptable. after timeout client gets error , reconnects:

(2013, 'lost connection mysql server during query')   19:02:37 debug    [routing:devcluster_default_rw] unix socket connection 14 accepted @ 127.0.0.1 19:02:37 debug    [routing:devcluster_default_rw] source /tmp/myrouter/mysql.sock - dest [192.168.122.13]:3306 

new clients can freely connect router during timeout, old ones hang. connection type (socket or port) doesn't change situation. clients connecting via mysqldb python module , mysql client:

mysql -u root --socket /tmp/myrouter/mysql.sock -p --reconnect 

is there option decrease timeout or bug?

cluster status:

mysql-js> var c = dba.getcluster('devcluster') mysql-js> c.status() {     "clustername": "devcluster",      "defaultreplicaset": {         "name": "default",          "primary": "192.168.122.12:3306",          "status": "ok",          "statustext": "cluster online , can tolerate 1 failure.",          "topology": {             "192.168.122.11:3306": {                 "address": "192.168.122.11:3306",                  "mode": "r/o",                  "readreplicas": {},                  "role": "ha",                  "status": "online"             },              "192.168.122.12:3306": {                 "address": "192.168.122.12:3306",                  "mode": "r/w",                  "readreplicas": {},                  "role": "ha",                  "status": "online"             },              "192.168.122.13:3306": {                 "address": "192.168.122.13:3306",                  "mode": "r/o",                  "readreplicas": {},                  "role": "ha",                  "status": "online"             }         }     } } 

myqslrouter config:

[default] logging_folder=/tmp/myrouter/log runtime_folder=/tmp/myrouter/run data_folder=/tmp/myrouter/data keyring_path=/tmp/myrouter/data/keyring master_key_path=/tmp/myrouter/mysqlrouter.key  [logger] level = debug  [metadata_cache:devcluster] router_id=1 bootstrap_server_addresses=mysql://192.168.122.11:3306,mysql://192.168.122.12:3306,mysql://192.168.122.13:3306 user=mysql_router1_3bocarc7njs2 metadata_cluster=devcluster ttl=5 destination_connect_timeout = 2  [routing:devcluster_default_rw] #bind_address=0.0.0.0 #bind_port=6446 socket=/tmp/myrouter/mysql.sock destinations=metadata-cache://devcluster/default?role=primary mode=read-write protocol=classic max_connect_errors = 1  [routing:devcluster_default_ro] bind_address=0.0.0.0 bind_port=6447 socket=/tmp/myrouter/mysqlro.sock destinations=metadata-cache://devcluster/default?role=secondary mode=read-only protocol=classic  [routing:devcluster_default_x_rw] bind_address=0.0.0.0 bind_port=64460 socket=/tmp/myrouter/mysqlx.sock destinations=metadata-cache://devcluster/default?role=primary mode=read-write protocol=x  [routing:devcluster_default_x_ro] bind_address=0.0.0.0 bind_port=64470 socket=/tmp/myrouter/mysqlxro.sock destinations=metadata-cache://devcluster/default?role=secondary mode=read-only protocol=x 

software versions:

router: mysqlrouter -v mysql router v2.1.4 on linux (64-bit) (gpl community edition)  cluster: mysql -v server version: 5.7.19-log mysql community server (gpl) 


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -