Ad blocker detected: Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker on our website.
C++ JAVA
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Wed Mar 25, 2020 10:53 am
Здравейте колеги. Налага ми се в една система да направя аларма дали съществува синхронизация между 3 сървъра. По принцип бих използвам командата :
Code: Select all
SELECT * FROM performance_schema.replication_connection_status
за всеки сървър, но на практика в сайта потребителя на базата няма права да чете от таблицата. Не ми се иска да вдигам на потребителя правата и въпроса ми е дали има и алтернативен начин да видя дали между трите сървъра съществува синхронизация?
Code: Select all
public function getMySqlSync()
{
$servers = $this->getServersSettings();
$countServers = count($servers);
$mysqlSync = [];
for ($i = 1; $i <= $countServers; $i++) {
if (isset($servers[$i])) {
$query = $this->mdb->query("SELECT * FROM performance_schema.replication_connection_status", $servers[$i]['ip']);
if ($query->num_rows > 0) {
while ($item = $query->fetch_object()) {
$mysqlSync[$i] = $item;
}
}
}
}
return $mysqlSync;
}
-
Ticketa
- Турист

- Posts: 594
- Joined: Mon Feb 27, 2012 1:54 pm
-
Answers: 24
- Location: in /root
-
Contact:
Post
by Ticketa » Thu Mar 26, 2020 11:59 am
Офтопик:
С каква идея се правят тези синхронизации ? При бекъп сървъри или? Каква е ползата / предимството ?
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Thu Mar 26, 2020 12:19 pm
Ticketa wrote: ↑Thu Mar 26, 2020 11:59 am
Офтопик:
С каква идея се правят тези синхронизации ? При бекъп сървъри или? Каква е ползата / предимството ?
Имам 3 сървъра, които са ми в кръгова топология, които поемат постъпващ трафик. И трите сървъра във всеки един момент са ми и мастър и слейв. Тоест синхронизацията ми е между трите сървъра. Ако единия падне или го спрем другите поемат трафика. Лесно мога и да пренастроя топологията, защото базата ми се уеднаквява навсякъде. Та идеята е не само да са бекъп, но са и съвсем легитимни самостоятелни единици. Просто ми трябва аларма да видя в момента статуса на слейв сървърите. Тоест
също ми изисква юзър права, които не смятам да вдигам, за което търся и друг алтернативен вариант да визуализирам аларма в сайта.
-
djman
- Гуру

- Posts: 2815
- Joined: Sat Sep 12, 2009 8:07 am
-
Answers: 108
Post
by djman » Thu Mar 26, 2020 12:31 pm
Ти искаш тази аларма да е част от приложението, което ползва тези бази? Не може ли тази аларма отделно да я направиш, съответно с отделен юзер който само това може да проверява?
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Thu Mar 26, 2020 12:46 pm
djman wrote: ↑Thu Mar 26, 2020 12:31 pm
Ти искаш тази аларма да е част от приложението, което ползва тези бази? Не може ли тази аларма отделно да я направиш, съответно с отделен юзер който само това може да проверява?
Да, алармата трябва да е част от приложението. Няма вариант да е отделен потребител.
-
Revelation
- Web-tourist

- Posts: 921
- Joined: Sun Mar 24, 2013 1:23 pm
-
Answers: 65
Post
by Revelation » Fri Mar 27, 2020 12:50 am
dakata__92 wrote: ↑Thu Mar 26, 2020 12:46 pm
djman wrote: ↑Thu Mar 26, 2020 12:31 pm
Ти искаш тази аларма да е част от приложението, което ползва тези бази? Не може ли тази аларма отделно да я направиш, съответно с отделен юзер който само това може да проверява?
Да, алармата трябва да е част от приложението. Няма вариант да е отделен потребител.
Има вариант. Създай нов потребител с правата, които искаш, добави втори връзка в Ларавел със съответния потребител и прави каквото искаш с него.
Ако създаваш модел, просто задавай името на връзката, която да ползва:
Code: Select all
protected $connection = "second-conn";
или
https://laravel.com/docs/7.x/database#u ... onnections
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Fri Mar 27, 2020 8:04 am
Revelation wrote: ↑Fri Mar 27, 2020 12:50 am
dakata__92 wrote: ↑Thu Mar 26, 2020 12:46 pm
djman wrote: ↑Thu Mar 26, 2020 12:31 pm
Ти искаш тази аларма да е част от приложението, което ползва тези бази? Не може ли тази аларма отделно да я направиш, съответно с отделен юзер който само това може да проверява?
Да, алармата трябва да е част от приложението. Няма вариант да е отделен потребител.
Има вариант. Създай нов потребител с правата, които искаш, добави втори връзка в Ларавел със съответния потребител и прави каквото искаш с него.
Ако създаваш модел, просто задавай името на връзката, която да ползва:
Code: Select all
protected $connection = "second-conn";
или
https://laravel.com/docs/7.x/database#u ... onnections
Знам, но приемете на доверие, че ми е необходимо алтернативно решение. Мислех си да правя преброяване на всеки от сървърите на една и съща синхронна таблица. Тоест ако синхронизацията на всеки 2 минути се опитва да навакса разликите в сървърите, то по принцип би трябвало да има огромна разлика между таблицата на сървър 1, 2 и 3. Проблема да правя преброяване, е че във всеки един момент мога да имам разлика и от 100 000 записа постъпващ трафик, та ще активира фалшиво - позитивна реакция на алармата, ако направя да е по процент разлика.
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Mon Mar 30, 2020 9:39 am
Никой ли няма идея как да проверя дали има синхронизация между сървърите?!
-
muti
- Турист

- Posts: 279
- Joined: Thu Nov 14, 2019 7:03 am
-
Answers: 2
Post
by muti » Mon Mar 30, 2020 10:28 am
Тоест искаш да направиш load balancing между 3 машини ?
Нямам на идея каква точно е архитекрурата но мога да предположа че:
1. имаш рутер Dell с повечко тунели (В-ланс) понеже е по-евтиното решение.
2. имаш 3 машини за load balancing на заявките.
3. следват процеррни станции
4. бази данни които се се синхронизират/репликират, които са с ъплинк между тях(мегабитови/гигабитови/SFP).
Или си само с 3 машини ? Ако е така какво стои пред тях и казва на заявките коя къде да отива ? С пинг ли се управляват или нещо следи кога мрежата падне и отчита че машината я няма ? ....
Или просто искаш да си синкваш 3 машини в реално време ? Ако е така най-доброто и скъпо е r1 soft. Тествал съм го и работи перфектно. Има и bare-metal restore.
-
dakata__92
- Web-tourist

- Posts: 3357
- Joined: Tue Aug 02, 2011 7:24 pm
-
Answers: 128
Post
by dakata__92 » Mon Mar 30, 2020 10:37 am
muti wrote: ↑Mon Mar 30, 2020 10:28 am
Тоест искаш да направиш load balancing между 3 машини ?
Нямам на идея каква точно е архитекрурата но мога да предположа че:
1. имаш рутер Dell с повечко тунели (В-ланс) понеже е по-евтиното решение.
2. имаш 3 машини за load balancing на заявките.
3. следват процеррни станции
4. бази данни които се се синхронизират/репликират, които са с ъплинк между тях(мегабитови/гигабитови/SFP).
Или си само с 3 машини ? Ако е така какво стои пред тях и казва на заявките коя къде да отива ? С пинг ли се управляват или нещо следи кога мрежата падне и отчита че машината я няма ? ....
Или просто искаш да си синкваш 3 машини в реално време ? Ако е така най-доброто и скъпо е r1 soft. Тествал съм го и работи перфектно. Има и bare-metal restore.
Аз проблеми със синхронизацията нямам. Имаме си собствен дата център и страхотни системни администратори. Синхронизацията е в реално време. Има много условия, при които можем да "счупим" вече създадена синхронизация и на практика внимаваме къде какво правим по код, файлове и база данни. Та искам да създам PHP аларма, която да ми казва, че някоя от машините не е синхронна с останалите. Споделих заявките в базата, но няма да вдигам правата на потребителите или да добавям нова конекция с друг потребител и да я разпръсна по сървърите за да достъпя една аларма.