Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

Aloha mai e nā kamaʻāina o Khabrovsk. Hoʻomaka nā papa ma ka hui mua o ka papa i kēia lā "PostgreSQL". Ma kēia mea, makemake mākou e haʻi iā ʻoe e pili ana i ka wehe ʻana o ka webinar ma kēia papa.

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

В haʻawina hāmama aʻe ua kamaʻilio mākou e pili ana i nā pilikia e kū nei nā ʻikepili SQL i ke au o nā ao a me nā Kubernetes. I ka manawa like, ua nānā mākou i ka hoʻololi ʻana a me ka hoʻololi ʻana o nā ʻikepili SQL ma lalo o ka mana o kēia mau pilikia.

Ua mālama ʻia ka webinar ʻO Valery Bezrukov, Google Cloud Practice Delivery Manager ma EPAM Systems.

I ka wā liʻiliʻi nā lāʻau...

ʻO ka mea mua, e hoʻomanaʻo kākou pehea i hoʻomaka ai ke koho ʻana o DBMS i ka hopena o ke kenekulia i hala. Eia naʻe, ʻaʻole paʻakikī kēia, no ka mea, ua hoʻomaka a pau ke koho ʻana i kahi DBMS i ia mau lā kahi e'ōlelo ai.

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

I ka hopena o nā makahiki 90 a me nā makahiki 2, ʻaʻohe mea i koho ʻia i ka wā e pili ana i nā ʻikepili scalable ʻoihana. ʻAe, aia nā IBM DBXNUMX, Sybase a me nā ʻikepili ʻē aʻe i hele mai a hele, akā ma ka laulā ʻaʻole lākou i ʻike nui ʻia e kūʻē i ka hope o Oracle. No laila, ua pili nā mākau o nā ʻenekinia o ia mau manawa i ke koho wale nō.

Pono ʻo Oracle DBA e hiki ke:

  • e hoʻouka i ka Oracle Server mai ka pahu hoʻolaha;
  • hoʻonohonoho ʻo Oracle Server:

  • init.ora;
  • listener.ora;

- hana:

  • nā papa ʻaina;
  • papahana;
  • mea hoʻohana;

- hana i ka hoʻihoʻi a hoʻihoʻi;
- hoʻokō i ka nānā ʻana;
- hana me nā noi suboptimal.

I ka manawa like, ʻaʻohe koi kūikawā mai Oracle DBA:

  • hiki ke koho i ka DBMS maikaʻi loa a i ʻole ka ʻenehana ʻē aʻe no ka mālama ʻana a me ka hoʻoili ʻana i ka ʻikepili;
  • hāʻawi i ka loaʻa kiʻekiʻe a me ka scalability ākea (ʻaʻole kēia he pilikia DBA i nā manawa a pau);
  • ʻike maikaʻi i ke kumuhana, ka ʻenehana, ka hoʻolālā noi, OS;
  • hoʻouka a wehe i ka ʻikepili, neʻe i ka ʻikepili ma waena o nā DBMS like ʻole.

Ma keʻano laulā, inā mākou e kamaʻilio e pili ana i ke koho i kēlā mau lā, ua like ia me ka koho ma kahi hale kūʻai Soviet i ka hopena o nā makahiki 80:

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

ʻO ko mākou manawa

Mai ia manawa, ʻoiaʻiʻo, ua ulu nā kumulāʻau, ua loli ka honua, a ua lilo ia i mea penei:

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

Ua loli hou ka mākeke DBMS, e like me ka mea i ʻike maopopo ʻia mai ka hōʻike hou loa mai Gartner:

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

A ma ʻaneʻi e hoʻomaopopo ʻia ʻo nā ao, ke ulu nei ka kaulana, ua noho i kā lākou niche. Inā heluhelu mākou i ka hōʻike like ʻo Gartner, e ʻike mākou i kēia mau hopena:

  1. Nui nā mea kūʻai aku ma ke ala e neʻe ai i nā noi i ke ao.
  2. Hōʻike mua ʻia nā ʻenehana hou i ke ao a ʻaʻole ia he mea ʻoiaʻiʻo e neʻe lākou i nā ʻōnaehana non-cloud.
  3. Ua lilo ke kumu kūʻai uku-like-you-go i mea maʻamau. Makemake nā kānaka a pau e uku wale no ka mea a lākou e hoʻohana ai, ʻaʻole kēia he ʻano, akā he ʻōlelo ʻoiaʻiʻo wale nō.

He aha kēia manawa?

I kēia lā aia mākou a pau i ke ao. A ʻo nā nīnau e kū mai nei no mākou he mau nīnau koho. A he mea nui ia, ʻoiai inā e kamaʻilio wale mākou e pili ana i ke koho ʻana o nā ʻenehana DBMS i ka format On-premises. Ua mālama pū mākou i nā lawelawe a me SaaS. No laila, ʻoi aku ka paʻakikī o ka koho i kēlā me kēia makahiki.

Me nā nīnau koho, aia pū kekahi mea kaupalena:

  • ke kumukuai. Nui nā ʻenehana i ke kālā;
  • mākau. Inā mākou e kamaʻilio e pili ana i nā polokalamu manuahi, a laila e kū mai ka nīnau o nā mākau, no ka mea, pono ka lako polokalamu manuahi i ka mākaukau kūpono mai ka poʻe nāna e hoʻolaha a hana;
  • hana. ʻAʻole nā ​​lawelawe āpau i loaʻa i ke ao a kūkulu ʻia, e ʻōlelo, ʻoiai ma ka Postgres like, loaʻa nā hiʻohiʻona like me Postgres On-premises. He mea koʻikoʻi kēia e pono e ʻike a hoʻomaopopo ʻia. Eia kekahi, lilo kēia mea i mea nui ma mua o ka ʻike o kekahi mau mea huna o kahi DBMS hoʻokahi.

He aha ka mea i manaʻo ʻia mai DA/DE i kēia manawa:

  • ʻike maikaʻi i ke kumuhana a me ka hoʻolālā noi;
  • ka hiki ke koho pololei i ka ʻenehana DBMS kūpono e noʻonoʻo ana i ka hana ma ka lima;
  • ka hiki ke koho i ke ala kūpono no ka hoʻokō ʻana i ka ʻenehana i koho ʻia i loko o ka pōʻaiapili o nā palena i loaʻa;
  • hiki ke hana i ka hoʻoili ʻikepili a me ka neʻe ʻana;
  • ka hiki ke hoʻokō a hana i nā hāʻina i koho ʻia.

Ma lalo o ka laʻana ma muli o GCP hōʻike i ke ʻano o ke koho ʻana o kekahi ʻenehana a i ʻole no ka hana ʻana me ka ʻikepili e pili ana i kona ʻano:

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

E ʻoluʻolu, ʻaʻole i hoʻokomo ʻia ʻo PostgreSQL i ka schema, a no ka mea ua hūnā ʻia ma lalo o nā huaʻōlelo. Kapua SQL. A hiki mākou i Cloud SQL, pono mākou e koho hou:

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

Pono e hoʻomaopopo ʻia ʻaʻole maopopo mau kēia koho, no laila alakaʻi pinepine ʻia nā mea hoʻomohala noi e ka intuition.

Hōʻuluʻulu:

  1. ʻOi aku ka hele ʻana, ʻoi aku ka paʻakikī o ka nīnau o ke koho. A inā ʻoe e nānā wale iā GCP, nā lawelawe hoʻokele a me SaaS, a laila ʻike ʻia kekahi ʻōlelo o RDBMS ma ka pae 4th wale nō (a aia ʻo Spanner ma kahi kokoke). Eia kekahi, ʻike ʻia ka koho o PostgreSQL ma ka pae 5, a ma hope o laila aia kekahi MySQL a me SQL Server, ʻo ia hoʻi. he nui nā mea a pau, akā pono ʻoe e koho.
  2. ʻAʻole pono mākou e poina e pili ana i nā kaohi i ke ʻano o nā hoʻowalewale. Makemake nā kānaka a pau i kahi Spanner, akā he pipiʻi. ʻO ka hopena, ʻike ʻia kahi noi maʻamau e like me kēia: "E ʻoluʻolu e hoʻolilo iā mākou i Spanner akā no ke kumukūʻai o Cloud SQL, he poʻe ʻoihana ʻoe!"

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

He aha kā mākou e hana ai?

Me ka ʻōlelo ʻole ʻo ia ka ʻoiaʻiʻo hope loa, e ʻōlelo kākou penei:

Pono mākou e hoʻololi i kā mākou ala e aʻo ai:

  • ʻaʻohe kumu o ke aʻo ʻana i ke ʻano o ke aʻo ʻana o nā DBA ma mua;
  • ʻaʻole lawa ka ʻike o ka huahana hoʻokahi;
  • akā, ʻaʻole hiki ke ʻike i nā kakini ma ka pae o hoʻokahi.

Pono ʻoe e ʻike ʻaʻole wale a ʻaʻole i ka nui o ka huahana, akā:

  • hoʻohana hihia o kāna noi;
  • nā ʻano hoʻolaha like ʻole;
  • nā pono a me nā pōʻino o kēlā me kēiaʻano;
  • nā huahana like a me nā huahana ʻē aʻe e hana i kahi koho ʻike a maikaʻi loa a ʻaʻole makemake mau i kahi huahana maʻamau.

Pono ʻoe e hiki ke neʻe i ka ʻikepili a hoʻomaopopo i nā kumu kumu o ka hoʻohui ʻana me ETL.

Ka hihia maoli

I ka wā i hala iho nei, pono e hana i kahi backend no kahi polokalamu kelepona. I ka manawa i hoʻomaka ai ka hana, ua hoʻomohala ʻia ka backend a ua mākaukau no ka hoʻokō ʻana, a ua hoʻohana ka hui hoʻomohala ma kahi o ʻelua makahiki ma kēia papahana. Ua hoʻonohonoho ʻia nā hana penei:

  • kūkulu CI/CD;
  • e nānā i ke kūkulu hale;
  • e hoʻohana i nā mea a pau.

ʻO ka noi ponoʻī he microservices, a ua hoʻomohala ʻia ka code Python/Django mai ka ʻohi ʻana a pololei i ka GCP. No ka poʻe i manaʻo ʻia, ua manaʻo ʻia aia ʻelua mau ʻāpana - US a me EU, a ua puʻunaue ʻia ke kaʻa ma o ka Global Load balancer. Holo nā haʻahaʻa hana a pau ma ka Google Kubernetes Engine.

No ka ʻikepili, aia 3 mau hale:

  • Waihona Kapua;
  • hale kūʻai ʻikepili;
  • Cloud SQL (PostgreSQL).

Pehea e ola ai i kahi waihona SQL i ke kenekulia 21: nā ao, Kubernetes a me PostgreSQL multimaster

E noʻonoʻo paha kekahi no ke aha i koho ʻia ai ʻo Cloud SQL? No ka haʻi ʻana i ka ʻoiaʻiʻo, ua lilo kēia nīnau i kekahi ʻano hoʻomaha haʻahaʻa i nā makahiki i hala iho nei - aia ka manaʻo ua hilahila ka poʻe e pili ana i nā ʻikepili pili, akā naʻe, hoʻomau lākou i ka hoʻohana ʻana iā lākou ;-).

No kā mākou hihia, ua koho ʻia ʻo Cloud SQL no kēia mau kumu:

  1. E like me ka mea i ʻōlelo ʻia, ua hoʻomohala ʻia ka noi me ka hoʻohana ʻana iā Django, a he kumu hoʻohālike no ka palapala ʻana i ka ʻikepili mau mai kahi waihona SQL i nā mea Python (Django ORM).
  2. Ua kākoʻo ka framework i kahi papa inoa o nā DBMS:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • ʻōlelo ʻōlelo;
  • SQLite.

No laila, ua koho ʻia ʻo PostgreSQL mai kēia papa inoa ma ke ʻano intuitively (maikaʻi, ʻaʻole ʻo Oracle ke koho, ʻoiaʻiʻo).

He aha ka mea i nalowale:

  • ua kau ʻia ka noi ma nā ʻāpana 2 wale nō, a ua ʻike ʻia kahi 3 i nā hoʻolālā (Asia);
  • Aia ka waihona ma ka ʻāina ʻo ʻAmelika ʻĀkau (Iowa);
  • ma ka ʻaoʻao o ka mea kūʻai aku ua hopohopo e pili ana i ka hiki hiki ke hoʻopaneʻe mai Europa a me Asia a keakea ma ka lawelawe ana i ka hihia o DBMS downtime.

ʻOiai ʻo Django ponoʻī hiki ke hana pū me nā ʻikepili like ʻole a hoʻokaʻawale iā lākou i ka heluhelu ʻana a me ke kākau ʻana, ʻaʻole i kākau nui ʻia ma ka noi (ʻoi aku ma mua o 90% ka heluhelu ʻana). A ma ka laulā, a ma ka laulā, inā hiki ke hana heluhelu-kope o ke kahua nui ma ʻEulopa a me ʻAsia, he hoʻoholo kuʻikahi kēia. ʻAe, he aha ka paʻakikī o ia mea?

ʻO ka pilikia, ʻaʻole makemake ka mea kūʻai aku e haʻalele i ka hoʻohana ʻana i nā lawelawe hoʻokele a me Cloud SQL. A ua kaupalena ʻia nā mana o Cloud SQL i kēia manawa. Kākoʻo ʻo Cloud SQL i ka loaʻa kiʻekiʻe (HA) a me Read Replica (RR), akā kākoʻo ʻia ka RR like ma hoʻokahi māhele. Ma hope o ka hana ʻana i kahi waihona ma ka ʻāina ʻAmelika, ʻaʻole hiki iā ʻoe ke hana i kahi kope heluhelu ma ka ʻāina ʻEulopa me ka hoʻohana ʻana i Cloud SQL, ʻoiai ʻaʻole ʻo Postgres e pale iā ʻoe mai ka hana ʻana i kēia. ʻAʻole i alakaʻi ʻia ka pilina me nā limahana Google a hoʻopau ʻia me nā ʻōlelo hoʻohiki ma ke ʻano "ʻike mākou i ka pilikia a ke hana nei mākou, i kekahi lā e hoʻoholo ʻia ka pilikia."

Inā mākou e papa inoa pōkole i nā mana o Cloud SQL, e like me kēia:

1. Loaʻa kiʻekiʻe (HA):

  • i loko o hoʻokahi māhele;
  • ma o ka kope kope;
  • ʻAʻole hoʻohana ʻia nā mīkini PostgreSQL;
  • hiki i ka mana 'akomi a me ka lima - failover/failback;
  • Ke hoʻololi nei, ʻaʻole loaʻa ka DBMS no kekahi mau minuke.

2. Heluhelu i ke kope (RR):

  • i loko o hoʻokahi māhele;
  • kū wela;
  • Hoʻopili hou ʻia ʻo PostgreSQL.

Eia kekahi, e like me ka mea maʻamau, i ke koho ʻana i kahi ʻenehana ke alo mau ʻoe i kekahi kaohi ana:

  • ʻAʻole makemake ka mea kūʻai aku e hana i nā hui a hoʻohana iā IaaS, koe wale nō ma o GKE;
  • ʻaʻole makemake ka mea kūʻai aku e hoʻokau i ka lawelawe ponoʻī PostgreSQL/MySQL;
  • ʻAe, ma ka laulā, kūpono loa ʻo Google Spanner inā ʻaʻole no kāna kumukūʻai, akā naʻe, ʻaʻole hiki iā Django ORM ke hana pū me ia, akā he mea maikaʻi.

Ma ka noʻonoʻo ʻana i ke kūlana, ua loaʻa i ka mea kūʻai aku kahi nīnau hahai: "Hiki iā ʻoe ke hana i kahi mea like e like me Google Spanner, akā hana pū me Django ORM?"

Koho hoʻonā No. 0

ʻO ka mea mua i komo i ka manaʻo:

  • noho i loko o CloudSQL;
  • ʻaʻohe hana hou i kūkulu ʻia ma waena o nā ʻāina ma kekahi ʻano;
  • e ho'āʻo e hoʻopili i kahi kope i kahi Cloud SQL e kū nei na PostgreSQL;
  • e hoʻomaka i kahi postgreSQL ma kahi a me kekahi ʻano, akā ma ka liʻiliʻi mai hoʻopā i ka haku.

Auē, ua ʻike ʻia ʻaʻole hiki ke hana i kēia, no ka mea, ʻaʻohe komo i ka mea hoʻokipa (aia ma kahi papahana ʻokoʻa loa) - pg_hba a pēlā aku, a ʻaʻohe komo ma lalo o ka superuser.

Koho hoʻonā No. 1

Ma hope o ka noʻonoʻo hou ʻana a me ka noʻonoʻo ʻana i nā kūlana ma mua, ua loli iki ke ʻano o ka manaʻo:

  • Ke ho'āʻo nei mākou e noho i loko o CloudSQL, akā ke hoʻololi nei mākou i MySQL, no ka mea he haku waho ʻo Cloud SQL na MySQL, ʻo ia:

- he mea koho no MySQL waho;
- like me ka MySQL laʻana;
- hana ʻia no ka neʻe ʻana i ka ʻikepili mai nā ao ʻē aʻe a i ʻole ma ka hale.

Mai ka hoʻonohonoho ʻana i ka replication MySQL ʻaʻole pono ke komo i ka mea hoʻokipa, ma ke ʻano he hana nā mea āpau, akā ʻaʻole paʻa a paʻa ʻole. A i ko mākou hele ʻana i mua, ua lilo ia i mea weliweli loa, no ka mea, ua kau mākou i ka hale holoʻokoʻa me ka terraform, a ʻike koke ʻia ʻaʻole i kākoʻo ʻia ka haku o waho e ka terraform. ʻAe, loaʻa iā Google kahi CLI, akā no kekahi kumu ua hana nā mea a pau ma aneʻi i kēlā me kēia manawa - i kekahi manawa ua hana ʻia, i kekahi manawa ʻaʻole i hana ʻia. Malia paha no ka mea i hana ʻia ka CLI no ka neʻe ʻana o ka ʻikepili o waho, ʻaʻole no ka replicas.

ʻOiaʻiʻo, i kēia manawa ua maopopo ʻaʻole kūpono ʻo Cloud SQL. E like me kā lākou e ʻōlelo nei, ua hana mākou i nā mea āpau.

Koho hoʻonā No. 2

Ma muli o ka hiki ʻole ke noho i loko o ka hoʻolālā Cloud SQL, ua hoʻāʻo mākou e hoʻokumu i nā koi no ka ʻae ʻana. Ua ʻike ʻia nā pono penei:

  • hana ma Kubernetes, ka hoʻohana nui ʻana i nā kumuwaiwai a me nā hiki o Kubernetes (DCS, ...) a me GCP (LB, ...);
  • nele i ka ballast mai kahi hui o nā mea pono ʻole i ke ao e like me HA proxy;
  • ka hiki ke holo i ka PostgreSQL a i ʻole MySQL ma ka māhele HA nui; ma nā wahi ʻē aʻe - HA mai ka RR o ka ʻāina nui me kāna kope (no ka hilinaʻi);
  • multi master (ʻaʻole wau makemake e hoʻopili iā ia, akā ʻaʻole ia he mea nui)

.
Ma muli o kēia mau koi, pDBMS kūpono a me nā koho paʻa:

  • MySQL Galera;
  • CockroachDB;
  • Nā mea hana PostgreSQL

:
- pgpool-II;
— Patroni.

MySQL Galera

Ua hoʻomohala ʻia ka ʻenehana MySQL Galera e Codership a he plugin no InnoDB. Nā mea ʻokoʻa:

  • haku lehulehu;
  • hoʻopili like;
  • heluhelu mai kekahi node;
  • ka hoʻopaʻa ʻana i kekahi node;
  • ʻenehana HA i kūkulu ʻia;
  • Aia kahi palapala Helm mai Bitnami.

ʻO CockroachDB

Wahi a ka wehewehe ʻana, ʻo ia ka mea i poma a he papahana open source i kākau ʻia ma Go. ʻO ka hui nui ʻo Cockroach Labs (i hoʻokumu ʻia e nā poʻe mai Google). Ua hoʻolālā mua ʻia kēia DBMS pili e puʻunaue ʻia (me ka hoʻonui ʻana i waho o ka pahu) a me ka hoʻomanawanui hewa. ʻO kāna mau mea kākau mai ka hui i wehewehe i ka pahuhopu o "ka hoʻohui ʻana i ka waiwai o ka hana SQL me ka ʻike ākea i ʻike ʻia i nā hoʻonā NoSQL."

ʻO kahi bonus maikaʻi ke kākoʻo no ka protocol connection post-gress.

Pgpool

He mea hoʻohui kēia i PostgreSQL, ʻoiaʻiʻo, kahi hui hou e lawe i nā pili āpau a me nā hana. Loaʻa iā ia kāna mea kaulike a me ka parser, i laikini ʻia ma lalo o ka laikini BSD. Hāʻawi ia i nā manawa kūpono, akā he mea weliweli paha, no ka mea hiki i kahi hui hou ke lilo i kumu o kekahi mau hanana hou.

Patroni

ʻO kēia ka mea hope loa i hāʻule ai koʻu mau maka, a me ka mea i ʻike ʻia, ʻaʻole i makehewa. ʻO Patroni kahi mea hoʻohana open source, ʻo ia ka Python daemon e hiki ai iā ʻoe ke mālama maʻalahi i nā puʻupuʻu PostgreSQL me nā ʻano like ʻole o ka replication a me ka hoʻololi ʻana i ke kuleana. Ua lilo ka mea i mea hoihoi loa, no ka mea ua hui maikaʻi ʻo ia me ka cuber a ʻaʻole hoʻokomo i nā mea hou.

He aha kāu i koho ai i ka hopena?

ʻAʻole i maʻalahi ka koho:

  1. ʻO CockroachDB - ahi, akā pōʻeleʻele;
  2. MySQL Galera - ʻaʻole maikaʻi, hoʻohana ʻia ma nā wahi he nui, akā ʻo MySQL;
  3. Pgpool - ka nui o nā mea pono ʻole, ka hui pū ʻana me ke ao a me nā K8;
  4. Patroni - hoʻohui maikaʻi me K8s, ʻaʻohe mea pono ʻole, hoʻohui maikaʻi me GCP LB.

No laila, hāʻule ka koho iā Patrona.

haʻina

ʻO ka manawa kēia e hōʻuluʻulu pōkole. ʻAe, ua loli nui ka honua o ka ʻenehana IT, a ʻo ka hoʻomaka wale nō kēia. A inā ma mua o ke ao he ʻano hana ʻē aʻe, i kēia manawa ua ʻokoʻa nā mea a pau. Eia kekahi, ʻike mau ʻia nā mea hou i nā ao, e ʻike ʻia a, aia paha, e ʻike wale ʻia lākou i nā ao a laila wale nō, e ka hoʻoikaika ʻana o nā hoʻomaka, e hoʻoneʻe ʻia lākou i On-premises.

No SQL, ola ʻo SQL. ʻO ia ke ʻano he pono ʻoe e ʻike iā PostgreSQL a me MySQL a hiki iā ʻoe ke hana pū me lākou, akā ʻoi aku ka nui o ka hiki ke hoʻohana pono iā lākou.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka