• ProxySQL监控后端节点


    ProxySQL通过Monitor模块监控后端MySQL Server的read_only值来自动调整节点所属的组。所以,在配置读、写组之前,必须先配置好监控。

    首先看下Monitor库中的表:

    admin> show tables from monitor;
    +------------------------------------+
    | tables                             |
    +------------------------------------+
    | mysql_server_connect_log           |
    | mysql_server_group_replication_log |
    | mysql_server_ping_log              |
    | mysql_server_read_only_log         |
    | mysql_server_replication_lag_log   |
    +------------------------------------+
    

    Monitor监控4种指标:connect、ping、read_only和replication lag。

    1.connect监控

    ProxySQL连接到各后端是否成功,成功/失败的连接将记录到表mysql_server_connect_log中。

    2.ping监控

    这是一种心跳检测。Monitor模块向所有后端MySQL节点发起ping检查,ping成功/失败的情况将记录到表mysql_server_ping_log中。当ping某后端的失败次数达到了mysql-monitor_ping_max_failures时表示失去心跳,将发送一个信号给MySQL的主机组管理器来杀掉和该后端节点的所有连接。

    请和connect监控区分开,connect监控是通过建立连接来检测和后端节点连接的连通性。ping监控是心跳检测,ProxySQL通过MySQL的一个ping API发送给后端MySQL服务上,然后等待ping回复,虽然是ping检测,但也是需要建立连接的。

    所以,有两个确定连接不可用公式:

    • mysql-monitor_ping_max_failures * mysql-monitor_connect_timeout
    • mysql-monitor_ping_max_failures * mysql-monitor_ping_timeout
    mysql> select * from global_variables;
    +----------------------------------------------------------------------+--------------------------------------------+
    | variable_name                                                        | variable_value                             |
    +----------------------------------------------------------------------+--------------------------------------------+
    | admin-stats_credentials                                              | stats:stats                                |
    | admin-stats_mysql_connections                                        | 60                                         |
    | admin-stats_mysql_connection_pool                                    | 60                                         |
    | admin-stats_mysql_query_cache                                        | 60                                         |
    | admin-stats_mysql_query_digest_to_disk                               | 0                                          |
    | admin-stats_system_cpu                                               | 60                                         |
    | admin-stats_system_memory                                            | 60                                         |
    | admin-telnet_admin_ifaces                                            | (null)                                     |
    | admin-telnet_stats_ifaces                                            | (null)                                     |
    | admin-refresh_interval                                               | 2000                                       |
    | admin-read_only                                                      | false                                      |
    | admin-hash_passwords                                                 | true                                       |
    | admin-vacuum_stats                                                   | true                                       |
    | admin-version                                                        | 2.4.1-1-g1ea371d                           |
    | admin-cluster_mysql_variables_diffs_before_sync                      | 3                                          |
    | admin-cluster_admin_variables_diffs_before_sync                      | 3                                          |
    | admin-cluster_ldap_variables_diffs_before_sync                       | 3                                          |
    | admin-cluster_mysql_variables_save_to_disk                           | true                                       |
    | admin-cluster_admin_variables_save_to_disk                           | true                                       |
    | admin-cluster_ldap_variables_save_to_disk                            | true                                       |
    | admin-checksum_mysql_query_rules                                     | true                                       |
    | admin-checksum_mysql_servers                                         | true                                       |
    | admin-checksum_mysql_users                                           | true                                       |
    | admin-checksum_mysql_variables                                       | true                                       |
    | admin-checksum_admin_variables                                       | true                                       |
    | admin-checksum_ldap_variables                                        | true                                       |
    | admin-restapi_enabled                                                | false                                      |
    | admin-restapi_port                                                   | 6070                                       |
    | admin-web_enabled                                                    | true                                       |
    | admin-web_port                                                       | 6080                                       |
    | admin-web_verbosity                                                  | 0                                          |
    | admin-prometheus_memory_metrics_interval                             | 61                                         |
    | admin-admin_credentials                                              | admin:admin;cluster_20X:123456             |
    | admin-mysql_ifaces                                                   | 0.0.0.0:6032                               |
    | admin-cluster_username                                               | cluster_20X                                |
    | admin-cluster_password                                               | 123456                                     |
    | admin-cluster_check_interval_ms                                      | 200                                        |
    | admin-cluster_check_status_frequency                                 | 100                                        |
    | admin-cluster_mysql_query_rules_save_to_disk                         | true                                       |
    | admin-cluster_mysql_servers_save_to_disk                             | true                                       |
    | admin-cluster_mysql_users_save_to_disk                               | true                                       |
    | admin-cluster_proxysql_servers_save_to_disk                          | true                                       |
    | admin-cluster_mysql_query_rules_diffs_before_sync                    | 3                                          |
    | admin-cluster_mysql_servers_diffs_before_sync                        | 3                                          |
    | admin-cluster_mysql_users_diffs_before_sync                          | 3                                          |
    | admin-cluster_proxysql_servers_diffs_before_sync                     | 3                                          |
    | mysql-default_charset                                                | utf8                                       |
    | mysql-default_collation_connection                                   | utf8_general_ci                            |
    | mysql-shun_on_failures                                               | 5                                          |
    | mysql-shun_recovery_time_sec                                         | 10                                         |
    | mysql-unshun_algorithm                                               | 0                                          |
    | mysql-query_retries_on_failure                                       | 1                                          |
    | mysql-client_host_cache_size                                         | 0                                          |
    | mysql-client_host_error_counts                                       | 0                                          |
    | mysql-connect_retries_delay                                          | 1                                          |
    | mysql-connection_delay_multiplex_ms                                  | 0                                          |
    | mysql-connection_max_age_ms                                          | 0                                          |
    | mysql-connect_timeout_client                                         | 10000                                      |
    | mysql-connect_timeout_server_max                                     | 10000                                      |
    | mysql-enable_client_deprecate_eof                                    | true                                       |
    | mysql-enable_server_deprecate_eof                                    | true                                       |
    | mysql-enable_load_data_local_infile                                  | false                                      |
    | mysql-eventslog_filename                                             |                                            |
    | mysql-eventslog_filesize                                             | 104857600                                  |
    | mysql-eventslog_default_log                                          | 0                                          |
    | mysql-eventslog_format                                               | 1                                          |
    | mysql-auditlog_filename                                              |                                            |
    | mysql-auditlog_filesize                                              | 104857600                                  |
    | mysql-handle_unknown_charset                                         | 1                                          |
    | mysql-free_connections_pct                                           | 10                                         |
    | mysql-connection_warming                                             | false                                      |
    | mysql-session_idle_ms                                                | 1                                          |
    | mysql-have_ssl                                                       | false                                      |
    | mysql-log_mysql_warnings_enabled                                     | false                                      |
    | mysql-monitor_enabled                                                | true                                       |
    | mysql-monitor_connect_timeout                                        | 600                                        |
    | mysql-monitor_ping_max_failures                                      | 3                                          |
    | mysql-monitor_ping_timeout                                           | 1000                                       |
    | mysql-monitor_read_only_max_timeout_count                            | 3                                          |
    | mysql-monitor_replication_lag_group_by_host                          | false                                      |
    | mysql-monitor_replication_lag_interval                               | 10000                                      |
    | mysql-monitor_replication_lag_timeout                                | 1000                                       |
    | mysql-monitor_replication_lag_count                                  | 1                                          |
    | mysql-monitor_groupreplication_healthcheck_interval                  | 5000                                       |
    | mysql-monitor_groupreplication_healthcheck_timeout                   | 800                                        |
    | mysql-monitor_groupreplication_healthcheck_max_timeout_count         | 3                                          |
    | mysql-monitor_groupreplication_max_transactions_behind_count         | 3                                          |
    | mysql-monitor_groupreplication_max_transactions_behind_for_read_only | 1                                          |
    | mysql-monitor_galera_healthcheck_interval                            | 5000                                       |
    | mysql-monitor_galera_healthcheck_timeout                             | 800                                        |
    | mysql-monitor_galera_healthcheck_max_timeout_count                   | 3                                          |
    | mysql-monitor_replication_lag_use_percona_heartbeat                  |                                            |
    | mysql-monitor_query_interval                                         | 60000                                      |
    | mysql-monitor_query_timeout                                          | 100                                        |
    | mysql-monitor_slave_lag_when_null                                    | 60                                         |
    | mysql-monitor_threads_min                                            | 8                                          |
    | mysql-monitor_threads_max                                            | 128                                        |
    | mysql-monitor_threads_queue_maxsize                                  | 128                                        |
    | mysql-monitor_wait_timeout                                           | true                                       |
    | mysql-monitor_writer_is_also_reader                                  | true                                       |
    | mysql-max_allowed_packet                                             | 67108864                                   |
    | mysql-tcp_keepalive_time                                             | 0                                          |
    | mysql-use_tcp_keepalive                                              | false                                      |
    | mysql-automatic_detect_sqli                                          | false                                      |
    | mysql-firewall_whitelist_enabled                                     | false                                      |
    | mysql-firewall_whitelist_errormsg                                    | Firewall blocked this query                |
    | mysql-throttle_connections_per_sec_to_hostgroup                      | 1000000                                    |
    | mysql-max_transaction_idle_time                                      | 14400000                                   |
    | mysql-max_transaction_time                                           | 14400000                                   |
    | mysql-multiplexing                                                   | true                                       |
    | mysql-log_unhealthy_connections                                      | true                                       |
    | mysql-enforce_autocommit_on_reads                                    | false                                      |
    | mysql-autocommit_false_not_reusable                                  | false                                      |
    | mysql-autocommit_false_is_transaction                                | false                                      |
    | mysql-verbose_query_error                                            | false                                      |
    | mysql-hostgroup_manager_verbose                                      | 1                                          |
    | mysql-binlog_reader_connect_retry_msec                               | 3000                                       |
    | mysql-threshold_query_length                                         | 524288                                     |
    | mysql-threshold_resultset_size                                       | 4194304                                    |
    | mysql-query_digests_max_digest_length                                | 2048                                       |
    | mysql-query_digests_max_query_length                                 | 65000                                      |
    | mysql-query_digests_grouping_limit                                   | 3                                          |
    | mysql-query_digests_groups_grouping_limit                            | 0                                          |
    | mysql-wait_timeout                                                   | 28800000                                   |
    | mysql-throttle_max_bytes_per_second_to_client                        | 0                                          |
    | mysql-throttle_ratio_server_to_client                                | 0                                          |
    | mysql-max_stmts_per_connection                                       | 20                                         |
    | mysql-max_stmts_cache                                                | 10000                                      |
    | mysql-mirror_max_concurrency                                         | 16                                         |
    | mysql-mirror_max_queue_length                                        | 32000                                      |
    | mysql-default_max_latency_ms                                         | 1000                                       |
    | mysql-query_processor_iterations                                     | 0                                          |
    | mysql-query_processor_regex                                          | 1                                          |
    | mysql-set_query_lock_on_hostgroup                                    | 0                                          |
    | mysql-reset_connection_algorithm                                     | 2                                          |
    | mysql-auto_increment_delay_multiplex                                 | 5                                          |
    | mysql-auto_increment_delay_multiplex_timeout_ms                      | 10000                                      |
    | mysql-long_query_time                                                | 1000                                       |
    | mysql-query_cache_size_MB                                            | 256                                        |
    | mysql-poll_timeout_on_failure                                        | 100                                        |
    | mysql-keep_multiplexing_variables                                    | tx_isolation,transaction_isolation,version |
    | mysql-kill_backend_connection_when_disconnect                        | true                                       |
    | mysql-client_session_track_gtid                                      | true                                       |
    | mysql-session_idle_show_processlist                                  | true                                       |
    | mysql-show_processlist_extended                                      | 0                                          |
    | mysql-query_digests                                                  | true                                       |
    | mysql-query_digests_lowercase                                        | false                                      |
    | mysql-query_digests_replace_null                                     | false                                      |
    | mysql-query_digests_no_digits                                        | false                                      |
    | mysql-query_digests_normalize_digest_text                            | false                                      |
    | mysql-query_digests_track_hostname                                   | false                                      |
    | mysql-query_digests_keep_comment                                     | false                                      |
    | mysql-servers_stats                                                  | true                                       |
    | mysql-default_reconnect                                              | true                                       |
    | mysql-ssl_p2s_ca                                                     |                                            |
    | mysql-ssl_p2s_capath                                                 |                                            |
    | mysql-ssl_p2s_cert                                                   |                                            |
    | mysql-ssl_p2s_key                                                    |                                            |
    | mysql-ssl_p2s_cipher                                                 |                                            |
    | mysql-ssl_p2s_crl                                                    |                                            |
    | mysql-ssl_p2s_crlpath                                                |                                            |
    | mysql-init_connect                                                   |                                            |
    | mysql-ldap_user_variable                                             |                                            |
    | mysql-add_ldap_user_comment                                          |                                            |
    | mysql-default_tx_isolation                                           | READ-COMMITTED                             |
    | mysql-default_session_track_gtids                                    | OFF                                        |
    | mysql-connpoll_reset_queue_length                                    | 50                                         |
    | mysql-min_num_servers_lantency_awareness                             | 1000                                       |
    | mysql-aurora_max_lag_ms_only_read_from_replicas                      | 2                                          |
    | mysql-stats_time_backend_query                                       | false                                      |
    | mysql-stats_time_query_processor                                     | false                                      |
    | mysql-query_cache_stores_empty_result                                | true                                       |
    | mysql-threads                                                        | 4                                          |
    | mysql-max_connections                                                | 2048                                       |
    | mysql-default_query_delay                                            | 0                                          |
    | mysql-default_query_timeout                                          | 36000000                                   |
    | mysql-have_compress                                                  | true                                       |
    | mysql-poll_timeout                                                   | 2000                                       |
    | mysql-interfaces                                                     | 0.0.0.0:6033                               |
    | mysql-default_schema                                                 | information_schema                         |
    | mysql-stacksize                                                      | 1048576                                    |
    | mysql-server_version                                                 | 5.7.22                                     |
    | mysql-connect_timeout_server                                         | 3000                                       |
    | mysql-monitor_username                                               | proxysql                                   |
    | mysql-monitor_password                                               | iD!^^EjU#Yxr5$p                            |
    | mysql-monitor_history                                                | 600000                                     |
    | mysql-monitor_connect_interval                                       | 60000                                      |
    | mysql-monitor_ping_interval                                          | 10000                                      |
    | mysql-monitor_read_only_interval                                     | 1500                                       |
    | mysql-monitor_read_only_timeout                                      | 500                                        |
    | mysql-ping_interval_server_msec                                      | 120000                                     |
    | mysql-ping_timeout_server                                            | 500                                        |
    | mysql-commands_stats                                                 | true                                       |
    | mysql-sessions_sort                                                  | true                                       |
    | mysql-connect_retries_on_failure                                     | 10                                         |
    | mysql-server_capabilities                                            | 569899                                     |
    +----------------------------------------------------------------------+--------------------------------------------+
    196 rows in set (0.00 sec)
    

    3.read_only监控

    检查mysql_replication_hostgroups表中所有节点的read_only值,并记录到mysql_server_read_only_log。如果read_only=1,表示只读,是一个slave,这样的节点将会自动移入reader_hostgroup中,如果read_only=0,表示可写,可能是master,这样的节点将会自动移入writer_hostgroup中。

    4.replication lag监控

    对mysql_servers表中所有配置了max_replication_lag的后端slave节点都检查复制延迟,通过show slave status返回结果中的Seconds_Behind_Master字段,判断slave和master之间的延迟程度,并记录到mysql_server_replication_lag_log表中。

    如果Seconds_Behind_Master > max_replication_lag,表示该slave延迟很严重,ProxySQL会自动避开这种slave节点,直到Seconds_Behind_Master < max_replication_lag。

    Monitor监控上述指标时,会使用MySQL节点上的用户连接到后端节点,所以,需要先在后端节点上创建负责监控的用户。监控connect、ping和read_only这3项指标时,该用户只需具有USAGE权限,如果要监控replication lag指标,则需要replication client权限。

  • 相关阅读:
    javascript的字段值,私有变量,静态方法声明
    取得序列中某个点的范围边界
    使用wubi安装ubuntu11.04后无线网卡被禁用无法打开解决办法
    WEB前端性能优化
    jQuery的arrayLike
    在手机上安装BT5系统,没错就是破解无线密码的那个
    PHP在子类方法B调用父类的方法A时,不传参数时仍能得到方法B的名称
    讨厌的文本选区
    PHP遍历解析XML为一个数组
    “软工厂代码生成工具”的学习笔记
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16318271.html
Copyright © 2020-2023  润新知