欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【沃趣科技】MySQL高可用工具Orchestrator系列二:復(fù)制拓?fù)涞陌l(fā)現(xiàn)

沃趣科技作為國內(nèi)領(lǐng)先的數(shù)據(jù)庫云平臺解決方案提供商,一直致力于企業(yè)級數(shù)據(jù)庫云平臺產(chǎn)品的研發(fā),為用戶提供高性能、高可用、可擴(kuò)展的的數(shù)據(jù)庫云環(huán)境及不同業(yè)務(wù)場景需求的數(shù)據(jù)庫平臺,滿足客戶對極致性能、數(shù)據(jù)安全、容災(zāi)備份、業(yè)務(wù)永續(xù)等需求。沃趣科技憑借專業(yè)的團(tuán)隊(duì),優(yōu)質(zhì)的產(chǎn)品,前沿的技術(shù),貼心的服務(wù)贏得了客戶的信任與尊重,也獲得了市場的認(rèn)同。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)類烏齊,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

————————————————————————————————————

背   景

上篇文章講了orchestrator單節(jié)點(diǎn)的安裝。本篇文章我們繼續(xù)探索orchestrator的旅程,講一講orchestrator是如何實(shí)現(xiàn)數(shù)據(jù)庫實(shí)例復(fù)制拓?fù)涞陌l(fā)現(xià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

這里會有一個(gè)問題需要注意:

假設(shè)生產(chǎn)環(huán)境存在兩臺數(shù)據(jù)庫服務(wù)器主機(jī)名一樣,比如都是localhost.localdomain;并且,orch配置參數(shù)HostnameResolveMethod使用了默認(rèn)的"default"、MySQLHostnameResolveMethod使用了默認(rèn)的"@@hostname"。那么,orch在 找的時(shí)候,會將用戶輸入的I P 地址解析成hostname,但因?yàn)榇嬖趦膳_hostname一樣的機(jī)器,所以可能會導(dǎo)致出錯,即orch找不到正確的那臺服務(wù)器。

因此,最好保證線上環(huán)境,不同服務(wù)器的主機(jī)名都不同。

給定主庫,如何發(fā)現(xiàn)從庫

由參數(shù)DiscoverByShowSlaveHosts控制。如果為true,則會嘗試先通過show slave hosts命令去發(fā)現(xiàn)從庫。此時(shí)會有三種情況。

  • 從庫設(shè)置了正確的report_host,show slave hosts中的host字段顯示正確的IP,則直接通過show slave hosts發(fā)現(xiàn)從庫。

  • 從庫設(shè)置了錯誤的report_host,show slave hosts中的host字段顯示錯誤的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í),會報(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只會顯示復(fù)制進(jìn)程使用的套接字端口,而不是replica實(shí)例監(jiān)聽的端口。所以需要用戶在配置文件中設(shè)置好report_host和report_port參數(shù),并且在orch的配置文件中將參數(shù)DiscoverByShowSlaveHosts設(shè)置為true。

注意點(diǎn)

report_port  

report_port其實(shí)可以不在mysql配置文件中配置,因?yàn)閞eport_port默認(rèn)會被設(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會假設(shè)從庫監(jiān)聽的是和主庫相同的端口,那么這個(gè)slave就無法被orch自動發(fā)現(xiàn),需要人工手動進(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會先嘗試通過show slave hosts發(fā)現(xiàn)從庫,但會報(bào)錯,然后再通過processlist去發(fā)現(xiàn)從庫。這個(gè)時(shí)候orch會假設(shè)從庫監(jiān)聽的是和主庫相同的端口(并不會使用show slave hosts中得到的port的信息,因?yàn)闆]有設(shè)置report_host,就無法將port和host對應(yīng)),如果此時(shí)主庫使用的是3306端口,那么這個(gè)slave就自動發(fā)現(xiàn)不了。

##這里我的master是10.10.30.230:3307,slave是10.10.30.249:3306,且從庫沒有設(shè)置report_host
// show slave hosts報(bào)錯信息如下
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í)需要手動進(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。

參考文章

https://github.com/github/orchestrator/blob/master/docs/supported-topologies-and-versions.md
http://code.openark.org/blog/mysql/the-importance-of-report_host-report_port


|  作者簡介

韓杰  沃趣科技高級數(shù)據(jù)庫工程師

專注MySQL數(shù)據(jù)庫三年,精通MySQL體系結(jié)構(gòu),數(shù)據(jù)庫優(yōu)化,trouble shooting。服務(wù)過多家銀行客戶,熟悉銀行業(yè)務(wù)及系統(tǒng)下數(shù)據(jù)庫不同架構(gòu)使用場景。熟悉MySQL主從復(fù)制原理,及應(yīng)用的各種高可用場景。

網(wǎng)站標(biāo)題:【沃趣科技】MySQL高可用工具Orchestrator系列二:復(fù)制拓?fù)涞陌l(fā)現(xiàn)
分享網(wǎng)址:http://chinadenli.net/article38/jiippp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、靜態(tài)網(wǎng)站標(biāo)簽優(yōu)化、網(wǎng)站營銷微信小程序、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司