MySQL Cluster ???

22 отговора 1020 прегледа
#1

MySQL Cluster ???

Ot dosta vreme ne sym pisal tuk no eto che doide i tozi moment :)
Ta vyprosa mi e "kakvo e tova MySQL Cluster i .. kak e implementirano"
s drugi dumi tova koeto me interesuvae slednoto .. moje da zcuchi mega lame ama az vse oshte si jiveia vyv vremeto na ring repliacations i malko sym se shashnal ot tez novi 'divotii'
da kajem slednata situacia ima 3 mashini

server_1 na koiato sedi node 1
server_2 na koiato sedi node 2
mng_server anagement server

sega mng_server igrae li roliata na load balancer ? t.e ako se puska query kym nego toi shte preceni li kym koi ot dvata noda da izprati zaiavkata i ako e taka kakvi sa kriteriite po koito vzima tazi ocenka.

ako ne e taka tova znahi che tribva sam da si napravia edin load balancer pred samiat mysql t.e apacheta koito da sochat kym 2 tanoda i da balansiram pri samite http requesti.

Vyzmojno e vsichko koeto "izgovorih" da sa pylni gluposti za koeto molia d ame izvinite no ako vse pak nikoi ima koito moje da hvyrli malko svetlina vyrhu tova neshto shte sym mu mnogo blagodaren.

Отговор
в отговор на Meнтa2K #2

Re: Пиши на български ако обичаш

Това няма да си кривя очите да го чета а едва ли някой друг може да ти отговори.

salle.online.bg/sig
Отговор
в отговор на salle #3

Re: Пиши на български ако обичаш

От доста време не съм писал тук но ето че доиде и този момент :)
Та въпроса ми е "какво е това MySQL Cluster и .. как е имплементирано"
с други думи това което ме интересувае следното .. мойе да зцучи мега ламе ама аз все осхте си йивеиа във времето на ринг реплиацатионс и малко съм се схасхнал от тез нови 'дивотии'
да кайем следната ситуациа има 3 PCs
server_1 na koiato sedi node 1
server_2 na koiato sedi node 2
mng_server anagement server

сега mng_server играе ли ролиата на load balancer ? т.е ако се пуска яуеръ към него тои схте прецени ли към кои от двата нода да изпрати заиавката и ако е така какви са критериите по които взима тази оценка.

ако не е така това знахи че трибва сам да си направиа един лоад баланцер пред самиат мъсял т.е апачета които да сочат към 2 танода и да балансирам при самите хттп реяуести.

Възмойно е всичко което "изговорих" да са пълни глупости за което молиа д аме извините но ако все пак никои има които мойе да хвърли малко светлина върху това несхто схте съм му много благодарен.

Отговор
в отговор на Meнтa2K #4

Re: Майко мила.

Чак такъв мързел не бях виждал .... да не вземеш да си изцапаш пръстите ако пипнеш клавиатура с кирилица та предпочиташ нещо да ти конвертира шльокавицата.

Поне от самоуважение да беше коригирал безумния правопис.


"mng_server играе ли ролиата на load balancer ? "

Не. ndb_mgmd играе единствено ролята да раздава ролите т.е. конфигурациите на ndbd

Когато стартираш възел с данни (ndbd) той буквално си няма хабер кой е и за какво се бори. Търси mgmd и го пита "кой съм аз и какво да правя?" т.е. взима цялата си конфигурация от mgmd

Друга роля mgmd няма освен ако се явява и арбитър при гласуване в случай на разцепен клсътер (split brain), но това няма отношение към балансирането на заявките.

След като стартираш клъстера mgmd възела всъщност може и да се спре. Не е необходим за нормалната работа на клъстера. Ако обаче някой възел трябва да се рестартира няма да има откъде да си вземе конфигураицята независимо дали е възел с данни (ndbd) или mysqld.

Няма начин да изпращаш заявки към mgmd. Заявките ги изпращаш на MySQL сървърите (SQL възлите в терминологията на клъстера) а те от своя страна ги пращат към клъстера.

При стартиране всеки mysqld се обръща към ndb_mgmd и пита как да стигне до ndbd възлите.

Баланс на натоварването можеш да направиш на две нива.

Първо колкото повече процесори търкалят ndbd толкова по-добре на теория. На практика трафикът между възлите расте доста бързо и при повече възли може да се наложи да търсиш високоскоростна мрежа == скъпо.

Второто място е да добавиш много MySQL сървъри вързани към същия клъстер.

Да речем, че имаш клъстер от 8 ndbd с 2 реплики и всеки от 8-те ndbd е на отделна машина.

Всеки от възлите ще съдържа 2/8 от данните и при определени заявки и включен condition_pushdown при MySQL сървърите може винаги само един или два възела да обработват заявката.

Да речем, че към този клъстер връзваш 4 отделни mysqld всеки на собствена машина.

Тогава вече можеш да накараш httpd (независимо дали един или много) да разпределят заявките към 4-те mysqld.

Round robin DNS например може да изиграе ролята на най-прост (и най-неефективен) балансьор.

Единствено трябва да се погрижиш за факта, че сесиите към MySQL са локални за всеки MySQL сървър т.е. за многоредова транзакция трябва да изпратиш всички заявки към един и същ mysqld и да внимаваш за дефинирани променливи @var, TEMPORARY таблици, AUTO_INCREMENT и всичко останало което е свързано с конкретна сесия.

Така, че нивата на балансиране могат да бъдат три.
1) Между много възли с данни (ndbd)
2) Към многото ndbd да вържеш много MySQL сървъри (mysqld)
3) Към многото mysqld да вържеш много Apache-та

Върху 1) нямаш контрол. Клъстерът сам си решава как ще разпредели данните и съответно натоварването.

При 2) и 3) всичко зависи от въображението ... и финансовите средства с които разполагаш.

Препоръчвам ти да започнеш се една минимална конфигурация от 2 ndbd, 2 mysqld и 1 или 2 httpd за да проиграеш различни варианти.

И ... чети ....

[линк]
[линк]

salle.online.bg/sig
Отговор
в отговор на salle #5

Re: Майко мила.

Много благодарности за отговора беше изключително изчерпателен.

И sry за така наречената "шлиаковица" но аз самиат не мога да приема да се пише на кирелица особено когато става въпрос за IT тематика коиато е бъкана с термини и е ужано не практично да се пише на кирелица. Пък и мисля че е по важно човек какво казва а не как

Tnx again

Отговор
в отговор на Menta2K #6

Re: Не с този крак ако обичаш

Виж какво всяко нещо написано с латиница изисква десетократрно повече усилия при четене. С което губиш времето на четящите т.е. тези от които очакваш помощ. Въпрос на елементарно уважение е да уселсниш живота на четящите а не своя.

Това дето било непрактично щеше да бъде жалък аргумент ако не беше проява на осъзната антибългарска позиция.

Превключването между две клавиатурни подреби изисква около 1 десета от секундата.

Това което стои зад такива аргументи като твоя е идеята, че българският език е отживелица от която трябва да се срамуваме и да се откажем. Е аз пък съм горд с това, че съм българин и с колкото повече чужденци работя (в същия този сектор) толкова повече се радвам, че не съм се родил в англоезична държава.

Да не говорим пък за това, че стотици термини си имат отлични и отдавна възприети преводи, но много народ избива тежките си комплекси за малоценност използвайки англоезичните думички.

Какво те кара да се срамуваш от българските думи "изпълнено, осъществено, направено" та държиш да го заместиш с "ipmlementirano"?

Повярвай ми много по-лесно ще те разберат какво питаш и много по лесно ще ти бъде да напишеш:

"как е направено" вместо "kak e implementirano"

За "mega lame" просто няма нужда от коментар

Българският език е многократно по-богат от английския когато искаш да изразиш нещо подобно.

Но не!

"lame" видиш ли те прави да изглеждаш IT professional а може би expert с което се поставяш мнооого над нивото на балъци като мен дето си мислят, че са поне малко професионалисти

УЖАСНО професионално от твоя страна да казваш "replication" вместо "репликация" и "server"вместо "сървър" например.

Жалкото, е че явно имаш достатъчно акъл в главата си за да нямаш нужда от подобно избиване на комплекси.

"И sry за така наречената ..."

Това трябва да го прочета като "сри" така ли? Интересен начин за изказване на благодарности.

salle.online.bg/sig

Редактирано от salle на

Отговор
в отговор на salle #7

Re: Не с този крак ако обичаш

hi salle,

pri vsitshkia mi respekt kam teb, obatshe tova sega kakvo beshe!

zitat:

"Това което стои зад такива аргументи като твоя е идеята, че българският език е отживелица от която трябва да се срамуваме и да се откажем. Е аз пък съм горд с това, че съм българин и с колкото повече чужденци работя (в същия този сектор) толкова повече се радвам, че не съм се родил в англоезична държава. "

Dosega njamach komleksi zashtoto mislech tshe stava vapros za informatika, no sega vetshe gi polutshich.

As sam bivsha balgarka, osemnaiset godischna izbjagala ot BG oshte po komunistitshesko vreme i dnes sam na 37. Zavarshich Informatik v Germania i tshesno kazano mi e mnogo trudno ponjakoga da razbiram problemite opisani na balgarski, no kogato mislja tshte sam razbrala neshto se opitvam da pomogna.

Drug e vaprosat tshe BG-prevodi na opredeleni termini he gi i znam poradi koeto izpolzuvam tova koeto sam utshila s nadejda internazionalna razbiraemost i s malozennost za losh balgarski sled 20 godini..

OK, ako naistina e tova mnenieto na vsitscki v tozi forum i az se ottegljam.

Отговор
в отговор на nea #8

Re: Ами точно ти би трябвало да разбереш ...

Тук се е напълнило с такива дето не могат едно изречение да напишат граматически правилно обаче дори когато се ядосат се внимават да не кажат нещо на български ами казват (и пишат) "shit!"

Аз не съм от пуританите които искат да преведат абсолютно всичко, но да заменяш дума която съществува от десетилетия само и само да звучиш по-чужбински не съм сагласен.

И понеже темата за шльокавицата [линк] е дискутирана многократно ето ти само една тема пак от от dir.bg

Изчети я и може би ще разбереш по-добре аргументите ми.

[линк]

salle.online.bg/sig
Отговор
в отговор на salle #9

Преди години бях твърд шльокавичар

Преди години бях твърд шльокавичар, вече не съм. Просто, защото съм съгласен с аргумента, че за повечето е трудно да четат кирлат. Не мисля, че е 10 пъти по- трудно, но за 2-3 (до пи) съм съгласен :).
Вече темата дори не ме вълнува много, но имам две забележки към основателно многоуважавания Сале.
1. Не е 0.1с, а поне 0.25с (по-скоро, около 1с) времето за превкл. на клавиатурата. Да не говорим за непрекъснатото помнене на регистъра (може би 0.1 е проверката на светодиода:).
Та ако направим една проста сметка: 100 000 реда програма, с 20 000 термина на (или коментара) на български ): - няколко дни отиват в превключване на клавиатурата.
2. В области, които се развиват бързо (напр, ИТ или Телеком) навлизат много понятия, които нямат български аналог. Това, че някои понятия имат аналог, не доказва въобще, че всички имат (надявам се, че не това е тезата на Сале).
Разбира се, и мен ме дразни, когато чуя по телефона, че съм се свързал с "хелп деска" на БТК, но много повече ме дразни лошото им обслужване.

Отговор
в отговор на NikB #10

Re: Помня ги тези години :)

Е това за 10-те пъти е различно при всеки човек трябва да призная. На мен ми е около толкова.

Същото е и за милисекундите за превключване на клавиатурата. Аз пиша сравнително бързо като за компютърджия QWERTY и значително по-бързо на на БДС (от около 6 годишен на пишещата машина на баба ми а сега гоня 42) а превключвам с един от шантавите клавиши между десните alt и ctrl

Всичко е въпрос на навик! Ако не желаеш да опиташ и превключваш само мишката може и по 5 сек. да ти отнема.

За програмата от 100 000 реда мога да поспоря но това е друга тема, която няма никакво отношение към писането в дакъв публичен форум! Най-малкото защото писането на програми е труд, който по някакакъв начин се заплаща (независимо дали с пари или с нещо друго) докато форуми като този тук са доброволни!

Но още повече защото както вече казах е въпрос на уважение пишещият да се постарае да улесни читателя

А и в случая става въпрос за обмяна на опит и взаимопомощ.

2. Напълно съм съгласен! Никога досега не съм видял свестен превод на Клъстер например а от друга страна тази заемка е придобила гражданственост от много години насам.

Не съм от фанатичните пуритани. Дори когато има точен превод съм съгласен, че удобството може да е по-важно и българският термин да отмре постепенно. Както навремето се казваше "концентратор" което просто е прекалено дълъг и неудобен превод на "hub"

Та за термините да - нормално е да има и чуждици в терминологията. Но да заменяш "съжалявам" със "sry" не е въпрос на терминология нали?

Нито пък да твърдиш, че "е ужасно непрактично да се пише на кирилица" когато си изписал 14 реда, 193 думи и 1036 знака!
(според wc върху оригиналния постинг) в които има думите които не могат да се напишат на кирилица са
MySQL
и хайде от мен да мине management server

salle.online.bg/sig
Отговор
в отговор на salle #11

Имах в предвид, че кбд си имат времена

Имах в предвид, че кбд си имат времена за превключване (в БИОС, 100% си наясно:)

Да-а-а-а... Мислех, че си доста по-млад.

Може би, защото си по-емоционален :)
Сега виждам, 16.май :)

Отговор
в отговор на nea #12

Re: Не с този крак ако обичаш

1) Бивша българка? Не съм чула да има такава народност. Приемаме, че си германка. За всеки българин, та ако ще и перфектно знаеш английски/немски и т.н. е известно затруднение информацията, четена на чужд език. Мисля, че щом една немска гражданка, намира смисъл в четенето на български форуми - смятам трябва да няма нищо против факта, че и е малко трудно да чете и разбира на кирилица.

2) Всеки четящ тук се опитва да помогне, ако разбира проблема. Защо ще се чувстваш обидена, че не разбираш написаното на един позабравен за теб език? Ако ти е интересно да помагаш на тук пишещите, по- логично би било да се постараеш да си припомниш езика?

Изобщо какво искаше да кажеш: пишете на шльокавица, защото аз се оттеглям?

Ами мисля, че повечето ще го преживеят..... Извинявай за иронията, но не се стърпях - просто ти така постави въпроса.

И пак да кажа - в твоя случай, ако искаш да си пълноценен учасник в този форум и ако не се справяш с българския трябва ти да се постараеш, не да молиш нас да те услесняваме!

Отговор
в отговор на _danitu #13

Re: Не с този крак ако обичаш

Skupi _danitu,

nadjavam se tshe se tshuvstvash po dobre sled tozi dalgoosmislen i katshestven komentar!!

Za v badeshte ne se tshuvstvai vinagi zagovoren (i ne otgovarjai v mnojestveno tshislo, v tozi forum ima i professionalisti)zashtoto mnenieto na chora ot tvoeto nivo na mislene nito me interesuva, oshte po-malko valnuva!

zitat: " ?? ?? ????? ??? ?? ?? ???????????!"...ha,ha ...neshto si obarkal..
edinstvenoto koeto se molja ot zjalo sarze e deteto mi da e zdravo i shtastlivo!!!



Отговор
в отговор на _danitu #14

Re: Не с този крак ако обичаш

zitata ti:"не да молиш нас да те услесняваме"

Отговор
в отговор на nea #15

Re: Не с този крак ако обичаш

1) Говори ми в женски род, моля ;
2) Дали се чувствам добре или не, много малко, че даже никак не зависи от написаното тук;
3) Публичността на този форум дава право на всеки да изкаже мнение, когато сметне, че е умесно;
4) Множествено число и професионалисти?! Не хванах връзката - то винаги има какво да се учи, но явно, за да съм професионалист трябва да добавя и това в списъка;
5) Ако нечие мнение ти е безразлично, просто не вземаш оношение;

и последно :
Е, децата как се намесиха тук - не знам!? Но тъй като съм силно ЗА всички деца да са здрави и щастливи - съгласна съм.

А това, което не си прочела измежду редовете беше: не виждам причина да се чувстваш обидена или "да се оттегляш", защото част от хората предпочитат родната си писменост и смятат, че прекалената употреба на чуждици няма смисъл.

Отговор
в отговор на _danitu #16

Re: Не с този крак ако обичаш

Hey Miss Varna,

za greshkata mi po pola ti, molja za izvinenie.

Samo ot lubopitstvo, ot Firmata imame tazi vetsher MSDN TechTalk,
Temata e "Novi patishta sas ClickOnce Technologija i .NET 2.0. Momtshetata ot
Microsoft referendirat kakto vseki mesez njakolko tshasa na angliiski.
Kakvo mislish tshe shte mi otgovorjat, ako gi popitam dali bicha obarnali na nemski,
shto mi e ot poslednite 20 godini roden ezik, a pak i te se namirat v momenta v Germania....
(njakoi ot tjach sa i tuk rodeni)

Njamam nishto protiv patriotitshnoto ti orientirane kam bulg. govor i pismennost.
Ili az ne se izrazjavam pravilno, ili ti ne jelaesh da me razberesh.

Mislja tshe v momenta govorim edin pokrai drug, zatova po dobre da priklutshime.

In spite of everything, I wish you all the BEST!

Отговор
в отговор на nea #17

Re: Не с този крак ако обичаш

За съвсем различни неща говориш. Това тук не е международна конференция или събиране на говорещи различни езици хора. Ако беше такова, щяхме да си говорим направо на английски.
Както и да е. Точка и световен мир да има (... опс че ми се наклони мисс-ката корона)


Отговор
в отговор на Meнтa2K #18

Re: MySQL Cluster ???

Още едно малко въпросче възникна и не можах да намеря логическо обяснение как и защо .. та.
Сетъпнах по подобен начин с много мъка и пот на челото въпросния клъстер.
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.2.2 (Version: 4.1.16, Nodegroup: 0)
id=3 @192.168.2.3 (Version: 4.1.16, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.2.1 (Version: 4.1.16)

[mysqld(API)] 2 node(s)
id=4 @192.168.2.2 (Version: 4.1.16)
id=5 @192.168.2.3 (Version: 4.1.16)

през 192.168.2.2 импортнах вече същтествуващата база в която има таблици с auto_increment полета..
какво се получи на
192.168.2.2 - таблиците изгубиха auto_increment-а
192.168.2.3 - всичко си стана като хората
Цялото това поведение предполагам е както при репликационият подход да не се дублират auto_increment стойности..
Сега до колкото четох в 5.0.х има две нови опции които позволяват да се синхорнизират тези стойности
auto_increment_increment и auto_increment_offset.
във версиа 4.1.x какво мога да направя по случея ?

Благодаря предварително.

Отговор
в отговор на Menta2K #19

Re: MySQL Cluster ???

id=4 @192.168.2.2 (Version: 4.1.16)
id=5 @192.168.2.3 (Version: 4.1.16)


"през 192.168.2.2 импортнах вече същтествуващата база в която има таблици с auto_increment полета.."

Как го направи? Съществуваща база с таблици MyISAM които директно си натъпкал в NDB таблици или си конверитрал съществуващи MyISAM таблици с ALTER ... ENGINE=NDB ?

"192.168.2.2 - таблиците изгубиха auto_increment-а"

В смисъл? Какво загубиха? Дефиницията на колонката ли се промени или стойностите не са такива?

"192.168.2.3 - всичко си стана като хората"

Изглежда си се сблъскал с някакъв бъг. Не трябва да има никаква разлика.

Дай малко повече информация.

"Цялото това поведение предполагам е както при репликационият подход да не се дублират auto_increment стойности.. "

Не. Нищо общо няма. И двата ти mysqld т.е. 4 и 5 трябва да виждат абсолютно идентични данни.

При твоята конфигурация на ако си с NoOfReplicas= 2 (не ти препоръчвам никаква друга стойност) във 1 и 2 имаш две копия на данните (две реплики) разпределени в по два сегмента всяка.

id=2 (1, 2)
id=3 (2, 1)

Двата възела се грижат да синхронизират всички промени в реално време така, че данните да са винаги еднакви. Ако примерно id=2 получи някакви данни за сегмент 1 той ги праща на id=2 и го изчаква да потвърди и той промяната.

С други думи на ниско ниво между възлите на клъстера има синхронна репликация и няма как да се получат дублирани записи.

salle.online.bg/sig
Отговор
в отговор на salle #20

Re: MySQL Cluster ???

импортнах го от dump от друг server като след което промених ENGINE-а в dump-a
.....
CREATE TABLE `bank_returns` (
`id` int(10) unsigned NOT NULL auto_increment,
`batch_id` int(11) NOT NULL default '0',
`user_type` tinyint(4) NOT NULL default '0',
`user_id` int(11) NOT NULL default '0',
`direction` tinyint(4) NOT NULL default '0',
`amount` varchar(20) NOT NULL default '',
`return_code` varchar(5) NOT NULL default '',
`return_date` datetime NOT NULL default '0000-00-00 00:00:00',
`batch_date` datetime NOT NULL default '0000-00-00 00:00:00',
`prop_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) engine=ndbcluster;
.......
"192.168.2.2 - таблиците изгубиха auto_increment-а"
дефинициата на колоната
mysql> describe bank_returns;
+-------------+------------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------------------+-------+
| id | int(10) unsigned | | PRI | 0 | |
| batch_id | int(11) | | | 0 | |
| user_type | tinyint(4) | | | 0 | |
| user_id | int(11) | | | 0 | |
| direction | tinyint(4) | | | 0 | |
| amount | varchar(20) | | | | |
| return_code | varchar(5) | | | | |
| return_date | datetime | | | 0000-00-00 00:00:00 | |
| batch_date | datetime | | | 0000-00-00 00:00:00 | |
| prop_id | int(11) | | | 0 | |
+-------------+------------------+------+-----+---------------------+-------+

"192.168.2.3 - всичко си стана като хората"
mysql> describe bank_returns;
+-------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | | PRI | NULL | auto_increment |
| batch_id | int(11) | | | 0 | |
| user_type | tinyint(4) | | | 0 | |
| user_id | int(11) | | | 0 | |
| direction | tinyint(4) | | | 0 | |
| amount | varchar(20) | | | | |
| return_code | varchar(5) | | | | |
| return_date | datetime | | | 0000-00-00 00:00:00 | |
| batch_date | datetime | | | 0000-00-00 00:00:00 | |
| prop_id | int(11) | | | 0 | |
+-------------+------------------+------+-----+---------------------+----------------+

Отговор