Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-07-11 09:52:11

  Aeternitas - Użytkownik

Aeternitas
Użytkownik
Zarejestrowany: 2009-06-10

Zatrzymanie polecenia SQLowego

Na bazach danych codziennie rano wykonywane jest polecenie mysqlcheck. Polecenie to wykonywane jest na kolejnych DB dopóki nie nastanie godzina 7 rano czyli "czas produkcyjny". Niestety, kiedy skrypt o godzinie 6.45 napotka na dużą (>10GB) BD to taką też zacznie przetwarzać, a wykonanie polecenia może się zakończyć grubo po 8. W przypadku, kiedy działanie polecenia mysqlcheck przedłuża się, chciałbym je zatrzymać. Niestety nie wiem jak to zrobić, tak więc

moje pytanie brzmi:
Jak zatrzymać polecenie mysqlcheck ze skutkiem natychmiastowym (albo prawie natychmiastowym).

Offline

 

#2  2016-07-11 12:30:28

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Zatrzymanie polecenia SQLowego

W warunkach domowych to po prostu bym ubił, ale nie wiem czy nie rozwali to bazy.

Offline

 

#3  2016-07-11 13:15:46

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zatrzymanie polecenia SQLowego

ja bym nie ryzykował ubijania.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#4  2016-07-11 13:32:11

  Aeternitas - Użytkownik

Aeternitas
Użytkownik
Zarejestrowany: 2009-06-10

Re: Zatrzymanie polecenia SQLowego

Nie rozwali, baza jest porządkowana w ten sposób, że z aktualnie istniejącej BD dane są tylko odczytywane, a obok robi się docelowa kopia, rzecz w tym, że ubicie skryptu zatrzymuje skrypt, natomiast nie zatrzymuje polecenia bazodanowego.

Offline

 

#5  2016-07-11 13:35:38

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zatrzymanie polecenia SQLowego

zawsze można utłuc serwer mysql.
btw. po kiego grzyba robić codziennie mysqlcheck? jakoś mi to pachnie amatorszczyzną, ale mogę się mylić.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#6  2016-07-11 15:24:02

  Aeternitas - Użytkownik

Aeternitas
Użytkownik
Zarejestrowany: 2009-06-10

Re: Zatrzymanie polecenia SQLowego

Nie wiem po co, nie wnikam, nie chcę też się rozpisywać, dla ścisłości polecenie nie jest wykonywane na wszystkich bazach codziennie, a jedynie skrypt się uruchamia codziennie, mysqlcheck jest wykonywane jedynie dla tych z odpowiednio dużą wartością -free i -size, w każdym razie nie w tym rzecz, pytałem o możliwość ubicia tej czynności, a nie zasadności jej użycia.

Offline

 

#7  2016-07-11 20:08:07

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Zatrzymanie polecenia SQLowego

Ja bym przeniósł polecenie na godziny najmniejszego ruchu, i odpalał kilka poleceń, dając do sprawdzenia jedną bazę (albo pojedyncze tabele, jeśli są takie olbrzymie), a nie wszystkie na raz.

Poza tym po to użytkownicy bazy mają polecenia REPAIR i OPTIMIZE w bazie, żeby ten mysqlchceck nie był niezbędny codziennie.

Ostatnio edytowany przez Jacekalex (2016-07-11 20:37:10)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2016-07-12 02:21:20

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zatrzymanie polecenia SQLowego

Pytanie kontrolne.
Jeśli:
a) znasz wielkość bazy
b) potrafisz na tej podstawie oszacować czas wykonania polecenia mysqlcheck
c) wiesz która jest godzina
d) wiesz o której masz skończyć

to po co wykonujesz polecenie o którym z góry wiesz, że nie zdąży się wykonać?

Zacznij leczyć przyczyny a nie objawy.

Przy okazji - wyrażaj się precyzyjniej. W pierwszym poście napisałeś że mysqlcheck wykonywany jest codziennie, w następnym  że jego wykonanie jest uzależnione od jakichś tam parametrów bazy. Zdecyduj się która wersja jest prawdziwa.

Ostatnio edytowany przez ethanak (2016-07-12 02:23:17)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#9  2016-07-12 06:48:54

  Aeternitas - Użytkownik

Aeternitas
Użytkownik
Zarejestrowany: 2009-06-10

Re: Zatrzymanie polecenia SQLowego

1. Jest wykonywany codziennie, ale na wybranych BD.
2. Polecenie już rusza w godzinach najmniejszego ruchu zaraz po kopii bezpieczeństwa.
3. Nie zawsze wiem czy się wykona w czasie czy nie, szacuję na podstawie wielkości BD i dostępnego czasu, czasami serwer wykonuje jakieś dodatkowe czynności, co go spowalnia, chciałbym używać stopowania polecenia jako zaworu bezpieczeństwa, tak w razie w.

Offline

 

#10  2016-07-12 09:24:24

  Zbooj - Dark Sith

Zbooj
Dark Sith
Skąd: Siedziba Wszelkiego Zła
Zarejestrowany: 2005-07-28

Re: Zatrzymanie polecenia SQLowego

Dlaczego nie obniżysz priorytetu skryptu realizującego mysqlcheck? Nie będzie obciążało systemu i wykona się do końca, chociaż wiadomo dłużej potrwa.

Offline

 

#11  2016-07-12 18:10:50

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Zatrzymanie polecenia SQLowego

Zbooj napisał(-a):

Dlaczego nie obniżysz priorytetu skryptu realizującego mysqlcheck? Nie będzie obciążało systemu i wykona się do końca, chociaż wiadomo dłużej potrwa.

Do takich rzeczy trzeba znać albo polecenia ionice, nice, renice i cpulimit,
albo cały mechanizm cgroup, a to już mały horror. ;)

Nie można za dużo wymagać...

Ostatnio edytowany przez Jacekalex (2016-07-12 18:14:14)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)