Ansible Role linuxfabrik.lfops.proxysql¶
This role installs and configures ProxySQL. Note that running this role always reloads the config from /etc/proxysql.cnf into ProxySQL's internal database.
Tags¶
proxysql
- Installs and configures ProxySQL.
- Triggers: proxysql-initial.service restart.
proxysql:configure
- Manages the config file.
- Triggers: proxysql-initial.service restart.
proxysql:state
- Manages the state of the systemd service.
- Triggers: none.
Mandatory Role Variables¶
proxysql__admin_users
- The ProxySQL account for administrating ProxySQL.
- Type: List of dictionaries.
proxysql__monitor_users
- The MariaDB account for monitoring the backend SQL nodes. The user has to exist in MariaDB and have
USAGE, REPLICATION CLIENT,REPLICA MONITORprivileges. - Type: Dictionary.
Example:
# mandatory
proxysql__admin_users:
- username: 'proxysql-admin'
password: 'linuxfabrik'
proxysql__monitor_user:
username: 'proxysql-monitor'
password: 'linuxfabrik'
Optional Role Variables¶
proxysql__cluster_user
- Account used internally for communication in ProxySQL clusters.
- Type: Dictionary.
- Default: unset
proxysql__mysql_galera_hostgroups__host_var / proxysql__mysql_galera_hostgroups__group_var
- List of dictionaries defining the hostgroups for the use with Galera.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
*_hostgroup:- Mandatory. ID of the respective hostgroup.
- Type: Number.
-
max_writers:- Optional. Maximum number of nodes that should be allowed in the
writer_hostgroup, nodes in excess of this value will be put into thebackup_writer_hostgroup. - Type: Number.
- Default:
1
- Optional. Maximum number of nodes that should be allowed in the
-
writer_is_also_reader:- Optional. Determines if a node should be added to the
reader_hostgroupas well as thewriter_hostgroup. Value of2signals that only the nodes inbackup_writer_hostgroupare also inreader_hostgroup, excluding the node(s) in thewriter_hostgroup. - Type: Number.
- Default:
0
- Optional. Determines if a node should be added to the
-
max_transactions_behind:- Optional. Maximum number of writesets behind the cluster that ProxySQL should allow before shunning the node to prevent stale reads.
- Type: Number.
- Default:
0
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__mysql_query_rules__host_var / proxysql__mysql_query_rules__group_var
- List of dictionaries determining the routing of queries to the backends.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
rule_id:- Mandatory. Unique ID of the rule. Rules are processed in
rule_idorder. - Type: Number.
- Mandatory. Unique ID of the rule. Rules are processed in
-
match_pattern:- Mandatory. Regular expression that matches the query text.
- Type: String.
-
destination_hostgroup:- Mandatory. ID of the hostgroup to which the query gets routed.
- Type: Number.
-
active:- Optional. State of the rule.
- Type: Bool.
-
apply:- Optional. When set to
trueno further queries will be evaluated after this rule is matched and processed. - Type: Bool.
- Optional. When set to
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__mysql_replication_hostgroups__host_var / proxysql__mysql_replication_hostgroups__group_var
- List of dictionaries defining the hostgroups for the use with MariaDB/MySQL replication.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
*_hostgroup:- Mandatory. ID of the respective hostgroup.
- Type: Number.
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__mysql_servers__host_var / proxysql__mysql_servers__group_var
- List of dictionaries defining the backend MariaDB/MySQL servers.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
address:- Mandatory. Address.
- Type: String.
-
port:- Optional. Port.
- Type: Number.
- Default:
3306
-
use_ssl:- Optional. Determines if SSL is used for the connection to the backend.
- Type: Bool.
- Default:
false
-
weight:- Optional. Determines the priority of the backend.
- Type: Number.
- Default:
1
-
max_replication_lag:- Optional. If greater than 0, ProxySQL will regularly monitor replication lag and if it goes beyond the configured threshold it will temporary shun the host until replication catches up.
- Type: Number.
- Default:
0
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__mysql_users__host_var / proxysql__mysql_users__group_var
- List of dictionaries defining the MariaDB/MySQL users. They have to already exist in the DB.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
username:- Mandatory. Username.
- Type: String.
-
password:- Optional. Port.
- Type: Number.
- Default:
3306
-
use_ssl:- Optional. Determines if SSL is used for the connection to the backend.
- Type: Bool.
- Default:
false
-
default_hostgroup:- Optional. If there is no matching rule for the queries sent by this user, the traffic it generates is sent to the specified hostgroup.
- Type: Number.
- Default:
0
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__proxysql_servers__host_var / proxysql__proxysql_servers__group_var
- List of dictionaries defining the ProxySQL inside a cluster.
- For the usage in
host_vars/group_vars(can only be used in one group at a time). - Type: List of dictionaries.
- Default:
[] -
Subkeys:
-
hostnaem:- Mandatory. Hostname / Address.
- Type: String.
-
port:- Optional. Port.
- Type: Number.
- Default:
6032
-
state:- Optional. State, either
presentorabsent. - Type: String.
- Default:
present
- Optional. State, either
-
proxysql__service_enabled
- Enables or disables the ProxySQL service, analogous to
systemctl enable/disable --now. - Type: Bool.
- Default:
true
Example:
# optional
proxysql__cluster_user:
username: 'proxysql-monitor'
password: 'linuxfabrik'
proxysql__mysql_galera_hostgroups__host_var:
- writer_hostgroup: 0
backup_writer_hostgroup: 3
reader_hostgroup: 1
offline_hostgroup: 4
max_writers: 1
writer_is_also_reader: 1
max_transactions_behind: 30
proxysql__mysql_query_rules__host_var:
# read/write split
- rule_id: 100
active: true
match_pattern: '^SELECT .* FOR UPDATE'
destination_hostgroup: 0 # writer_hostgroup
apply: 1
- rule_id: 200
active: true
match_pattern: '^SELECT .*'
destination_hostgroup: 1 # reader_hostgroup
apply: 1
- rule_id: 300
active: true
match_pattern: '.*'
destination_hostgroup: 0 # writer_hostgroup
apply: 1
proxysql__mysql_replication_hostgroups__host_var:
writer_hostgroup: 0
reader_hostgroup: 1
proxysql__mysql_servers__host_var:
- address: 'mariadb01.example.com'
port: 3306
use_ssl: true
hostgroup: 10
weight: 100
max_replication_lag: 30
proxysql__mysql_users__host_var:
- username: 'user1'
password: 'linuxfabrik'
use_ssl: true
default_hostgroup: 0
state: 'present'
proxysql__proxysql_servers__group_var:
- hostname: 'proxysql1.example.com'
port: 6032
- hostname: 'proxysql2.example.com'
port: 6032
proxysql__service_enabled: true