Ansible Role 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.
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
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
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
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.
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.
state:Optional. State, either
presentorabsent.Type: String.
Default:
present
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
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
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
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
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