Offtopicując... Płaskie pliki były fajne w latach '90 kiedy biedahostingi nie miały SQL i księgi gości oraz liczniki leciały na plikach..

"Dziś sam jestem już dziadkiem" i mówię Wam -  nie cofajcie się w rozwoju ;)

Max czego bym się nie wstydził to /etc/freeradius/users jako fallback w razie końca świata ;)

Pozdrowienia.

11 mar 2015 21:58 "Tomasz Chiliński" <tomasz.chilinski@chilan.com> napisał(a):
W dniu 11.03.2015 21:45, Marcin Nastałek napisał(a):
Nie wiem kolego czy coś Ci to pomoże ale ja kwestię zapasowego
serwera rozwiązałem następująco:
1. Zgrałem po kluczach rsa ze sobą dwa serwery z LMS.
2. Z głównego serwera wykonuje sobie skrypt:

#!/bin/bash
CREATE=`date +%F`
DELETE=`date +%F -d"-28 day"`
ARCHIWUM=`date +%F -d"-1 day"`
rm /backups/lms.sql
wait
sleep 5
mysqldump -u baza_lms -phaslo_lms > /backups/lms.sql
wait
sleep 5

ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  cp /backups/lms.sql /backups/archiwum/$CREATE.lms.sql
fi
exit"
wait
ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  rm /backups/lms.sql
fi
exit"
ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/archiwum/$DELETE.lms.sql ]
then
  rm /backups/archiwum/$DELETE.lms.sql
fi
exit"
sleep 5
scp -i /root/backups/id_rsa -P 9876 /backups/lms.sql
root@adres_IP_serwerabackupu:/backups/lms.sql
wait
sleep 5
ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  mysql -u user_bazy_na_serwerze_backupu
-phaslo_do_bazy_na_serwerze_backupu lms < /backups/lms.sql
fi
exit"
sleep 5
exit

Skrypt jaki jest każdy widzi, prosty jak budowa cepa.
CREATE=`date +%F`
DELETE=`date +%F -d"-28 day"`
ARCHIWUM=`date +%F -d"-1 day"`

Definicja danych które pozwalają mi segregować logi i tworzyć
archiwum na serwerze backupu.
rm /backups/lms.sql

Usunięcie kopii lokalnej backupu z wczoraj

mysqldump -u baza_lms -phaslo_lms > /backups/lms.sql

Wykonanie nowego zrzutu.

ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  cp /backups/lms.sql /backups/archiwum/$ARCHIWUM.lms.sql
fi
exit"

Loguje się na serwer backupu za pomocą klucza RSA (9876 to port ssh)
i kopiuje do archiwum backup z wczoraj dodając do niego datę z
wczoraj.

ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  rm /backups/lms.sql
fi
exit"

Usuwam stary backup z folderu roboczego.

ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/archiwum/$DELETE.lms.sql ]
then
  rm /backups/archiwum/$DELETE.lms.sql
fi
exit"
sleep 5

Jeśli istnieje na serwerze kopia starsza niż 27 dni to ją usuwam
żeby utrzymać porządek.

scp -i /root/backups/id_rsa -P 9876 /backups/lms.sql
root@adres_IP_serwerabackupu:/backups/lms.sql
wait
sleep 5

Kopiuje po scp backup na serwerek.

ssh -p 9876 -i /backups/id_rsa root@adres_IP_serwerabackupu "if [ -e
/backups/lms.sql ]
then
  mysql -u user_bazy_na_serwerze_backupu
-phaslo_do_bazy_na_serwerze_backupu lms < /backups/lms.sql
fi
exit"
sleep 5
exit

Wrzucam backup bazy danych.

3. Dodałem sobie powyższy skrypt do crona na 4:00 rano żeby nie
zakłócać działania (lekki lag przy zgrywaniu kopii bazy).

Sumując: na dwóch serwerach mam identyczne dane za wyjątkiem danych
z obecnego dnia. Można sobie robić co godzinę a nawet co 10 minut
jak nie masz dużo mało klientów, faktur itd. U mnie to troszkę
trwa więc przez dzień tego nie robię. Replikacja się może
wysypać ale ten skrypt się nie sypie. Możesz sobie np. wypluć do
pliku echo z wykonania i na jego podstawie ponawiać co kilka minut.
Pamiętaj tylko żeby funkcje SQL na dwóch serwerach były
identycznie dopisane. Ja tym sposobem działam od 10 lat, główny LMS
kilka razy mi się wysypał ale conajwyżej 10 nowych klientów
dopisanych tego dnia traciło na chwilę neta (jeśli ich
rozłączyło co też nie często się u mnie trafia więc tak
naprawdę nikt oprócz mnie nie zauważył awarii). Do płaskich
plików to można zapisywać jak się ma setkę klientów. Przy
większej liczbie klientów znacznie szybsza jest baza mysql. Polecam
percone zoptymalizować pod radiusa, obecnie testuję także na
MariaDB działa to naprawdę błyskawicznie. Dalej idąc tym tym
tokiem możesz nawet działać na dowolnym LMS i porównywać liczbę
wierszy w pliku SQL i w zalezności od tego kopiować z backupu na
główny lub na odwrót. u mnie jest dużo sleepów po wait bo miałem
trochę przywieszek przy dużych bazach (nie wiem dlaczemu) dodanie
sleepów po wykonaniu komendy sprawiło że śmiga znakomicie, u
Ciebie na 99% będziesz mógł je usunąć i przyśpieszyć.

Pozdrawiam

1) Poczytaj:
man ssh_config
(jak dobrze poczytasz to może Ci się mocno skrypt uprości).
2) Poczytaj również:
man nice
man ionice
3) "Do płaskich plików to można zapisywać jak się ma setkę klientów. Przy
większej liczbie klientów znacznie szybsza jest baza mysql."
Podasz jakieś źródło takiego wniosku? ;-)

--
Pozdrawiam
Tomasz Chiliński, Chilan
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms