国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL高可用工具Orchestrator系列 復(fù)制拓?fù)涞陌l(fā)掘

2024-07-24 12:31:53
字體:
供稿:網(wǎng)友
     沃趣科技作為國內(nèi)領(lǐng)先的數(shù)據(jù)庫云平臺(tái)解決方案提供商,一直致力于企業(yè)級(jí)數(shù)據(jù)庫云平臺(tái)產(chǎn)品的研發(fā),為用戶提供高性能、高可用、可擴(kuò)展的的數(shù)據(jù)庫云環(huán)境及不同業(yè)務(wù)場景需求的數(shù)據(jù)庫平臺(tái),滿足客戶對(duì)極致性能、數(shù)據(jù)安全、容災(zāi)備份、業(yè)務(wù)永續(xù)等需求。沃趣科技憑借專業(yè)的團(tuán)隊(duì),優(yōu)質(zhì)的產(chǎn)品,前沿的技術(shù),貼心的服務(wù)贏得了客戶的信任與尊重,也獲得了市場的認(rèn)同。
 
      給定實(shí)例,如何發(fā)現(xiàn)自己
      這里涉及到兩個(gè)參數(shù):HostnameResolveMethod、MySQLHostnameResolveMethod
 
       HostnameResolveMethod有三個(gè)選項(xiàng):"cname"、"default"、"none"
 
cname:通過CNAME做域名解析(resolve hostname)
default:不做特別的解析, no special resolving via net protocols
none:do nothing
MySQLHostnameResolveMethod有三個(gè)選項(xiàng):"@@hostname"、"@@report_host"、""
 
@@hostname: select @@hostname
@@report_host: select @@report_host
"": do nothing
這里會(huì)有一個(gè)問題需要注意:
 
假設(shè)生產(chǎn)環(huán)境存在兩臺(tái)數(shù)據(jù)庫服務(wù)器主機(jī)名一樣,比如都是localhost.localdomain;并且,orch配置參數(shù)HostnameResolveMethod使用了默認(rèn)的"default"、MySQLHostnameResolveMethod使用了默認(rèn)的"@@hostname"。那么,orch在 找的時(shí)候,會(huì)將用戶輸入的I P 地址解析成hostname,但因?yàn)榇嬖趦膳_(tái)hostname一樣的機(jī)器,所以可能會(huì)導(dǎo)致出錯(cuò),即orch找不到正確的那臺(tái)服務(wù)器。
 
因此,最好保證線上環(huán)境,不同服務(wù)器的主機(jī)名都不同。
 
給定主庫,如何發(fā)現(xiàn)從庫
由參數(shù)DiscoverByShowSlaveHosts控制。如果為true,則會(huì)嘗試先通過show slave hosts命令去發(fā)現(xiàn)從庫。此時(shí)會(huì)有三種情況。
 
從庫設(shè)置了正確的report_host,show slave hosts中的host字段顯示正確的IP,則直接通過show slave hosts發(fā)現(xiàn)從庫。
從庫設(shè)置了錯(cuò)誤的report_host,show slave hosts中的host字段顯示錯(cuò)誤的IP,則orchestrator找不到從庫。
         - 如果IP ping不通,則報(bào)如下信息:
 
 
[mysql] 2019/10/29 17:57:24 driver.go:81: net.Error from Dial()': dial tcp 10.10.30.222:3306: i/o timeout
 
[mysql] 2019/10/29 17:57:25 driver.go:81: net.Error from Dial()': dial tcp 10.10.30.222:3306: i/o timeout
 
[mysql] 2019/10/29 17:57:26 driver.go:81: net.Error from Dial()': dial tcp 10.10.30.222:3306: i/o timeout
 
2019-10-29 17:57:26 ERROR driver: bad connection
 
 
- 如果IP ping的通,則可能報(bào)如下信息:
 
 
2019-10-29 18:15:34 ERROR dial tcp 10.10.30.228:3306: connect: connection refused
 
2019-10-29 18:15:40 ERROR dial tcp 10.10.30.228:3306: connect: connection refused
 
2019-10-29 18:15:46 ERROR dial tcp 10.10.30.228:3306: connect: connection refused
 
2019-10-29 18:15:52 ERROR dial tcp 10.10.30.228:3306: connect: connection refused
 
// 或者
 
2019-10-29 18:11:11 ERROR Error 1045: Access denied for user 'orchestrator'@'10.10.30.146' (using password: YES)
 
WARNING: NamedStopwatch.Stop("instance") IsRunning is false
 
2019-10-29 18:11:17 ERROR Error 1045: Access denied for user 'orchestrator'@'10.10.30.146' (using password: YES)
 
WARNING: NamedStopwatch.Stop("instance") IsRunning is false
 
 
從庫沒有設(shè)置report_host,show slave hosts中的host字段顯示為空,則通過processlist發(fā)現(xiàn)從庫。
     - 此時(shí),會(huì)報(bào)如下信息:
 
 
2019-08-06 18:12:49 ERROR ReadTopologyInstance(10.10.30.129:3306) show slave hosts: ReadTopologyInstance(10.10.30.129:3306) 'show slave hosts' returned row with <host,port>: <,3306>
 
 
如果為false,則通過information_schema.processlist去發(fā)現(xiàn)從庫。
 
select substring_index(host, ':', 1) as slave_hostname from information_schema.processlist where command IN ('Binlog Dump', 'Binlog Dump GTID');
給定從庫,如何發(fā)現(xiàn)主庫
通過show slave status命令去發(fā)現(xiàn)主庫。
 
DiscoveryByShowSlaveHosts意義
既然show slave status命令顯示的host不一定準(zhǔn)確,那為什么還要加入DiscoverByShowSlaveHosts這個(gè)參數(shù)呢?
 
這個(gè)有幾種原因:
 
首先,MaxScale不支持PROCESSLIST,因此SHOW SLAVE HOSTS是唯一的選擇。
 
更重要的是,如果只是通過information_schema.processlist去發(fā)現(xiàn)從庫,master無法知道replica監(jiān)聽的是哪個(gè)端口。show processlist只會(huì)顯示復(fù)制進(jìn)程使用的套接字端口,而不是replica實(shí)例監(jiān)聽的端口。所以需要用戶在配置文件中設(shè)置好report_host和report_port參數(shù),并且在orch的配置文件中將參數(shù)DiscoverByShowSlaveHosts設(shè)置為true。
 
注意點(diǎn)
report_port其實(shí)可以不在mysql配置文件中配置,因?yàn)閞eport_port默認(rèn)會(huì)被設(shè)置成slave的端口。
 
 
The default value for this option is the port number actually used by the slave. This is also the default value displayed by SHOW SLAVE HOSTS.
 
 
DiscoverByShowSlaveHosts設(shè)置為false  
 
這種情況下,orch通過information_schema.processlist去發(fā)現(xiàn)從庫。如果slave的端口和master的不一樣,orch會(huì)假設(shè)從庫監(jiān)聽的是和主庫相同的端口,那么這個(gè)slave就無法被orch自動(dòng)發(fā)現(xiàn),需要人工手動(dòng)進(jìn)行發(fā)現(xiàn):
 
命令行:orchestrator-client -b hjj:hjj -c discover -i 10.10.30.230:3307
 
web界面:clusters/discover
 
實(shí)際生產(chǎn)環(huán)境中有可能主從端口不是同一個(gè),所以DiscoverByShowSlaveHosts不能為false。
 
DiscoverByShowSlaveHosts設(shè)置為true
 
如果沒有使用默認(rèn)的3306端口,比如slave用的是3308端口,然后在mysql的配置文件中又沒有配置report_host參數(shù),orch會(huì)先嘗試通過show slave hosts發(fā)現(xiàn)從庫,但會(huì)報(bào)錯(cuò),然后再通過processlist去發(fā)現(xiàn)從庫。這個(gè)時(shí)候orch會(huì)假設(shè)從庫監(jiān)聽的是和主庫相同的端口(并不會(huì)使用show slave hosts中得到的port的信息,因?yàn)闆]有設(shè)置report_host,就無法將port和host對(duì)應(yīng)),如果此時(shí)主庫使用的是3306端口,那么這個(gè)slave就自動(dòng)發(fā)現(xiàn)不了。
 
 
##這里我的master是10.10.30.230:3307,slave是10.10.30.249:3306,且從庫沒有設(shè)置report_host
 
// show slave hosts報(bào)錯(cuò)信息如下
 
2019-10-29 17:37:18 ERROR ReadTopologyInstance(10.10.30.230:3307) show slave hosts: ReadTopologyInstance(10.10.30.230:3307) 'show slave hosts' returned row with <host,port>: <,3306>
 
// 顯示10.10.30.249:3307連不上,說明通過processlist發(fā)現(xiàn)從庫用的是和主庫相同的端口
 
2019-10-29 17:37:24 ERROR dial tcp 10.10.30.249:3307: connect: connection refused
 
此時(shí)需要手動(dòng)進(jìn)行發(fā)現(xiàn):
 
命令行:orchestrator-client -b hjj:hjj -c discover -i 10.10.30.249:3306
 
web界面:clusters/discover
 
結(jié)  論
綜上考慮,我們需要將DiscoverByShowSlaveHosts設(shè)置為true,并且至少在mysql配置文件中設(shè)置正確的report_host。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸暨市| 辽阳县| 昭苏县| 厦门市| 西林县| 佛坪县| 望城县| 大理市| 长阳| 石台县| 洞口县| 鲁甸县| 常州市| 台安县| 石棉县| 镇雄县| 桓台县| 天祝| 丰顺县| 普兰店市| 江油市| 嫩江县| 墨竹工卡县| 高淳县| 全南县| 邢台市| 神木县| 三江| 佛坪县| 格尔木市| 博湖县| 镇远县| 茌平县| 呼和浩特市| 西昌市| 葵青区| 兴和县| 漳浦县| 土默特左旗| 莲花县| 玉环县|