MySQL 变量与参数说明
本文汇总 mysql_ansible 公开入口里最常改、最容易影响结果的变量,帮助你在部署、备份、恢复与监控接入前快速定位配置入口。
1. 通用变量
文件:playbooks/common_config.yml
| 变量 | 默认值 | 作用 |
|---|---|---|
mysql_version | 8.4.8 | MySQL 版本,当前公开能力主要围绕 5.7、8.0、8.4 |
mysql_port | 3306 | 实例端口,也是多个派生路径和服务名的计算基线 |
server_specs | auto | 服务器规格,可保持自动探测,也可写成 4c8g 这类固定规格 |
db_type | mysql | 数据库类型,支持 mysql / percona / greatsql |
mysql_packages_dir | ../downloads/ | MySQL 安装包目录,离线包通常放在这里 |
mysql_user / mysql_group | mysql / mysql | MySQL Linux 运行用户和组 |
mysql_data_dir_base | /database/{{ db_type }} | MySQL 数据、日志、配置目录的根路径 |
mysql_service_name | mysql{{ mysql_port }} | systemd 服务名,默认随端口变化 |
mysql_admin_user / mysql_admin_password | admin / Dbbot_admin@8888 | 管理账号与密码 |
mysql_rple_user / mysql_rple_password | repl / Dbbot_repl@8888 | 复制账号与密码 |
mysql_backup_user / mysql_backup_password | backup / Dbbot_backup@8888 | 备份账号与密码 |
mysql_monitor_user / mysql_monitor_password | monitor / Dbbot_monitor@8888 | mysqld_exporter 使用的监控账号 |
mysql_cluster_admin_user / mysql_cluster_admin_password | clusteradmin / Dbbot_clusteradmin@8888 | InnoDB Cluster 的 mysqlshell 管理账号 |
mysql_router_user / mysql_router_password | mysqlrouter / Dbbot_mysqlrouter@8888 | MySQL Router 读取 metadata 用的账号 |
mysql_character_set_server | utf8mb4 | 服务端字符集 |
mysql_transaction_isolation | READ-COMMITTED | 默认事务隔离级别 |
mysql_default_time_zone | +8:00 | MySQL 默认时区 |
mysql_max_connections | 1000 | 最大连接数 |
mysql_binlog_format | row | binlog 格式,MGR / InnoDB Cluster 场景尤其关键 |
fcs_auto_download_packages | true | 控制节点是否自动下载 MySQL / Shell / Router / Exporter 包 |
fcs_allow_dbbot_default_passwd | false | 是否允许使用 dbbot 公开默认密码继续执行 |
fcs_create_mysql_fast_login | true | 是否为 mysql 用户生成 db3306 这类快捷登录命令 |
fcs_backup_script_create_backup_user | true | 备份脚本部署时是否自动创建备份账号 |
fcs_role_mysqld_exporter_create_monitor_user | true | 部署 mysqld_exporter 时是否自动创建监控账号 |
fcs_mysql_use_jemalloc | false | 是否显式启用 jemalloc preload |
fcs_mysql_allow_bundled_jemalloc_fallback | false | 当系统仓没有 jemalloc 时,是否允许退回仓内 bundled RPM |
fcs_use_greatsql_ha | true | 是否启用 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 }}/etc | my.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 }}/log | binlog 与中继日志目录 |
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.ymlplaybooks/vars/var_mha.yml
| 变量 | 默认值 | 作用 |
|---|---|---|
master_ip | 192.0.2.131 | 主库 IP |
slave_ips | ['192.0.2.132', '192.0.2.133'] | 从库 IP 列表 |
sub_nets | 1% | MySQL 可信网段、可信域或可信 IP |
manager_ip | 192.0.2.133 | MHA manager 所在节点 |
net_work_interface | ens33 | MHA VIP 绑定网卡名 |
vip | 192.0.2.130 | MHA VIP |
vip_netmask | 32 | MHA VIP netmask |
说明:
master_ip、slave_ips必须和 inventory 中的主机一致。manager_ip不能与master_ip相同,通常放在从库节点上。- 当前实际变量名是
slave_ips,不是replica_ips。
4. MGR 变量
文件:playbooks/vars/var_mgr.yml
| 变量 | 默认值 | 作用 |
|---|---|---|
mysql_binlog_format | row | 覆盖通用配置,确保 MGR 使用 row |
mysql_mgr_port | 自动计算,例如 33061(当 mysql_port=3306) | Group Replication 通信端口 |
mysql_mgr_hosts | ['192.0.2.131', '192.0.2.132', '192.0.2.133'] | MGR 成员列表 |
sub_nets | 1% | 可信来源范围 |
greatsql_vip | 192.0.2.134 | GreatSQL HA 场景的 VIP |
greatsql_net_work_interface | ens33 | GreatSQL HA 绑定 VIP 的网卡 |
greatsql_netmask | 255.255.255.255 | GreatSQL HA netmask |
greatsql_group_replication_arbitrator | false | 是否启用仲裁节点 |
greatsql_group_replication_arbitrator_hosts | ['192.0.2.133'] | 仲裁节点列表 |
说明:
greatsql_*变量只在db_type: greatsql场景生效。mgr.yml默认交付结果是单主模式。
5. InnoDB Cluster 与 Router 变量
文件:
playbooks/vars/var_innodb_cluster.ymlplaybooks/vars/var_innodb_cluster_router.yml
InnoDB Cluster 变量:
| 变量 | 默认值 | 作用 |
|---|---|---|
innodb_cluster_name | myCluster{{ mysql_port }} | Cluster 名称 |
innodb_cluster_primary | 192.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=3306) | InnoDB Cluster 底层仍使用 MGR 端口 |
mysql_mgr_hosts | {{ innodb_cluster_members }} | MGR 成员列表 |
mysql_cluster_admin_user / mysql_cluster_admin_password | clusteradmin / Dbbot_clusteradmin@8888 | mysqlshell 管理账号 |
Router 变量:
| 变量 | 默认值 | 作用 |
|---|---|---|
router_enable_ha | true | 是否启用 keepalived 形式的 Router HA |
router_bootstrap_server | 192.0.2.131 | Router bootstrap 连接的 Cluster 节点 |
router_vip | 198.51.100.150 | Router HA VIP |
router_net_work_interface | ens33 | VIP 绑定网卡 |
router_ha_nodes | 两节点示例 | Router HA 节点、角色和优先级列表 |
router_vip_netmask | 32 | Router VIP netmask |
router_ports | rw/ro/http... 字典 | Router 暴露端口、是否启用和是否纳入健康检查 |
max_total_connections | 1000 | Router 总连接上限 |
router_rest_api_bind_address | 127.0.0.1 | Router REST API 监听地址 |
router_rest_api_auth_mode | file | REST API 鉴权方式 |
router_rest_api_file_user / router_rest_api_file_password | router_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.ymlplaybooks/vars/var_router_exporter_install.yml
| 变量 | 默认值 | 作用 |
|---|---|---|
node_exporter_install | true | 是否安装 node_exporter |
node_exporter_port | 9100 | node_exporter 监听端口 |
node_exporter_install_type | dbbot | 安装方式,支持 dbbot / pmm / package |
mysqld_exporter_install | true | 是否安装 mysqld_exporter |
mysqld_exporter_topology | ms | 拓扑类型,支持 ms / mgr |
mysqld_exporter_port | auto | 导出器端口,可自动计算或显式指定 |
mysqld_exporter_port_auto_base | 9104 | 自动端口的起始基线 |
mysqld_exporter_port_auto_mysql_base | 3306 | 自动端口换算时对应的 MySQL 基线端口 |
mysqld_exporter_install_type | dbbot | 安装方式,支持 dbbot / pmm / package |
mysqlrouter_exporter_install | true | 是否安装 mysqlrouter_exporter |
mysqlrouter_exporter_port | 9165 | mysqlrouter_exporter 监听端口 |
mysqlrouter_exporter_api_base_url | https://127.0.0.1:8443/api/20190715 | Router REST API 地址 |
mysqlrouter_exporter_api_user / mysqlrouter_exporter_api_password | router_api_user / Dbbot_router_api_user@8888 | Router API 认证账号 |
mysqlrouter_exporter_insecure_skip_verify | true | 是否跳过 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_topology | auto | 备份拓扑识别方式,支持 auto / ms / mgr / mic / single |
backup_scope | primary_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 }}.sh | clone 备份脚本路径 |
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_full | 2 | 保留的全量快照数 |
backup_keep_binlog_days | 7 | 保留的 binlog 天数 |
backup_cron | 0 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_mode | new_instance | 恢复模式,支持 new_instance / existing_instance |
backup_snapshot_id | "" | 备份快照标识,必填 |
backup_source_mysql_port | 3306 | 备份源实例端口 |
restore_target_mysql_port | 3388 | 恢复目标实例端口 |
backup_root_dir | /backup | 恢复机上的备份根目录 |
backup_dir | {{ backup_root_dir }}/mysql{{ backup_source_mysql_port }}/{{ backup_snapshot_id }} | 目标恢复目录 |
enable_pitr | true | 是否在 clone 恢复后继续回放 binlog |
pitr_target_time | "" | 基于时间点停止恢复,格式 YYYY-MM-DD HH:MM:SS |
pitr_target_gtid | "" | 基于单个 GTID 停止恢复,格式 uuid:seq |
pitr_target_gtid_inclusive | false | GTID 模式下是否包含目标 GTID 本身 |
restore_mysql_host / restore_mysql_user / restore_mysql_password | 127.0.0.1 / {{ mysql_admin_user }} / {{ mysql_admin_127_password }} | 回放 binlog 时连接恢复实例的认证信息 |
restore_allow_nonempty_datadir | false | 是否允许清空前已有数据目录并继续恢复 |
restore_mysql_start_timeout | 300 | 恢复阶段等待 MySQL 启动的超时秒数 |
mysql_port | {{ restore_target_mysql_port }} | 让恢复流程中的 MySQL 端口与目标端口保持一致 |
恢复前约束:
enable_pitr: true时,pitr_target_time与pitr_target_gtid必须二选一。restore_pitr_8.4.yml只支持db_type: mysql且mysql_version: 8.4.x。
9. 5.7 备份脚本与卸载说明
backup_script.yml 和 unsafe_uninstall.yml 没有单独的 vars/*.yml 参数文件,主要依赖以下配置来源:
- 5.7 备份脚本依赖
common_config.yml与advanced_config.yml - 是否自动创建备份账号由
fcs_backup_script_create_backup_user控制 - 卸载剧本删除的目录范围,来自
advanced_config.yml中的datadir、tmpdir、binlog_dir、relaylog_dir、redolog_dir
补充说明:
- 当前
backup_script.yml面向 MySQL5.7,备份保留策略主要写在 role 模板里,而不是公开变量文件里。 - 当前
unsafe_uninstall.yml会保留软件基目录、Linux 用户和my.cnf,但删除范围仍由advanced_config.yml决定;在当前默认布局下,它会删除实例数据目录和日志目录。执行前仍要求人工确认。