Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut]Skrypt Do Backupu Bazy Danych


paninax

Rekomendowane odpowiedzi

Opublikowano

Skrypt wykonuje backup baz mysql

account i player do katalogu /backup

 

skrypt jest uruchamiany przez cron 3 razu w tygodniu o wybranej godzinie z parametrem dnia

-pobiera dodatkowo nazwe hosta i aktualna date

-kasuje stare beckupy z tym samym parametrem dnia

-kompresuje tarem bazy account i player z /var/db/mysql

 

i zapisuje do

 

/backup

w postaci nazwa_bazy.parametr_dnia.nazwa_hosta.data.tar.gz

 

czyli zawsze o kazdej porze gdy cos sie porypie w player lub account (albo ktos systematycznie bedzie w niej cos broił) mamy 3 beckupy danej bazy z zeszlych 7 dni ;)

 

 

 

backup.sh

#!/bin/sh

case "$1" in
"-pon")
DAY=pon
;;
"-sro")
DAY=sro
;;
"-sob")
DAY=sob
;;
"-res")
DAY=res
;;
*)
echo "Uzyj -pon , -sro ,  -sob (aby zrobic backup) lub -res (aby przywrocic backup)."
exit
;;
esac


HOST="$(hostname)"
NOW="$(date +"%d-%m-%Y")"

if [ "$DAY" != res ]; then

rm /backup/*.$DAY.*
/usr/local/etc/rc.d/mysql-server stop &
sleep 3
tar -czf /backup/account.$DAY.$HOST.$NOW.tar.gz account
tar -czf /backup/player.$DAY.$HOST.$NOW.tar.gz player
/usr/local/etc/rc.d/mysql-server start

else

echo "Wpisz parametr dnia dla bazy ktora chcesz przywrocic"
echo "pon (z poniedzialku) sro (ze srody) sob (z soboty)"

read dzien
if [ $dzien != pon ] && [ $dzien != sro ] && [ $dzien != sob ]; then
echo "Wpisz poprawny parametr dnia bazy ktora chcesz przywrocic"
else
cp /backup/*.$dzien.* .
/usr/local/etc/rc.d/mysql-server stop &
sleep 3
tar -xzvf account.$dzien.* 
tar -zxvf player.$dzien.*
rm *.$dzien.*
/usr/local/etc/rc.d/mysql-server start
echo "backup zakonczony sukcesem"
fi
fi

 

kopiujemy do

/var/db/mysql

nastepnie

chmod 777 /var/db/mysql/backup.sh

tworzymy katalog gdzie beda przechowywane backupy:

cd /

mkdir /backup

chmod -R 777 backup

 

wpisy do crontab :

30  10  *  *  1  root sh /var/db/mysql/backup.sh -pon
30  10  *  *  3  root sh /var/db/mysql/backup.sh -sro
30  10  *  *  6  root sh /var/db/mysql/backup.sh -sob

te wpisy oznaczaja to :

(3x w tygodniu w poniedzielek srode i sobote o 10:30 wykonaj backup)

mozna dodac np dodatkowe sciezki ktore chcemy zabezpieczyc

np

/sciezka/do/channel/share_data/locale

lub dodatkowe bazy mysql

 

UPDATE .

Latwiejszy sposob instalacji to :

 

Skrypt mozemy pobrac bezposrednio na nasz serwer FreeBSD

 

 

wystarczy sciagnac i nadac chmody

 

fetch http://mt2isgreat.pl/script/backup.sh
mv backup.sh /var/db/mysql
chmod 777 /var/db/mysql/backup.sh

Dla osob ktorzy korzystaja z Wersji easy AvalonMt2 przygotowalem rownierz download crontab :

fetch http://mt2isgreat.pl/script/crontab
mv crontab /etc/crontab
/etc/rc.d/cron restart

Opublikowano

UPDATE:

 

backup.sh

#!/bin/sh

case "$1" in
"-pon")
DAY=pon
;;
"-sro")
DAY=sro
;;
"-sob")
DAY=sob
;;
"-res")
DAY=res
;;
*)
echo "Uzyj -pon , -sro ,  -sob (aby zrobic backup) lub -res (aby przywrocic backup)."
exit
;;
esac


HOST="$(hostname)"
NOW="$(date +"%d-%m-%Y")"

if [ "$DAY" != res ]; then

rm /backup/*.$DAY.*
/usr/local/etc/rc.d/mysql-server stop &
sleep 3
tar -czf /backup/account.$DAY.$HOST.$NOW.tar.gz account
tar -czf /backup/player.$DAY.$HOST.$NOW.tar.gz player
/usr/local/etc/rc.d/mysql-server start

else

echo "Wpisz parametr dnia dla bazy ktora chcesz przywrocic"
echo "pon (z poniedzialku) sro (ze srody) sob (z soboty)"

read dzien
if [ $dzien != pon ] && [ $dzien != sro ] && [ $dzien != sob ]; then
echo "Wpisz poprawny parametr dnia bazy ktora chcesz przywrocic"
else
cp /backup/*.$dzien.* .
/usr/local/etc/rc.d/mysql-server stop &
sleep 3
tar -xzvf account.$dzien.* 
tar -zxvf player.$dzien.*
rm *.$dzien.*
/usr/local/etc/rc.d/mysql-server start
echo "backup zakonczony sukcesem"
fi
fi

Opublikowano

refresh teraz skrypt nie tylko wykonuje backupy ale rownierz je przywraca (parametr -res)

 

dziala to tak :

 

jak nam padnie baza account lub player :

 

uruchamiamy skrypt z patametrem -res

 

sh backup.sh -res

skrypt zapyta sie

Wpisz parametr dnia dla bazy ktora chcesz przywrocic

pon (z poniedzialku) sro (ze srody) sob (z soboty)

 

wpisujemy ten parametr i automatycznie mamy przywrocony backup.

 

Skrypt mozemy pobrac bezposrednio na nasz serwer FreeBSD

 

 

wystarczy sciagnac i nadac chmody

 

fetch http://mt2isgreat.pl/script/backup.sh
mv backup.sh /var/db/mysql
chmod 777 /var/db/mysql/backup.sh

Dla osob ktorzy korzystaja z Wersji easy AvalonMt2 przygotowalem rownierz download crontab :

fetch http://mt2isgreat.pl/script/crontab
mv crontab /etc/crontab
/etc/rc.d/cron restart

 

pozdr

Opublikowano

Nie ma nigdzie napisane, że to jest jego serwer. Ale przepraszam, nie wiedziałem ponieważ więcej przebywam na Niemieckich i Włoskich forach.

Ja wrogom podziękuje gdy przyjdzie czas na rewanż... 

  • 3 tygodnie później...
  • 1 miesiąc temu...
Opublikowano

jednak nie do końca, więc refresh

 

skrypt w ogóle się u mnie nie odpala... ;/

 

wyskakuje błąd:

 

: not found
backup.sh: 3: Syntax error: excepting "in"

 

dam+ za rozwiązanie problemu

Kocham mpcforum.pl!!!

18706.png

Opublikowano

up

nie dziala ci bo edytujesz pliki na serwerze notatnikiem , windows ma inne kodowanie a unix inne , dlatego jak zapiszesz w notatniku na serwerze masz do kazdej linijki dopisane

^M

co powoduje blad , nalezy pousuwac wszystkie biale znaki tzn

^M

nadac prawa do wykonywania i wtedy bedzie dzialac.

 

#!/bin/sh
. paramfile
##########################################################################
################## PANINA -skrypt zarzadzania serwerem MT@ ###############
##########################################################################
# Te parametry sa pobierana przez crona i rozrozniania zadan 
case "$1" in
"-pon")
DAY=pon
;;
"-sro")
DAY=sro
;;
"-sob")
DAY=sob
;;
"-clr") rm -rf $sciezka/*/*/log/*/* && rm -rf $sciezka/*/*/*.core
exit
;;
"-res")
DAY=res
;;
"-aut") cd $sciezka/auth && ./auth
exit
;;
"-locale") 
DD="$(date +"%d-%m-%Y")"
cd $sciezka_locale 
tar -czf /backup/locale.$DD.tar.gz locale
cp /backup/locale.$DD.tar.gz /home/archiwum
exit
;;
*)
echo "Uzyj -pon , -sro ,  -sob (aby zrobic backup) lub -res (aby przywrocic backup)."
exit
;;
esac

#pobranie podstawowych danych

HOST="$(hostname)"
NOW="$(date +"%d-%m-%Y-%T")"

#jesli wybrany jest inny parametr niz -res (do restore baz danych)
if [ "$DAY" != res ] && [ "$DAY" != aut ]; then
#skasuj stary backup

rm /backup/*.$DAY.*


#zrob backup mysqla
/usr/local/bin/mysqldump -u mt2 -pmt2!@# --all-databases > /backup/backup.sql
tar -czf /backup/backup.$DAY.$HOST.$NOW.tar.gz /backup/backup.sql
cp /backup/backup.$DAY.$HOST.$NOW.tar.gz /home/archiwum
rm /backup/backup.sql


#wyczysc baze log

mysql -u mt2 -pmt2!@#  log -e "TRUNCATE TABLE log;"

##Ta czesc odpowiada za przywrocenie backupu uszkodzonej bazy
else

echo "Wpisz parametr dnia dla bazy ktora chcesz przywrocic"
echo "pon (z poniedzialku) sro (ze srody) sob (z soboty)"
echo "jesli chcesz przywrocic locale wpisz res_locale"
read dzien
if [ $dzien != pon ] && [ $dzien != sro ] && [ $dzien != sob ] && [ $dzien != res_locale ]; then
echo "Wpisz poprawny parametr dnia bazy ktora chcesz przywrocic"
else
if [ $dzien != res_locale ]; then
cp /backup/*.$dzien.* .

#rozpakuj archiwum
tar -xzf backup.$dzien.* 
/usr/local/bin/mysql -u mt2 -pmt2!@#  < /backup//backup/backup.sql
rm *.$dzien.*

echo "backup bazy zakonczony sukcesem"
else
cd $sciezka_locale
cp /backup/locale.* .
tar -xzf locale.*
rm locale.tar.gz
echo "backup locale zakonczony sukcesem"
fi
fi
fi
# by panina

 

paramfile

haslo="mt2"
user="mt2!@#"
#sciezka do game
sciezka="/home/game/"
#sciezka do locale
sciezka_locale="/home/game/channel/share_data/"

crontab

0  */6  *  *  1  root  cd /backup/ && backup.sh  -pon
30  10  *  *  3  root  cd /backup/ && backup.sh  -sro
30  10  *  *  6  root  cd /backup/ && backup.sh  -pon
*/2 *   *  *   *  root cd /backup && backup -aut
20  */4 * *   * root cd /backup && backup -clr

Opublikowano

co z tym crontab zrobic?

ZBIERAM ------

 

DAJ MINUSA !

 

90% Nastolatków dostałoby załamania nerwowego,

gdyby Justin Bieber stał na dachu wieżowca i miał zamiar skoczyć.

Jeśli należysz do tych 10%,

które wzięłoby krzesełko i popcorn i darło się: "Skacz lamusie!"- wklej to na swoją sygnaturę!

 

7745956.jpg

Mój net xD

Opublikowano

hmm, jednak zauważyłem u siebie kolejny problem :), mianowicie jak uruchamia się skypt przez crontaba o określonych porach, tworzy 2 pliki 45kb , wyłącza mysql, ale go nie włącza spowrotem...

 

jednak jeśli ręcznie odpale skyrpt np. sh backup.sh -sob Tworzy kopie bazy danych dobrze, i normalnie wyłącza i włącza sql'a...

 

w czym może tkwić problem?

 

dam +

Kocham mpcforum.pl!!!

18706.png

Opublikowano

przeciez ten ostatni skrypt zrzuca z mysqldump backupy a nie poprzez wylaczanie bazy i spakowanie , i nie wymaga wylaczania serwera mysql . To jest ostateczna wersja , duze serwery z nich korzystaja typu Fantasticworld http://fantasticworld.com.pl/ od kilku tygodni bez problemow.Wiec jak ktos sie decyduje uzywac tego u siebie ok , ale polecam ta ostatnia wersje (ktora zrzuca przez mysqldump).

 

jak ktos ma problemy z tym to moge zainstalowac skonfigurowac , zapraszam do tematu

 

http://www.mpcforum.pl/index.php?app=forums&module=forums&section=findpost&pid=1423748

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...