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

[b]moje pytanie brzmi:[/b]
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!
[i]Zespół Adwokacki Dyskrecja[/i]

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!
[i]Zespół Adwokacki Dyskrecja[/i]

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/urandom
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!
[i]Zespół Adwokacki Dyskrecja[/i]

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.


[url=https://www.youtube.com/watch?v=rNg2Dh6gPkw]Nemo sailing home...[/url]

Offline

 

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

  Jacekalex - Podobno człowiek...;)

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

Re: Zatrzymanie polecenia SQLowego

[quote=Zbooj]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.[/quote]
Do takich rzeczy trzeba znać albo polecenia [b]ionice[/b], [b]nice[/b], [b]renice[/b] i [b]cpulimit[/b],
albo cały mechanizm [b]cgroup[/b], 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 ;-)

[ Generated in 0.013 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00176 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.191.9.9' WHERE u.id=1
0.00080 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.191.9.9', 1732435827)
0.00062 SELECT * FROM punbb_online WHERE logged<1732435527
0.00063 SELECT topic_id FROM punbb_posts WHERE id=303166
0.00011 SELECT id FROM punbb_posts WHERE topic_id=28778 ORDER BY posted
0.00134 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28778 AND t.moved_to IS NULL
0.00014 SELECT search_for, replace_with FROM punbb_censoring
0.00274 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28778 ORDER BY p.id LIMIT 0,25
0.00100 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28778
Total query time: 0.00931 s