<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>MYSQL on Pigsty v5.0</title>
    <link>https://pgsty.pro/module/mysql/</link>
    <description>Recent content in MYSQL on Pigsty v5.0</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://pgsty.pro/module/mysql/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Module: MYSQL</title>
        <link>https://pgsty.pro/docs/mysql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.mysql.com/&#34;&gt;MySQL&lt;/a&gt; is one of the world&amp;rsquo;s most popular open-source relational databases. Pigsty&amp;rsquo;s &lt;strong&gt;MYSQL&lt;/strong&gt; module deploys a fixed, &lt;strong&gt;native MySQL 8.4 LTS platform&lt;/strong&gt; on managed nodes: either a standalone instance or a three-node single-primary InnoDB Cluster built on Group Replication, with TLS, backups, monitoring, and lifecycle handled for you.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Current status: Pilot module&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;MYSQL is a supplementary pilot module. It aims to be a simple, inexpensive, good-enough MySQL cluster — not a peer of the PGSQL module.&#xA;The core capabilities (deployment and convergence, HA failover, daily backups, monitoring and alerting) have been tested systematically;&#xA;destructive procedures such as complete-outage recovery and physical restore are deliberately kept manual, with runbooks provided in &lt;a href=&#34;https://pgsty.pro/docs/mysql/admin/&#34;&gt;Administration&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration</title>
        <link>https://pgsty.pro/docs/mysql/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/config/</guid>
        <description>&lt;p&gt;The MYSQL module is driven by the inventory: you declare the desired cluster, and &lt;code&gt;mysql.yml&lt;/code&gt; converges the live state to match. This page covers topology planning and every configuration block; see &lt;a href=&#34;https://pgsty.pro/docs/mysql/param/&#34;&gt;Parameters&lt;/a&gt; for the full reference.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;before-you-deploy&#34;&gt;Before You Deploy&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Target nodes are &lt;a href=&#34;https://pgsty.pro/docs/node/&#34;&gt;&lt;code&gt;NODE&lt;/code&gt;&lt;/a&gt;-managed, with the shared CA installed at &lt;code&gt;/etc/pki/ca.crt&lt;/code&gt; (managed by the &lt;code&gt;node_ca&lt;/code&gt; role; the MySQL role only issues leaf certificates);&lt;/li&gt;&#xA;&lt;li&gt;Package repositories include the &lt;code&gt;mysql&lt;/code&gt; module: &lt;code&gt;node_repo_modules: node,infra,mysql&lt;/code&gt;, or a local repo cached with &lt;code&gt;repo_extra_packages: [mysql]&lt;/code&gt;;&lt;/li&gt;&#xA;&lt;li&gt;The platform is in the support matrix: &lt;code&gt;x86_64&lt;/code&gt; on EL 8/9/10, Debian 12/13, Ubuntu 22/24; or &lt;code&gt;aarch64&lt;/code&gt; on EL 9/10;&lt;/li&gt;&#xA;&lt;li&gt;The three platform passwords (&lt;code&gt;mysql_root_password&lt;/code&gt;, &lt;code&gt;mysql_monitor_password&lt;/code&gt;, &lt;code&gt;mysql_cluster_password&lt;/code&gt;) are set to production values — preflight rejects &lt;code&gt;CHANGE_ME&lt;/code&gt; placeholders.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;identity&#34;&gt;Identity&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Each cluster is an inventory group with two required identity parameters:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parameters</title>
        <link>https://pgsty.pro/docs/mysql/param/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/param/</guid>
        <description>&lt;p&gt;The MYSQL deployment role deliberately exposes only 11 parameters; the removal role adds 2 protected operations parameters. Software versions, ports, directories, charset, TLS paths, and timer schedules are fixed by the role; memory sizing is derived from node specs. To adjust server behavior, use &lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_parameters&#34;&gt;&lt;code&gt;mysql_parameters&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-reference&#34;&gt;Quick Reference&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Level&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_cluster&#34;&gt;&lt;code&gt;mysql_cluster&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;required&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Cluster name and identity&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_seq&#34;&gt;&lt;code&gt;mysql_seq&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Instance&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;required&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;1&lt;/code&gt; for standalone; sequential &lt;code&gt;1..3&lt;/code&gt; for HA&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_root_password&#34;&gt;&lt;code&gt;mysql_root_password&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DBUser.Root&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Local root password&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_monitor_password&#34;&gt;&lt;code&gt;mysql_monitor_password&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DBUser.Monitor&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exporter identity password&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_cluster_password&#34;&gt;&lt;code&gt;mysql_cluster_password&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DBUser.Cluster&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;AdminAPI/Router/backup identity password&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_databases&#34;&gt;&lt;code&gt;mysql_databases&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Additive database declarations&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_users&#34;&gt;&lt;code&gt;mysql_users&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Additive user and grant declarations&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_parameters&#34;&gt;&lt;code&gt;mysql_parameters&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster/Instance&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;[mysqld]&lt;/code&gt; option overrides&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_backup_enabled&#34;&gt;&lt;code&gt;mysql_backup_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Daily full-backup timer&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_backup_repo&#34;&gt;&lt;code&gt;mysql_backup_repo&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;see below&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Local backup path and retention&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/mysql/param/#mysql_exporter_enabled&#34;&gt;&lt;code&gt;mysql_exporter_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exporter and monitoring target&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The removal parameters are used by &lt;code&gt;mysql-rm.yml&lt;/code&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Administration</title>
        <link>https://pgsty.pro/docs/mysql/admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/admin/</guid>
        <description>&lt;p&gt;This page covers day-to-day operations for the MYSQL module. The governing principle: &lt;strong&gt;declare state in the inventory, converge with the playbook.&lt;/strong&gt; Most anomalies — a dropped member, drifted AdminAPI state — heal with a single &lt;code&gt;./mysql.yml -l &amp;lt;cluster&amp;gt;&lt;/code&gt; rerun. Only three destructive scenarios (member replacement, physical restore, complete-outage recovery) require the manual runbooks below.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-reference&#34;&gt;Quick Reference&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Operation&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Deploy / converge a cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./mysql.yml -l &amp;lt;cluster&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Preflight without changes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./mysql.yml -l &amp;lt;cluster&amp;gt; --check&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Local root session&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql --defaults-extra-file=/etc/mysql/pigsty/root.cnf&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Inspect MGR topology&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;SELECT MEMBER_HOST,MEMBER_STATE,MEMBER_ROLE FROM performance_schema.replication_group_members;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;AdminAPI status&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dba.getCluster().status()&lt;/code&gt; in &lt;code&gt;mysqlsh&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Trigger a backup&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;systemctl start mysql-backup&lt;/code&gt; (in HA, only the primary runs it)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Retire a secondary&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./mysql-rm.yml -l &amp;lt;IP&amp;gt; -e mysql_safeguard=false -e mysql_rm_confirm=&amp;lt;instance&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Retire a whole cluster&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./mysql-rm.yml -l &amp;lt;cluster&amp;gt; -e mysql_safeguard=false -e mysql_rm_confirm=&amp;lt;cluster&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;status-checks&#34;&gt;Status Checks&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Run the commands in this page on a cluster member as root: the client configs and secrets under &lt;code&gt;/etc/mysql/pigsty/&lt;/code&gt; are readable by root only. Examples use EL unit names — on Debian/Ubuntu the MySQL service unit is &lt;code&gt;mysql&lt;/code&gt;, not &lt;code&gt;mysqld&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Playbook</title>
        <link>https://pgsty.pro/docs/mysql/playbook/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/playbook/</guid>
        <description>&lt;p&gt;The MYSQL module ships two playbooks: &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/mysql.yml&#34;&gt;&lt;code&gt;mysql.yml&lt;/code&gt;&lt;/a&gt; deploys and converges, while &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/mysql-rm.yml&#34;&gt;&lt;code&gt;mysql-rm.yml&lt;/code&gt;&lt;/a&gt; performs protected member retirement and cluster teardown. Re-running the former converges toward declared state; the latter is a separate lifecycle operation whose target, backups, and exact confirmation value must be checked again before every real run.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;mysqlyml&#34;&gt;&lt;code&gt;mysql.yml&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Runs the full check → install → bootstrap → access → provision → backup → monitor convergence on the selected clusters:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://pgsty.pro/docs/mysql/monitor/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/monitor/</guid>
        <description>&lt;p&gt;The MYSQL module plugs into Pigsty&amp;rsquo;s observability stack: metrics flow through mysqld_exporter into VictoriaMetrics, error logs flow through Journald/Vector into VictoriaLogs, Grafana ships 5 dashboards, and vmalert loads 68 recording rules plus 27 alert rules.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;collection-architecture&#34;&gt;Collection Architecture&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Each MySQL node runs one &lt;code&gt;mysqld_exporter&lt;/code&gt; (port &lt;code&gt;9104&lt;/code&gt;) using the least-privilege monitor account (&lt;code&gt;dbuser_monitor@&#39;127.0.0.1&#39;&lt;/code&gt;). Deployment writes a file-based service-discovery target on the Infra node:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-42cfc217-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-42cfc217-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/infra/targets/mysql/&amp;lt;instance&amp;gt;.yml     # e.g. my-test-1.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The VictoriaMetrics &lt;code&gt;mysql&lt;/code&gt; scrape job consumes this directory. &lt;code&gt;mysql_exporter_enabled: false&lt;/code&gt; converges the target to an empty list; only &lt;code&gt;mysql-rm.yml&lt;/code&gt; deletes target files.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Metrics</title>
        <link>https://pgsty.pro/docs/mysql/metric/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/metric/</guid>
        <description>&lt;p&gt;MYSQL metrics come from &lt;code&gt;mysqld_exporter&lt;/code&gt; (raw metrics, &lt;code&gt;mysql_&lt;/code&gt; prefix) and vmalert recording rules (&lt;code&gt;mysql:ins:*&lt;/code&gt; / &lt;code&gt;mysql:cls:*&lt;/code&gt;). Dashboards and alerts are built on the derived metrics; this page is their dictionary.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;common-labels&#34;&gt;Common Labels&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Every metric carries &lt;code&gt;job=mysql&lt;/code&gt; and the identity labels &lt;code&gt;cls&lt;/code&gt; / &lt;code&gt;ins&lt;/code&gt; / &lt;code&gt;ip&lt;/code&gt; / &lt;code&gt;topology&lt;/code&gt; (&lt;code&gt;standalone&lt;/code&gt; or &lt;code&gt;innodb_cluster&lt;/code&gt;). Instance-level derived metrics keep all identity labels; cluster-level metrics aggregate to &lt;code&gt;cls&lt;/code&gt; + &lt;code&gt;topology&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;availability&#34;&gt;Availability&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Metric&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Meaning&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:ins:exporter_up&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Scrape success (transport health)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:ins:up&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;MySQL connection probe success (database health)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:ins:uptime&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Instance uptime in seconds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:cls:instances&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Declared instance count&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:cls:up&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Online instance count&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mysql:cls:health&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Cluster health: 2 healthy / 1 degraded-writable / 0 critical&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;For HA clusters, &lt;code&gt;mysql:cls:health&lt;/code&gt; combines quorum, single-primary, and full-membership status; for standalones it is &lt;code&gt;2 × mysql:cls:up&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsty.pro/docs/mysql/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/mysql/faq/</guid>
        <description>&lt;h2 id=&#34;how-mature-is-the-mysql-module&#34;&gt;How mature is the MYSQL module?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;It is a pilot module aiming for a simple, inexpensive, good-enough MySQL cluster. The four core capabilities — deployment and convergence, HA failover, daily backups, monitoring and alerting — have been tested systematically, including fault injection and complete-outage drills. Destructive recovery flows are deliberately manual, with &lt;a href=&#34;https://pgsty.pro/docs/mysql/admin/&#34;&gt;runbooks&lt;/a&gt; provided. It does not aim for PGSQL-module completeness: no PITR, no VIP/DNS access layer, no automatic scaling. Validate and rehearse recovery against your own requirements before serious production use.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
