{
//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"
]
}
