orchestrator系列1 - 配置文件详解
{
//DEBUG模式
"Debug": true,
//是否把日志输出到系统日志
"EnableSyslog": false,
//web http监听端口
"ListenAddress": ":3000",
//orch管理的MySQL账户
"MySQLTopologyUser": "root",
//orch管理的MySQL密码
"MySQLTopologyPassword": "123456",
//被管理MySQL的默认端口
"DefaultInstancePort": 3306,
//被管理的MySQL的用户密码配置文件
"MySQLTopologyCredentialsConfigFile": "",
"MySQLTopologySSLPrivateKeyFile": "",
"MySQLTopologySSLCertFile": "",
"MySQLTopologySSLCAFile": "",
"MySQLTopologySSLSkipVerify": true,
"MySQLTopologyUseMutualTLS": false,
//orch元数据存储
"MySQLOrchestratorHost": "127.0.0.1",
//orch元数据存储
"MySQLOrchestratorPort": 4306,
//orch元数据存储
"MySQLOrchestratorDatabase": "orchestrator",
//orch元数据存储
"MySQLOrchestratorUser": "orchestrator",
//orch元数据存储
"MySQLOrchestratorPassword": "123456",
//后端数据库用户名密码的配置文件
"MySQLOrchestratorCredentialsConfigFile": "",
"MySQLOrchestratorSSLPrivateKeyFile": "",
"MySQLOrchestratorSSLCertFile": "",
"MySQLOrchestratorSSLCAFile": "",
"MySQLOrchestratorSSLSkipVerify": true,
"MySQLOrchestratorUseMutualTLS": false,
//orch探测连接MySQL的超时时间
"MySQLConnectTimeoutSeconds": 1,
//在show full processlist之前通过show slave hosts来发现从节点;如果没有配置report_host则将其设置为false
"DiscoverByShowSlaveHosts": false,
//orch探测MySQL的间隔秒数
"InstancePollSeconds": 5,
"DiscoveryIgnoreReplicaHostnameFilters": [
"a_host_i_want_to_ignore[.]example[.]com",
".*[.]ignore_all_hosts_from_this_domain[.]example[.]com",
"a_host_with_extra_port_i_want_to_ignore[.]example[.]com:3307"
],
"UnseenInstanceForgetHours": 240, //忽略看不见的实例的小时数
"SnapshotTopologiesIntervalHours": 0, //快照拓扑调用之间的小时间隔。 默认值:0(禁用)
"InstanceBulkOperationsWaitTimeoutSeconds": 10, //在进行批量操作时等待单个实例的时间
//解析主机名相关
"HostnameResolveMethod": "default",
//解析主机名相关
"MySQLHostnameResolveMethod": "@@hostname",
//使用SHOW SLAVE STATUS进行延迟判断,力度为秒。使用pt-heartbeat,这提供了亚秒级的力度,允许自己设置查询「 "select absolute_lag from meta.heartbeat_view"
"ReplicationLagQuery": "",
//查询集群别名的query,信息放到每个被管理实例的meta库的cluster表中「"select ifnull(max(cluster_name), '') as cluster_alias from meta.cluster where anchor=1"
"DetectClusterAliasQuery": "SELECT SUBSTRING_INDEX(@@hostname, '.', 1)",
//查询集群Domain的query,信息放到每个被管理实例的meta库的cluster表中「select ifnull(max(cluster_domain), '') as cluster_domain from meta.cluster where anchor=1」
"DetectClusterDomainQuery": "",
//查询实例的别名
"DetectInstanceAliasQuery": "",
//一个组的正则表达式模式,从主机名中提取数据中心名称
"DataCenterPattern": "[.]([^.]+)[.][^.]+[.]mydomain[.]com",
//查询DataCenter的query, 会覆盖DataCenterPattern
"DetectDataCenterQuery": "",
//一个组的正则表达式模式,从主机名中提取物理环境信息
"PhysicalEnvironmentPattern": "[.]([^.]+[.][^.]+)[.]mydomain[.]com",
//可选查询(在拓扑实例上执行),返回实例的提升规则
"DetectPromotionRuleQuery": "",
"SkipBinlogServerUnresolveCheck": true, //跳过检查未解析的主机名是否解析为binlog服务器的相同主机名
"ExpiryHostnameResolvesMinutes": 60, //主机名解析到期之前的分钟数
"RejectHostnameResolvePattern": "", //不接受解析主机名的正则表达式。 这样做是为了避免因网络故障而存储错误
"ReasonableReplicationLagSeconds": 10, //复制延迟高于该值表示异常
"ProblemIgnoreHostnameFilters": [], //将与给定的regexp过滤器匹配的主机名最小化问题
"VerifyReplicationFilters": false, //在拓扑重构之前检查复制筛选器
"ReasonableMaintenanceReplicationLagSeconds": 20, //复制延迟高于该值将上下移动调整MySQL拓扑
"CandidateInstanceExpireMinutes": 60, //该时间之后,使用实例作为候选从库(在主故障转移时提升)的建议到期
"AuditLogFile": "", //审计操作的日志文件名。 空的时候禁用。
"AuditToSyslog": false, //审计操作是否写入系统日志
"RemoveTextFromHostnameDisplay": ".mydomain.com:3306", //去除群集/群集页面上的主机名的文本
"ReadOnly": false,
"AuthenticationMethod": "", //orch身份验证
"HTTPAuthUser": "", //HTTP基本身份验证的用户名,空表示禁用身份验证
"HTTPAuthPassword": "", //HTTP基本身份验证的密码,空表示禁用密码
"AuthUserHeader": "",
"PowerAuthUsers": [
"*"
],
"ClusterNameToAlias": {
"127.0.0.1": "test suite"
},
"PromotionIgnoreHostnameFilters": [], //禁止其中配置得hostname提升为主节点
"DetectSemiSyncEnforcedQuery": "", //检测是否强制半同步
"ServeAgentsHttp": false, //产生另一个专用于orchestrator-agent的HTTP接口
"AgentsServerPort": ":3001", //回调端口
"AgentsUseSSL": false,
"AgentsUseMutualTLS": false,
"AgentSSLSkipVerify": false,
"AgentSSLPrivateKeyFile": "",
"AgentSSLCertFile": "",
"AgentSSLCAFile": "",
"AgentSSLValidOUs": [],
"UseSSL": false,
"UseMutualTLS": false,
"SSLSkipVerify": false,
"SSLPrivateKeyFile": "",
"SSLCertFile": "",
"SSLCAFile": "",
"SSLValidOUs": [],
"URLPrefix": "",
"StatusEndpoint": "/api/status",
"StatusSimpleHealth": true,
"StatusOUVerify": false,
"AgentPollMinutes": 60, //代理轮询的分钟数
"UnseenAgentForgetHours": 6, //忘记不可见的代理的小时数
"StaleSeedFailMinutes": 60, //过时(无进展)被视为失败的分钟数
"SeedAcceptableBytesDiff": 8192, //种子源和目标数据大小之间的字节差异仍被视为成功复制
"PseudoGTIDPattern": "",
"PseudoGTIDPatternIsFixedSubstring": false,
"PseudoGTIDMonotonicHint": "asc:",
"DetectPseudoGTIDQuery": "", //可选查询,用于确定是否在实例上启用了伪gtid
"BinlogEventsChunkSize": 10000, //SHOW BINLOG | RELAYLOG EVENTS LIMIT的块大小。 较小意味着更少的锁定和工作要做
"SkipBinlogEventsContaining": [], //扫描/比较Pseudo-GTID的binlog时,跳过包含给定文本的条目。 这些不是正则表达式(扫描binlog时会消耗太多的CPU),只需查找子字符串。
"ReduceReplicationAnalysisCount": true, //如果为true,则复制分析将报告可能首先处理问题的可能性的实例。 如果为false,则为每个已知实例提供一个条目
//如果发生了故障切换,那么在这么长时间内再次故障将不会被发现,以避免抖动
"FailureDetectionPeriodBlockMinutes": 60,
//一旦集群经历了恢复,那么在这段时间内将阻止自动恢复,以避免抖动
"RecoveryPeriodBlockSeconds": 3600,
//自动恢复忽略这些机器
"RecoveryIgnoreHostnameFilters": [],
//只对匹配这些正则表达式模式的集群进行自动恢复(“*”模式匹配所有)
"RecoverMasterClusterFilters": [
"_master_pattern_"
],
//只对匹配这些正则表达式模式的集群进行自动恢复(“*”模式匹配所有内容,ABC复制模式中的B)
"RecoverIntermediateMasterClusterFilters": [
"_intermediate_master_pattern_"
],
//检测出故障时执行(在决定是否进行故障转移之前)
"OnFailureDetectionProcesses": [
"echo 'Detected {failureType} on {failureCluster}. Affected replicas: {countSlaves}' >> /tmp/recovery.log"
],
//在主变为只读之前立即执行。
"PreGracefulTakeoverProcesses": [
"echo 'Planned takeover about to take place on {failureCluster}. Master will switch to read_only' >> /tmp/recovery.log"
],
//在执行恢复操作之前立即执行。任何这些进程的失败(非零退出代码)都会中止恢复。
"PreFailoverProcesses": [
"echo 'Will recover from {failureType} on {failureCluster}' >> /tmp/recovery.log"
],
//在主节点成功恢复时执行
"PostMasterFailoverProcesses": [
]
//在主节点成功恢复或者从节点重新恢复主从同步时执行,ABC复制模式中的B
"PostIntermediateMasterFailoverProcesses": [
"echo 'Recovered from {failureType} on {failureCluster}. Failed: {failedHost}:{failedPort}; Successor: {successorHost}:{successorPort}' >> /tmp/recovery.log"
],
//每一步恢复成功时都会执行
"PostFailoverProcesses": [
"echo '(for all types) Recovered from {failureType} on {failureCluster}. Failed: {failedHost}:{failedPort}; Successor: {successorHost}:{successorPort}' >> /tmp/recovery.log"
],
//任何不成功的恢复时执行
"PostUnsuccessfulFailoverProcesses": [],
//在主从切换,旧的主节点挂在新的主节点上之后执行
"PostGracefulTakeoverProcesses": [
"echo 'Planned takeover complete' >> /tmp/recovery.log"
],
"CoMasterRecoveryMustPromoteOtherCoMaster": true, //当'false'时,任何都可以得到提升(候选人比其他人更受欢迎)。 当'true'时,将促进其他共同主人或否则失败
"DetachLostSlavesAfterMasterFailover": true, //恢复过程中可能会丢失一些副本。如果为true,将通过detach-replica命令强制中断其复制,以确保没有人认为它们完全正常运行。
//故障切换时将在新的Master上reset slave all并设置read_only = 0,默认true。
"ApplyMySQLPromotionAfterMasterFailover": true,
//如果为true(默认值:false),则不允许跨DC主故障转移,orchestrator将尽其所能仅在同一DC内进行故障转移,否则不进行故障转移。
"PreventCrossDataCenterMasterFailover": false,
//如果为true, 则不允许跨区域故障转移
"PreventCrossRegionMasterFailover": false,
//当主从同步延迟超过指定值时,主从切换失败;当使用该功能时,必须指定ReplicationLagQuery并使用heartbeat机制。
"FailMasterPromotionOnLagMinutes": 0,
//所有的从节点主从同步延迟过大时,是否停止主从切换
FailMasterPromotionIfSQLThreadNotUpToDate
//主从切换时所有的从节点都与主节点有同步延迟,是否等待SQL_thread线程应用完所有的relay log;和FailMasterPromotionIfSQLThreadNotUpToDate互斥
DelayMasterPromotionIfSQLThreadNotUpToDate
//一些replicas在主从切换过程中有可能丢失,这是orch将使用detach replica强制中断主从复制以提示
DetachLostReplicasAfterMasterFailover
//在主从切换时,时否应该在新升级的master上发出detach-replica-master-host,这样可以确保新master不会尝试复制正常之后的旧的master。在ApplyMySQLPromotionAfterMasterFailover:true时没有意义
"MasterFailoverDetachReplicaMasterHost": false,
//在主故障转移(包括失败的主副本和丢失的副本)之后丢失的任何服务器停机的分钟数。0表示禁用
"MasterFailoverLostInstancesDowntimeMinutes": 0,
//在崩溃恢复时,滞后超过给定分钟的副本仅在主/ IM被选出并执行进程后才在恢复过程的后期复活。 值为0将禁用此功能
"PostponeReplicaRecoveryOnLagMinutes": 0,
//建议将忽略与给定模式匹配的副本主机名
"OSCIgnoreHostnameFilters": [],
"GraphiteAddr": "",
"GraphitePath": "",
"GraphiteConvertHostnameDotsToUnderscores": true,
"ConsulAddress": "",
"ConsulAclToken": "",
//Raft
"RaftEnabled": true,
//Raft数据存储目录
"RaftDataDir": "/usr/local/src/orch/orch.data",
"RaftBind": "192.168.99.105",
"DefaultRaftPort": 10008,
"RaftNodes": [
"10.6.64.93",
"172.17.12.251",
"192.168.99.105"
]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!