Explore the internal architecture of MariaDB MaxScale. This section contains the detailed design documents and specifications used by developers for core features and modules.
listenint process_init()
void process_finish()
int thread_init()
void thread_finish()void diagnostics(INSTANCE *instance, DCB *dcb)int32_t read(struct dcb *)
int32_t write(struct dcb *, GWBUF *)
int32_t write_ready(struct dcb *)
int32_t error(struct dcb *)
int32_t hangup(struct dcb *)
int32_t accept(struct dcb *)
int32_t connect(struct dcb*, struct server*, MXS_SESSION*)
int32_t close(struct dcb *)
int32_t listen(struct dcb *, char *)
int32_t auth(struct dcb*, struct server*, MXS_SESSION*, GWBUF*)
int32_t session(struct dcb *, void *)
char auth_default()
int32_t connlimit(struct dcb *, int limit)void* initialize(char **options)
void* create(void* instance)
int extract(struct dcb *, GWBUF *)
bool connectssl(struct dcb *)
int authenticate(struct dcb *)
void free(struct dcb *)
void destroy(void *)
int loadusers(struct servlistener *)
void diagnostic(struct dcb*, struct servlistener *)
int reauthenticate(struct dcb *, const char *user, uint8_t *token,
size_t token_len, uint8_t *scramble, size_t scramble_len,
uint8_t *output, size_t output_len);INSTANCE* createInstance(SERVICE* service, char** options)
void destroyInstance(INSTANCE* instance)SESSION* newSession(INSTANCE* instance, MXS_SESSION* mxs_session, SERVICE* service)
void closeSession(INSTANCE* instance, SESSION* session)
void freeSession(INSTANCE* instance, SESSION* session)int routeQuery(INSTANCE *instance, SESSION session, GWBUF* queue) void
clientReply(INSTANCE* instance, SESSION session, GWBUF* queue, const mxs::ReplyRoute& down, const mxs::Reply& reply)
uint64_t getCapabilities(INSTANCE* instance)bool handleError(INSTANCE* instance, SESSION* session, GWBUF* errmsgbuf, mxs::Endpoint* problem, const mxs::Reply& reply);MONITOR* startMonitor(MXS_MONITOR *monitor, const MXS_CONFIG_PARAMETER *params)
void stopMonitor(MXS_MONITOR *monitor)
void diagnostics(DCB *, const MXS_MONITOR *)gcc -I /usr/local/include/mariadb -shared -fPIC -g -o libmymodule.so mymodule.cpp[RR-Service]
type=service
router=roundrobinrouter
servers=LocalPrimary1,LocalReplica1,LocalReplica2
user=maxscale
password=maxscale
filters=MyLogFilter1
max_backends=10
write_backend=LocalPrimary1
print_on_routing=true
dummy_setting=two
[RR-Listener]
type=listener
service=RR-Service
port=4009MariaDB Corporation MaxScale 2.1.0 Mon Feb 20 17:22:18 2017
------------------------------------------------------
Info : MaxScale will be run in the terminal process.
See the log from the following log files :
Configuration file : /etc/maxscale.cnf
Log directory : /var/log/maxscale
Data directory : /var/lib/maxscale
Module directory : /usr/local/lib/maxscale
Service cache : /var/cache/maxscale2017-02-21 10:37:23 notice : [RoundRobinRouter] Creating instance.
2017-02-21 10:37:23 notice : [RoundRobinRouter] Settings read:
2017-02-21 10:37:23 notice : [RoundRobinRouter] 'max_backends': 10
2017-02-21 10:37:23 notice : [RoundRobinRouter] 'write_backend': 0xf0ce70
2017-02-21 10:37:23 notice : [RoundRobinRouter] 'print_on_routing': 1
2017-02-21 10:37:23 notice : [RoundRobinRouter] 'dummy_setting': 2
.
.
.
2017-02-21 10:37:37 notice : [RoundRobinRouter] Session with 4 connections created.
2017-02-21 10:37:37 notice : [RoundRobinRouter] QUERY: SHOW VARIABLES WHERE Variable_name in ('max_allowed_packet', 'system_time_zone', 'time_zone', 'sql_mode')
2017-02-21 10:37:37 notice : [RoundRobinRouter] Routing statement of length 110u to backend 'LocalPrimary1'.
2017-02-21 10:37:37 notice : [RoundRobinRouter] Replied to client.
2017-02-21 10:37:37 notice : [RoundRobinRouter] QUERY: set session autocommit=1,sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
2017-02-21 10:37:37 notice : [RoundRobinRouter] Routing statement of length 103u to 4 backends.
2017-02-21 10:37:37 notice : [RoundRobinRouter] Replied to client.
2017-02-21 10:37:37 notice : [RoundRobinRouter] QUERY: SET @ApplicationName='DBeaver 3.8.5 - Main'
2017-02-21 10:37:37 notice : [RoundRobinRouter] Routing statement of length 48u to 4 backends.
2017-02-21 10:37:37 notice : [RoundRobinRouter] Replied to client.
2017-02-21 10:37:37 notice : [RoundRobinRouter] QUERY: select @@lower_case_table_names
2017-02-21 10:37:37 notice : [RoundRobinRouter] Routing statement of length 36u to backend 'LocalReplica1'.
2017-02-21 10:37:37 notice : [RoundRobinRouter] Replied to client.$ maxctrl
maxctrl show service RR-Service
βββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ
β Service β RR-Service β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Router β roundrobinrouter β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β State β Started β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Started At β Tue Apr 28 08:45:19 2020 β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Current Connections β 0 β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Total Connections β 0 β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Max Connections β 0 β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Cluster β β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Servers β Server1 β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Services β β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Filters β β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Parameters β { β
β β "router_options": null, β
β β "targets": null, β
β β "user": "maxskysql", β
β β "password": "*****", β
β β "enable_root_user": false, β
β β "max_connections": 0, β
β β "connection_timeout": 0, β
β β "net_write_timeout": 0, β
β β "auth_all_servers": false, β
β β "strip_db_esc": true, β
β β "localhost_match_wildcard_host": true, β
β β "version_string": null, β
β β "log_auth_warnings": true, β
β β "session_track_trx_state": false, β
β β "retain_last_statements": -1, β
β β "session_trace": false, β
β β "cluster": null, β
β β "rank": "primary", β
β β "connection_keepalive": 300, β
β β "connection_init_sql_file": null, β
β β "max_backends": 0, β
β β "print_on_routing": false, β
β β "write_backend": null, β
β β "dummy_setting": "the_answer" β
β β } β
βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β Router Diagnostics β { β
β β "queries_ok": 0, β
β β "queries_failed": 0, β
β β "replies": 0 β
β β } β
βββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ
maxctrl
MaxScale> call command roundrobinrouter test_command "one" 0RoundRobinRouter wishes the Admin a good day.
The module got 2 arguments.
Argument 0: type 'string' value 'one'
Argument 1: type 'boolean' value 'false'