MySQL 变量与参数说明

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

1. 通用变量

文件:playbooks/common_config.yml

变量默认值作用
mysql_version8.4.8MySQL 版本,当前公开能力主要围绕 5.78.08.4
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_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 相关能力
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

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_linux_glibc_tag按版本和 OS 自动计算MySQL 二进制包 glibc 标记
mysql_linux_archive_suffix按版本和 OS 自动计算MySQL 安装包后缀
mysql_package由前述变量拼接最终实际使用的 MySQL 安装包名

建议:

  • 只有在自定义目录布局、离线包命名或恢复到特殊路径时,才建议改这一组变量。
  • unsafe_uninstall.yml 的清理范围也依赖这里的目录变量;在当前默认布局下,它会删除实例数据目录和日志目录。

3. 主从与 MHA 变量

文件:

  • playbooks/vars/var_master_slave.yml
  • playbooks/vars/var_mha.yml
变量默认值作用
master_ip192.0.2.131主库 IP
slave_ips['192.0.2.132', '192.0.2.133']从库 IP 列表
sub_nets1%MySQL 可信网段、可信域或可信 IP
manager_ip192.0.2.133MHA manager 所在节点
net_work_interfaceens33MHA VIP 绑定网卡名
vip192.0.2.130MHA VIP
vip_netmask32MHA VIP netmask

说明:

  • master_ipslave_ips 必须和 inventory 中的主机一致。
  • manager_ip 不能与 master_ip 相同,通常放在从库节点上。
  • 当前实际变量名是 slave_ips,不是 replica_ips

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_nets1%可信来源范围
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 场景生效。
  • 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_hatrue是否启用 keepalived 形式的 Router HA
router_bootstrap_server192.0.2.131Router bootstrap 连接的 Cluster 节点
router_vip198.51.100.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_ports.http.port 默认是 8443,后续 mysqlrouter_exporter 也默认从这个 REST API 取数。

6. Exporter 变量

文件:

  • playbooks/vars/var_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
mysqld_exporter_installtrue是否安装 mysqld_exporter
mysqld_exporter_topologyms拓扑类型,支持 ms / mgr
mysqld_exporter_portauto导出器端口,可自动计算或显式指定
mysqld_exporter_port_auto_base9104自动端口的起始基线
mysqld_exporter_port_auto_mysql_base3306自动端口换算时对应的 MySQL 基线端口
mysqld_exporter_install_typedbbot安装方式,支持 dbbot / pmm / package
mysqlrouter_exporter_installtrue是否安装 mysqlrouter_exporter
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 计算。
  • mysqlrouter_exporter 默认依赖 Router REST API;如果你修改了 Router 的 http 端口或绑定地址,这里也要同步调整。

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

补充说明:

  • 当前 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 部署说明