Ceolfhoireann le haghaidh MySQL: cén fáth nach féidir leat tionscadal locht-fhulangach a thógáil gan é

Thosaigh aon tionscadal mór le cúpla freastalaithe. Ar dtús bhí freastalaí DB amháin ann, ansin cuireadh sclábhaithe leis chun an léamh a scála. Agus ansin - stop! Tá máistir amháin, ach tá go leor sclábhaithe; má fhágann ceann de na sclábhaithe, ansin beidh gach rud go breá, ach má fhágann an máistir, beidh sé dona: tá downtime, admins ag iarraidh a ardú ar an bhfreastalaí. Cad atá le déanamh? In áirithe máistir. Scríobh mo chomhghleacaí Pavel faoi seo cheana féin Airteagal, ní dhéanfaidh mé arís é. Ina áit sin, inseoidh mé duit cén fáth go dteastaíonn Ceolfhoireann uait le haghaidh MySQL!

Tosaímid leis an bpríomhcheist: "Conas a aistrímid an cód go meaisín nua nuair a fhágann an máistir?"

  • Is maith liom an scéim le VIP (IP Fíorúil) an chuid is mó, beimid ag caint faoi thíos. Is é an ceann is simplí agus is soiléire, cé go bhfuil teorannú soiléir aige: ní mór don mháistir a chuirfimid in áirithe a bheith sa deighleog L2 leis an meaisín nua, is é sin, is féidir linn dearmad a dhéanamh ar an dara DC. Agus, ar bhealach cairdiúil, má leanann tú an riail go bhfuil L2 mór olc, toisc nach bhfuil L2 ach in aghaidh an raca, agus tá L3 idir na racaí, agus tá srianta níos mó fós ag scéim den sórt sin.
  • Is féidir leat ainm DNS a scríobh sa chód agus é a réiteach trí /etc/hosts. Go deimhin, ní bheidh aon réiteach. Buntáiste na scéime: níl aon teorannú tréith ag an gcéad mhodh, is é sin, is féidir tras-DC a eagrú. Ach ansin tagann an cheist fhollasach: cé chomh tapa agus is féidir linn an t-athrú a sheachadadh chuig /etc/hosts trí Puppet-Ansible?
  • Is féidir leat an dara modh a athrú beagán: caching DNS a shuiteáil ar gach freastalaí gréasáin, trína rachaidh an cód chuig an máistirbhunachar sonraí. Is féidir leat TTL 60 a shocrú don iontráil seo in DNS. Dealraíonn sé, má chuirtear i bhfeidhm i gceart é, go bhfuil an modh maith.
  • Scéim le fionnachtain seirbhíse, a thugann le tuiscint go n-úsáidfear Consal agus araile.
  • Интересный вариант с ProxySQL. Ní mór duit an trácht go léir a threorú go MySQL trí ProxySQL; Is féidir le ProxySQL féin a chinneadh cé hé an máistir. Dála an scéil, is féidir leat léamh faoi cheann de na roghanna maidir le húsáid an táirge seo i mo Airteagal.

Chuir údar Orchestrator, ag obair i Github, an chéad scéim i bhfeidhm le VIP ar dtús, agus ansin é a thiontú go scéim le consal.

Leagan amach tipiciúil bonneagair:

Ceolfhoireann le haghaidh MySQL: cén fáth nach féidir leat tionscadal locht-fhulangach a thógáil gan é
Déanfaidh mé cur síos láithreach ar na cásanna soiléire nach mór a chur san áireamh:

  • Níor cheart an seoladh VIP a chlárú sa chumraíocht ar aon cheann de na freastalaithe. A ligean ar a shamhlú cás: an máistir atosaigh, agus cé go raibh sé luchtú, Orchestrator chuaigh i mód failover agus rinne sé ar cheann de na sclábhaithe ina mháistir; ansin d'ardaigh an sean-mháistir, agus anois tá an VIP ar dhá charr. Tá sé seo go dona.
  • Для оркестратора нужно будет написать скрипт обращения к старому мастеру и новому мастеру. На старом необходимо выполнять ifdown, а на новом мастере — ifup vip. Хорошо бы еще в этот скрипт вписать, что в случае failover порт на коммутаторе старого мастера просто тушится, чтобы избежать любого splitbrain.
  • После того, как Orchestrator вызвал ваш скрипт, чтобы сначала снять VIP и/или потушить порт на коммутаторе, а затем на новом мастере вызвал скрипт поднятия VIP, не забудьте командой arping сказать всем, что новый VIP теперь тут.
  • На всех слейвах должно быть read_only=1, а как только промоутируете слейв до мастера, у него должно стать read_only=0.
  • Ná déan dearmad gur féidir le sclábhaí ar bith atá roghnaithe againn le haghaidh seo a bheith ina mháistir (Tá meicníocht rogha iomlán ag an gCeolfhoireann chun a sclábhaí a mheas mar iarrthóir ar mháistir nua sa chéad áit, cé acu sa dara háit, agus cén sclábhaí ba chóir. gan a roghnú ar chor ar bith máistir). Má thagann an daor chun bheith ina mháistir, ansin fanfaidh ualach an sclábhaí air agus cuirfear ualach an mháistir leis, ní mór é seo a chur san áireamh.

Cén fáth a bhfuil Ceolfhoireann ag teastáil uait mura bhfuil ceann agat?

  • У Orchestrator очень удобный графический интерфейс, отображающий всю топологию (смотрите скриншот ниже).
  • Is féidir le ceolfhoirne a rianú cé na sclábhaithe atá tite ar gcúl, agus cá háit a bhfuil macasamhlú briste go ginearálta (tá scripteanna againn ceangailte leis an gCeolfhoireann chun SMS a sheoladh).
  • Orchestrator говорит вам, на каких слейвах есть ошибка GTID errant.

Comhéadan Ceolfhoirne:

Ceolfhoireann le haghaidh MySQL: cén fáth nach féidir leat tionscadal locht-fhulangach a thógáil gan é
Cad é earráid GTID?

Tá dhá phríomhriachtanas ann don Cheolfhoireann a bheith ag obair:

  • Is gá go mbeadh GTID bréagach cumasaithe ar gach meaisín sa bhraisle MySQL; tá GTID cumasaithe againn.
  • Нужно, чтобы везде был один тип бинлогов, можно statement. У нас была такая конфигурация, при которой на мастере и на большинстве слейвов был Row, а на двух исторически остался режим Mixed. В результате эти слейвы Orchestrator просто не захотел подключать в новому мастеру.

Cuimhnigh gurb é an rud is tábhachtaí i sclábhaí táirgeachta ná a chomhsheasmhacht leis an máistir! Má tá Aitheantas Idirbheart Domhanda (GTID) cumasaithe agat ar do mháistir agus ar do sclábhaí, is féidir leat an fheidhm gtid_subset a úsáid chun fáil amach an bhfuil na hiarratais chéanna ar athruithe sonraí curtha i gcrích ar na meaisíní seo. Is féidir leat tuilleadh a léamh faoi seo anseo.

Mar sin, taispeánann Ceolfhoireann tríd an earráid GTID duit go bhfuil idirbhearta ar an sclábhaí nach bhfuil ar an máistir. Cén fáth go bhfuil sé seo ag tarlú?

  • Read_only= Níl 1 cumasaithe ar an sclábhaí, cheangail duine éigin agus chuir sé iarratas chun sonraí a athrú i gcrích.
  • Super_read_only= Níl 1 cumasaithe ar an sclábhaí, ansin, tar éis don riarthóir an freastalaí a mheascadh, chuaigh sé isteach agus rinne sé an t-iarratas ansin.
  • Má chuir tú an dá phointe roimhe seo san áireamh, tá cleas amháin eile ann: i MySQL, téann iarratas chun boscaí bruscair a shruthlú chuig an mbosca bruscair freisin, mar sin ag an gcéad shruthú, beidh earráid GTID le feiceáil ar an máistir agus ar na sclábhaithe go léir. Conas é seo a sheachaint? Thug Perona-5.7.25-28 isteach an socrú binlog_skip_flush_commands=1, a chuireann cosc ​​ar scríobh sruthlaithe chuig boscaí bruscair. Tá ceann seanbhunaithe ar shuíomh Gréasáin mysql.com fabht.

Lig dom achoimre ar gach ceann de na thuas. Mura bhfuil tú ag iarraidh Orchestrator a úsáid i mód failover fós, ansin cuir i mód breathnadóireachta é. Ansin beidh léarscáil agat i gcónaí roimh do shúile ar idirghníomhú meaisíní MySQL agus faisnéis amhairc faoi cén cineál macasamhlú atá ar gach meaisín, cibé an bhfuil na sclábhaithe tite ar gcúl, agus is tábhachtaí, cé chomh comhsheasmhach agus atá siad leis an máistir!

Is í an cheist fhollasach: “Conas ar cheart don Cheolfhoireann oibriú?” Caithfidh sé máistir nua a roghnú as na sclábhaithe reatha, agus ansin gach sclábhaí a athcheangal leis (is é seo a bhfuil gá le GTID; má úsáideann tú an seanmheicníocht le binlog_name agus binlog_pos, ansin aistrigh sclábhaí ón máistir reatha go ceann nua go simplí dodhéanta!). Sula raibh Ceolfhoireann againn, bhí orm é seo go léir a dhéanamh de láimh uair amháin. Bhí an seanmháistir ar crochadh mar gheall ar rialtóir bugaí Adaptec; bhí thart ar 10 sclábhaí aige. B'éigean dom VIP a aistriú ón máistir go ceann de na sclábhaithe agus gach sclábhaí eile a athcheangal leis. Cé mhéad consól a bhí orm a oscailt, cé mhéad orduithe comhuaineacha a chuaigh mé isteach ... Bhí orm fanacht go dtí 3 am, bain an t-ualach ó na sclábhaithe go léir ach amháin dhá cheann, déan an chéad mheaisín as dhá mháistir, ceangail an dara meaisín láithreach dó, mar sin ceangail na sclábhaithe eile go léir leis an máistir nua agus cuir an t-ualach ar ais. Ar an iomlán, uafásach ...

Conas a oibríonn Orchestrator nuair a théann sé isteach sa mhód teipthe? Is furasta é seo a léiriú le sampla de chás inar mian linn máistir a dhéanamh ar mheaisín níos cumhachtaí agus níos nua-aimseartha ná mar atá againn anois.

Ceolfhoireann le haghaidh MySQL: cén fáth nach féidir leat tionscadal locht-fhulangach a thógáil gan é
Léiríonn an figiúr lár an phróisis. Cad atá déanta cheana féin go dtí an pointe seo? Dúirt muid go raibh muid ag iarraidh sclábhaí éigin a dhéanamh mar an máistir nua, thosaigh an tOrdaitheoir ag athcheangal gach sclábhaithe eile leis, agus an máistir nua ag feidhmiú mar mheaisín iompair. Leis an scéim seo, ní tharlaíonn aon earráidí, oibríonn na sclábhaithe go léir, baineann Orchestrator an VIP den seanmháistir, aistríonn sé go dtí an ceann nua é, déanann read_only=0 é agus déanann sé dearmad ar an seanmháistir. Gach! Is é downtime ár seirbhíse an t-am aistrithe VIP, is é sin 2-3 soicind.

Sin uile don lá inniu, go raibh maith agat gach duine. Beidh an dara alt faoi Orchestrator go luath. Sa scannán cáiliúil Sóivéadach “Garage,” dúirt carachtar amháin, “ní rachainn ar thaiscéalaíocht leis!” Mar sin, a Cheolfhodair, rachainn leat ar thaiscéalaíocht!

Foinse: will.com

Add a comment