MySQL 变量与参数说明

本文汇总 mysql_ansible 公开入口里最常改、最容易影响结果的变量,帮助你在部署、备份、恢复与监控接入前快速定位配置入口。

1. 通用变量

文件:playbooks/common_config.yml

变量默认值作用
mysql_version9.7.0MySQL 版本,当前公开能力主要围绕 5.78.08.49.7
mysql_port3306实例端口,也是多个派生路径和服务名的计算基线
server_specsauto服务器规格,可保持自动探测,也可写成 4c8g 这类固定规格
db_typemysql数据库类型,支持 mysql / percona / greatsql
mysql_packages_dir../downloads/MySQL 安装包目录,离线包通常放在这里
mysql_user / mysql_groupmysql / mysqlMySQL Linux 运行用户和组
mysql_data_dir_base/database/{{ db_type }}MySQL 数据、日志、配置目录的根路径
mysql_service_namemysql{{ mysql_port }}systemd 服务名,默认随端口变化
mysql_admin_user / mysql_admin_passwordadmin / Dbbot_admin@8888管理账号与密码
mysql_rple_user / mysql_rple_passwordrepl / Dbbot_repl@8888复制账号与密码
mysql_backup_user / mysql_backup_passwordbackup / Dbbot_backup@8888备份账号与密码
mysql_monitor_user / mysql_monitor_passwordmonitor / Dbbot_monitor@8888mysqld_exporter 使用的监控账号
mysql_cluster_admin_user / mysql_cluster_admin_passwordclusteradmin / Dbbot_clusteradmin@8888InnoDB Cluster 的 mysqlshell 管理账号
mysql_router_user / mysql_router_passwordmysqlrouter / Dbbot_mysqlrouter@8888MySQL Router 读取 metadata 用的账号
mysql_character_set_serverutf8mb4服务端字符集
mysql_transaction_isolationREAD-COMMITTED默认事务隔离级别
mysql_default_time_zone+8:00MySQL 默认时区
mysql_max_connections1000最大连接数
mysql_binlog_formatrowbinlog 格式,MGR / InnoDB Cluster 场景尤其关键
fcs_auto_download_packagestrue控制节点是否自动下载 MySQL / Shell / Router / Exporter 包
fcs_allow_custom_mysql_packagefalse是否允许临时使用未纳入 support 矩阵的 MySQL Server 安装包名
fcs_allow_dbbot_default_passwdfalse是否允许使用 dbbot 公开默认密码继续执行
fcs_create_mysql_fast_logintrue是否为 mysql 用户生成 db3306 这类快捷登录命令
fcs_backup_script_create_backup_usertrue备份脚本部署时是否自动创建备份账号
fcs_role_mysqld_exporter_create_monitor_usertrue部署 mysqld_exporter 时是否自动创建监控账号
fcs_mysql_use_jemallocfalse是否显式启用 jemalloc preload
fcs_mysql_allow_bundled_jemalloc_fallbackfalse当系统仓没有 jemalloc 时,是否允许退回仓内 bundled RPM
fcs_use_greatsql_hatrue是否启用 GreatSQL HA 相关能力
fcs_run_post_deploy_checkstrue是否在部署入口结束后自动执行 post-deploy 验收
dbbot_confirmation_input""自动化场景可设为 confirm,人工执行时建议保持空值

说明:

  • 公开默认密码遵循 Dbbot_<user>@8888 / Dbbot_<linux_user>@9999 约定;默认 fcs_allow_dbbot_default_passwd: false,因此 Playbook 会在 pre_tasks 阶段拦截公开默认密码。
  • fcs_mysql_use_jemalloc 当前默认值是 false,也就是默认走系统内存分配器;只有显式开启时才会处理 jemalloc
  • fcs_mysql_use_jemalloc: true 时,dbbot 会优先尝试系统仓 jemalloc;只有你显式设置 fcs_mysql_allow_bundled_jemalloc_fallback: true,才允许退回仓内旧版 RPM。
  • mysql_binlog_format 在通用配置里可改,但 mgr.yml 会强制要求 row
  • fcs_run_post_deploy_checks 默认开启;若需临时跳过部署后验收,可显式传入 -e fcs_run_post_deploy_checks=false
  • 当前自动验收已覆盖 single_node.ymlmaster_slave.ymlmgr.ymlinnodb_cluster.ymlinnodb_cluster_router.ymlmha_go.ymlmha.yml、exporter 安装入口和 unsafe_uninstall.yml;备份与恢复入口暂不在这组自动验收范围内。
  • 主从 post-deploy 验收默认要求复制延迟为 0 秒;dbbot_post_check_replication_max_lag_seconds 仅用于临时放宽验收阈值。
  • MySQL Server 安装包元数据会在探测目标 OS 后由 dbbotctl support 解析。可用 dbbotctl support packages 查询指定版本 / OS 对应的包名、下载地址和 checksum。
  • MySQL 9.7.x 不支持 CentOS/RHEL 7 系列;这类系统请使用 MySQL 8.4.x

2. 目录与安装包变量

文件:playbooks/advanced_config.yml

变量默认值作用
mycnf_dir{{ mysql_data_dir_base }}/{{ mysql_port }}/etcmy.cnf 所在目录
datadir{{ mysql_data_dir_base }}/{{ mysql_port }}/data数据目录
tmpdir{{ mysql_data_dir_base }}/{{ mysql_port }}/tmp临时目录
binlog_dir / relaylog_dir{{ mysql_data_dir_base }}/{{ mysql_port }}/logbinlog 与中继日志目录
redolog_dir{{ datadir }}redo 日志目录,默认回到 datadir
socket / mysqlx_socket基于 datadir 派生MySQL / MySQL X socket 路径
mysql_packagedbbotctl support 解析Playbook 实际使用的 MySQL / Percona / GreatSQL Server 安装包名
mysql_package_download_urldbbotctl support 解析fcs_auto_download_packages: true 时使用的下载地址
mysql_package_checksum_type / mysql_package_checksumdbbotctl support 解析有 checksum 元数据时用于校验 Server 安装包
mysql_custom_package""fcs_allow_custom_mysql_package: true 时临时指定的 MySQL Server 安装包文件名
mysql_custom_package_download_url""自定义包可选下载地址;为空时只检查本地文件
mysql_custom_package_checksum_type / mysql_custom_package_checksumnone / -自定义包可选 checksum,支持 md5 / sha256 / sha512

建议:

  • 只有在自定义目录布局或恢复到特殊路径时,才建议修改目录变量。安装包元数据通常应来自 dbbotctl support;离线部署时,请把文件名与 support 矩阵一致的安装包放到 mysql_packages_dir
  • 临时测试未纳入 support 矩阵的 MySQL Server 包时,显式设置 fcs_allow_custom_mysql_package: true 并在 advanced_config.yml 中填写 mysql_custom_package。该能力适用于所有包含 MySQL Server 部署的入口,不只限于单机部署;它只覆盖 Server 主包名,mysql_version、目标 OS、拓扑支持判断以及 MySQL Shell / Router 包名仍来自 support 矩阵。
  • unsafe_uninstall.yml 的清理范围也依赖这里的目录变量;在当前默认布局下,它会删除实例数据目录和日志目录,但保留实例 my.cnf

3. 主从、传统 MHA 与 MHA-Go 变量

文件:

  • playbooks/vars/var_master_slave.yml
  • playbooks/vars/var_mha.yml
  • playbooks/vars/var_mha_go.yml
变量默认值作用
master_ip192.0.2.131主库 IP
slave_ips['192.0.2.132', '192.0.2.133']从库 IP 列表
sub_nets192.0.2.%MySQL 可信网段、可信域或可信 IP
manager_ip传统 MHA: 192.0.2.133; MHA-Go: {{ master_ip }}manager 所在节点
net_work_interfaceens33MHA VIP 绑定网卡名
vip192.0.2.130MHA VIP
vip_netmask32MHA VIP netmask
mha_go_semi_sync_policydisabledMHA-Go 半同步检查策略
mha_go_writer_endpoint_enabledfalseMHA-Go 是否启用 VIP 写入口切换

说明:

  • master_ipslave_ips 必须和 inventory 中的主机一致。
  • 传统 Perl MHA 的 manager_ip 仍建议放在从库节点上,且不能与 master_ip 相同。
  • MHA-Go 的 manager_ip 可以是 master_ipslave_ips 中任一节点,当前默认是 master_ip
  • 当前实际变量名是 slave_ips,不是 replica_ips
  • net_work_interface 的默认值只是示例网卡名。启用传统 MHA VIP 或 MHA-Go VIP 写入口前,请先用 ip routeip addr 确认真实网卡;dbbot 192.168.161.* 默认测试 inventory 中的样例环境通常是 enp1s0,但具体网卡随测试 profile 变化。

4. MGR 变量

文件:playbooks/vars/var_mgr.yml

变量默认值作用
mysql_binlog_formatrow覆盖通用配置,确保 MGR 使用 row
mysql_mgr_port自动计算,例如 33061(当 mysql_port=3306Group Replication 通信端口
mysql_mgr_hosts['192.0.2.131', '192.0.2.132', '192.0.2.133']MGR 成员列表
sub_nets192.0.2.%可信来源范围
greatsql_vip192.0.2.134GreatSQL HA 场景的 VIP
greatsql_net_work_interfaceens33GreatSQL HA 绑定 VIP 的网卡
greatsql_netmask255.255.255.255GreatSQL HA netmask
greatsql_group_replication_arbitratorfalse是否启用仲裁节点
greatsql_group_replication_arbitrator_hosts['192.0.2.133']仲裁节点列表

说明:

  • greatsql_* 变量只在 db_type: greatsql 场景生效。
  • greatsql_net_work_interface 需要按真实网卡名覆盖;dbbot 192.168.161.* 默认测试 inventory 中的样例环境通常是 enp1s0,但具体网卡随测试 profile 变化。
  • mgr.yml 默认交付结果是单主模式。

5. InnoDB Cluster 与 Router 变量

文件:

  • playbooks/vars/var_innodb_cluster.yml
  • playbooks/vars/var_innodb_cluster_router.yml

InnoDB Cluster 变量:

变量默认值作用
innodb_cluster_namemyCluster{{ mysql_port }}Cluster 名称
innodb_cluster_primary192.0.2.131初始 primary 节点
innodb_cluster_members['192.0.2.131', '192.0.2.132', '192.0.2.133']Cluster 成员列表
mysql_mgr_port自动计算,例如 33061(当 mysql_port=3306InnoDB Cluster 底层仍使用 MGR 端口
mysql_mgr_hosts{{ innodb_cluster_members }}MGR 成员列表
mysql_cluster_admin_user / mysql_cluster_admin_passwordclusteradmin / Dbbot_clusteradmin@8888mysqlshell 管理账号

Router 变量:

变量默认值作用
router_enable_hafalse是否启用 keepalived 形式的 Router HA
router_bootstrap_server192.0.2.131Router bootstrap 连接的 Cluster 节点
router_linux_glibc_tagautoRouter 安装包 glibc 标签;可显式设为 glibc2.17glibc2.28
router_vip192.0.2.150Router HA VIP
router_net_work_interfaceens33VIP 绑定网卡
router_ha_nodes两节点示例Router HA 节点、角色和优先级列表
router_vip_netmask32Router VIP netmask
router_portsrw/ro/http... 字典Router 暴露端口、是否启用和是否纳入健康检查
max_total_connections1000Router 总连接上限
router_rest_api_bind_address127.0.0.1Router REST API 监听地址
router_rest_api_auth_modefileREST API 鉴权方式
router_rest_api_file_user / router_rest_api_file_passwordrouter_api_user / Dbbot_router_api_user@8888文件鉴权账号

说明:

  • router_ha_nodes 只有在 router_enable_ha: true 时才有意义。
  • router_net_work_interface 需要按 Router 节点真实网卡名覆盖;dbbot 192.168.161.* 默认测试 inventory 中的样例环境通常是 enp1s0,但具体网卡随测试 profile 变化。
  • router_linux_glibc_tag: auto 下,Router 9.7.x 使用 glibc2.28,Router 8.4.x 使用 glibc2.17;如需固定包名,可显式指定 glibc 标签。
  • router_ports.http.port 默认是 8443,后续 mysqlrouter_exporter 也默认从这个 REST API 取数。

6. Exporter 变量

文件:

  • playbooks/vars/var_node_exporter_install.yml
  • playbooks/vars/var_mysqld_exporter_install.yml
  • playbooks/vars/var_router_exporter_install.yml
变量默认值作用
node_exporter_installtrue是否安装 node_exporter
node_exporter_port9100node_exporter 监听端口
node_exporter_install_typedbbot安装方式,支持 dbbot / pmm / package
node_exporter_packagenode_exporter-1.10.2.linux-amd64.tar.gzpackage 模式下使用的官方安装包名
mysqld_exporter_installtrue是否安装 mysqld_exporter
mysqld_exporter_topologyauto拓扑类型,支持 auto / ms / mgr
mysqld_exporter_portauto导出器端口,可自动计算或显式指定
mysqld_exporter_port_auto_base9104自动端口的起始基线
mysqld_exporter_port_auto_mysql_base3306自动端口换算时对应的 MySQL 基线端口
mysqld_exporter_install_typedbbot安装方式,支持 dbbot / pmm / package
mysqld_exporter_packagemysqld_exporter-0.18.0.linux-amd64.tar.gzpackage 模式下使用的官方安装包名
mysqlrouter_exporter_installtrue是否安装 mysqlrouter_exporter
mysqlrouter_exporter_install_typedbbot安装方式,支持 dbbot / package
mysqlrouter_exporter_version0.0.1默认独立项目版本号
mysqlrouter_exporter_packagemysqlrouter_exporter_0.0.1_linux_amd64.tar.gzpackage 模式下使用的 release 包名
mysqlrouter_exporter_urlhttps://github.com/fanderchan/mysqlrouter_exporter/releases/download/v0.0.1/mysqlrouter_exporter_0.0.1_linux_amd64.tar.gzpackage 模式下使用的 release 包下载地址
mysqlrouter_exporter_port9165mysqlrouter_exporter 监听端口
mysqlrouter_exporter_api_base_urlhttps://127.0.0.1:8443/api/20190715Router REST API 地址
mysqlrouter_exporter_api_user / mysqlrouter_exporter_api_passwordrouter_api_user / Dbbot_router_api_user@8888Router API 认证账号
mysqlrouter_exporter_insecure_skip_verifytrue是否跳过 Router HTTPS 证书校验

端口自动计算规则:

  • mysqld_exporter_port: auto 时,端口按 9104 + mysql_port - 3306 计算。
  • mysqld_exporter_topology: auto 时,dbbot 会自动检查 performance_schema.replication_group_members,有成员就按 mgr 处理,否则按 ms 处理。
  • mysqlrouter_exporter 默认依赖 Router REST API;如果你修改了 Router 的 http 端口或绑定地址,这里也要同步调整。
  • mysqlrouter_exporter_install_type: dbbot 使用发行包内置二进制;package 则按 mysqlrouter_exporter_url 下载独立项目 release 包。

6.1 依赖链速记

Router 链路:

  • innodb_cluster.yml
  • innodb_cluster_router.yml
  • router_exporter_install.yml
  • dbbotctl exporter register -t router
  • router_unsafe_uninstall.yml(需要清理 Router 时)

MHA 链路:

  • mha.yml
  • mha_unsafe_uninstall.yml(需要同时清理传统 MHA 和 MySQL 实例时)
  • mha_go.yml
  • mha_go_unsafe_uninstall.yml(需要同时清理 MHA-Go 和 MySQL 实例时)

MySQL exporter 链路:

  • single_node.yml / master_slave.yml / mgr.yml
  • node_exporter_install.yml
  • mysqld_exporter_install.yml
  • dbbotctl exporter register -t node
  • dbbotctl exporter register -t mysql

7. MySQL 8.4 clone 备份变量

文件:playbooks/vars/var_backup_script_8.4.yml

变量默认值作用
backup_topologyauto备份拓扑识别方式,支持 auto / ms / mgr / mic / single
backup_scopeprimary_only备份目标范围,支持 primary_only / replica_one / replica_all / all / selected
backup_preferred_host""backup_scope=selected 时必填
backup_base_dir/backup备份根目录
backup_script_dir{{ mysql_data_dir_base }}/scripts备份脚本目录
backup_script_path{{ backup_script_dir }}/backup_clone{{ mysql_port }}.shclone 备份脚本路径
backup_schedule_script_path{{ backup_script_dir }}/backup_schedule{{ mysql_port }}.sh调度脚本路径
backup_purge_script_path{{ backup_script_dir }}/backup_purge{{ mysql_port }}.sh清理脚本路径
backup_config_path{{ backup_script_dir }}/backup_clone{{ mysql_port }}.conf备份配置文件路径
backup_keep_full2保留的全量快照数
backup_keep_binlog_days7保留的 binlog 天数
backup_cron0 2 * * *定时任务表达式

说明:

  • backup_scope=selected 时,backup_preferred_host 必须显式填写。
  • backup_cron 目前会在 pre_tasks 中做 5 段 cron 格式校验。

8. MySQL 8.4 PITR 恢复变量

文件:playbooks/vars/var_restore_pitr_8.4.yml

变量默认值作用
restore_modenew_instance恢复模式,支持 new_instance / existing_instance
backup_snapshot_id""备份快照标识,必填
backup_source_mysql_port3306备份源实例端口
restore_target_mysql_port3388恢复目标实例端口
backup_root_dir/backup恢复机上的备份根目录
backup_dir{{ backup_root_dir }}/mysql{{ backup_source_mysql_port }}/{{ backup_snapshot_id }}目标恢复目录
enable_pitrtrue是否在 clone 恢复后继续回放 binlog
pitr_target_time""基于时间点停止恢复,格式 YYYY-MM-DD HH:MM:SS
pitr_target_gtid""基于单个 GTID 停止恢复,格式 uuid:seq
pitr_target_gtid_inclusivefalseGTID 模式下是否包含目标 GTID 本身
restore_mysql_host / restore_mysql_user / restore_mysql_password127.0.0.1 / {{ mysql_admin_user }} / {{ mysql_admin_127_password }}回放 binlog 时连接恢复实例的认证信息
restore_allow_nonempty_datadirfalse是否允许清空前已有数据目录并继续恢复
restore_mysql_start_timeout300恢复阶段等待 MySQL 启动的超时秒数
mysql_port{{ restore_target_mysql_port }}让恢复流程中的 MySQL 端口与目标端口保持一致

恢复前约束:

  1. enable_pitr: true 时,pitr_target_timepitr_target_gtid 必须二选一。
  2. restore_pitr_8.4.yml 只支持 db_type: mysqlmysql_version: 8.4.x

9. 5.7 备份脚本与卸载说明

backup_script.ymlunsafe_uninstall.yml 没有单独的 vars/*.yml 参数文件,主要依赖以下配置来源:

  • 5.7 备份脚本依赖 common_config.ymladvanced_config.yml
  • 是否自动创建备份账号由 fcs_backup_script_create_backup_user 控制
  • 卸载剧本删除的目录范围,来自 advanced_config.yml 中的 datadirtmpdirbinlog_dirrelaylog_dirredolog_dir
  • 卸载目标实例本身,由 common_config.yml 当前生效的 mysql_port 决定

补充说明:

  • 当前 backup_script.yml 面向 MySQL 5.7,备份保留策略主要写在 role 模板里,而不是公开变量文件里。
  • 当前 unsafe_uninstall.yml 会保留软件基目录、Linux 用户和 my.cnf,但删除范围仍由 advanced_config.yml 决定;在当前默认布局下,它会删除实例数据目录和日志目录。执行前仍要求人工确认。

10. 推荐阅读顺序

  1. MySQL 主从部署快速开始
  2. MySQL 自定义目录布局
  3. MySQL 8.4 备份与恢复
  4. MySQL InnoDB Cluster 部署说明
  5. MySQL MHA 部署说明