#
# Example MaxScale.cnf configuration file
#
#
#
# Number of server threads
# Valid options are:
# 	threads=<number of threads>

[maxscale]
threads=1

# Define a monitor that can be used to determine the state and role of
# the servers.
#
# Valid options are:
#
# 	module=<name of module to load>
# 	servers=<server name>,<server name>,...
# 	user =<user name - must have slave replication and 
#                          slave client privileges>
# 	passwd=<password of the above user, plain text currently>
#	monitor_interval=<sampling interval in milliseconds,
#                          default value is 10000>

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3,server4
user=maxuser
passwd=maxpwd

# A series of service definition
#
# Valid options are:
#
# 	router=<name of router module>
# 	servers=<server name>,<server name>,...
# 	user=<User to fetch password inforamtion with>
# 	passwd=<Password of the user, plain text currently>
#	enable_root_user=<0 or 1, default is 0>
#	version_string=<specific string for server handshake,
#		default is the MariaDB embedded library version>
#
# Valid router modules currently are:
# 	readwritesplit, readconnroute and debugcli


[RW Split Router]
type=service
router=readwritesplit
servers=server1,server2,server3,server4
max_slave_connections=90%
write_ses_variables_to_all=Yes
read_ses_variables_from_slaves=Yes
user=maxuser
passwd=maxpwd
filters=Hint

[RW Split Hint Router]
type=service
router=readwritesplit
servers=server1,server2,server3,server4
max_slave_connections=90%
write_ses_variables_to_all=Yes
read_ses_variables_from_slaves=Yes
user=maxuser
passwd=maxpwd
filters=Hint


[Read Connection Router]
type=service
router=readconnroute
router_options=master
servers=server1
user=maxuser
passwd=maxpwd


[HTTPD Router]
type=service
router=testroute
servers=server1,server2,server3

[Debug Interface]
type=service
router=debugcli


[Hint]
type=filter
module=hintfilter


# Listener definitions for the services
#
# Valid options are:
#
# 	service=<name of service defined elsewhere>
# 	protocol=<name of protocol module with which to listen>
# 	port=<Listening port>
#	address=<Address to bind to>
#	socket=<Listening socket>

[RW Split Listener]
type=listener
service=RW Split Router
protocol=MySQLClient
port=4006

[RW Split Hint Listener]
type=listener
service=RW Split Hint Router
protocol=MySQLClient
port=4009

[Read Connection Listener]
type=listener
service=Read Connection Router
protocol=MySQLClient
port=4008
#socket=/tmp/readconn.sock

[Debug Listener]
type=listener
service=Debug Interface
protocol=telnetd
port=4442
#address=127.0.0.1

[HTTPD Listener]
type=listener
service=HTTPD Router
protocol=HTTPD
port=6444

# Definition of the servers

[server1]
type=server
address=127.0.0.1
port=3000
protocol=MySQLBackend

[server2]
type=server
address=127.0.0.1
port=3001
protocol=MySQLBackend

[server3]
type=server
address=127.0.0.1
port=3002
protocol=MySQLBackend

[server4]
type=server
address=127.0.0.1
port=3003
protocol=MySQLBackend
