sunetdrive/templates/multinode/proxysql.cnf.erb

125 lines
3.2 KiB
Plaintext

datadir="/var/lib/proxysql"
# ProxySQL admin configuration section
admin_variables=
{
admin_credentials="admin:<%= @admin_password%>;cluster_admin:<%= @cluster_admin_password %>"
mysql_ifaces="0.0.0.0:6032"
refresh_interval=2000
web_enabled=true
web_port=6080
stats_credentials="stats:<%= @admin_password %>"
cluster_username="cluster_admin"
cluster_password="<%= @cluster_admin_password %>"
cluster_check_interval_ms=200
cluster_check_status_frequency=100
cluster_mysql_query_rules_save_to_disk=true
cluster_mysql_servers_save_to_disk=true
cluster_mysql_users_save_to_disk=true
cluster_proxysql_servers_save_to_disk=true
cluster_mysql_query_rules_diffs_before_sync=3
cluster_mysql_servers_diffs_before_sync=3
cluster_mysql_users_diffs_before_sync=3
cluster_proxysql_servers_diffs_before_sync=3
}
# MySQL/MariaDB related section
mysql_variables=
{
threads=4
max_connections=2048
default_query_delay=0
default_query_timeout=36000000
have_compress=true
poll_timeout=2000
interfaces="0.0.0.0:3306;/tmp/proxysql.sock"
default_schema="information_schema"
stacksize=1048576
server_version="10.5.5"
connect_timeout_server=10000
monitor_history=60000
monitor_connect_interval=2000
monitor_ping_interval=2000
ping_interval_server_msec=10000
ping_timeout_server=200
commands_stats=true
sessions_sort=true
monitor_username="proxysql"
monitor_password="<%= @monitor_password %>"
monitor_galera_healthcheck_interval=2000
monitor_galera_healthcheck_timeout=800
}
# Specify all ProxySQL hosts here
proxysql_servers =
(
<%- index = 0 -%>
<%- @nextcloud_ip.each do |appserver| -%>
<%- index += 1 -%>
{ hostname="<%= appserver %>" , port=6032 , comment="proxysql<%= index %>" },
<%- end -%>
)
# HG10 - single-writer
# HF30 - multi-writer
mysql_galera_hostgroups =
(
{
writer_hostgroup=10
backup_writer_hostgroup=20
reader_hostgroup=30
offline_hostgroup=9999
max_writers=1
writer_is_also_reader=1
max_transactions_behind=0
active=1
}
)
# List all MariaDB Galera nodes here
mysql_servers =
(
<%- @db_ip.each do |db| -%>
{ address="<%= db %>" , port=3306 , hostgroup=10, max_connections=100 },
<%- end -%>
)
# Default query rules:
# - All writes -> HG10 (single-writer)
# - All reads -> HG30 (multi-writer)
mysql_query_rules =
(
{
rule_id=100
active=1
match_pattern="^SELECT .* FOR UPDATE"
destination_hostgroup=10
apply=1
},
{
rule_id=200
active=1
match_pattern="^SELECT .*"
destination_hostgroup=30
apply=1
},
{
rule_id=300
active=1
match_pattern=".*"
destination_hostgroup=10
apply=1
}
)
# All MySQL user that you want to pass through this instance
# - The MySQL user must be created first in the DB server and grant it to access from this ProxySQL host
mysql_users =
(
<%- $customers.each do |customer| -%>
{ username = "nextcloud_<%= customer %>", password = "<%= @mysql_user_password %>", default_hostgroup = 10, transaction_persistent = <%= @transaction_persistent %>, active = 1 },
<%- end -%>
)