_euan_ 1 Napisano 25 Września 2008 Udostępnij Napisano 25 Września 2008 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Automatyczny backup baz danych Sello i Subiek GT Backup oparty w 100% o darmowe rozwiązanie. Jakoże bazy Sello i Subiekta (przynajmiej w firmie w której pracuje) nie zajmują zbyt dużo (po spakowaniu Subiekt 40mb, Sello 113 mb - ale szybko rośnie), dlatego można pokusić się o robienie kopii pełnych zamiast przyrostowych. Osobiscie jestem zwolennikiem robienia pełnych backupów - takie zboczenie zawodowe. Sytuacja: jest serwer o nazwie SERWER na którym uruchamiany jest MSSQL server i chcemy aby automatycznie robił sobie backup, np. subiekta raz dziennie, a sello dwa razy dziennie. Żeby nie było zbyt rozrzutnie dorzucimy do tego automatyczne archiwizowanie backupów rarem i okresowe usuwanie kopii przestarzałych. Backupy bedziemy przykładowo przechowywać na zewnetrznym dysku E:\_backup\Sello\spakowane i E:\_backup\SubiektGT\spakowane. 1. Pobieramy darmowy programik SQL Scheduler http://www.lazycoding.com/downloads/SQLScheduler_LatestVersion.zip 2. Dodajemy nowy serwer na liście, w naszym przypadku będzie to SERWER\INSERTGT (jakoze domyslnie tam są bazy GT i Sello) 3. Klikamy prawym SERWER\INSERTGT i wybieramy New Job: GENERAL: Connection SQL Server Authentication Username: sa Password: DETAILS: SQL: -------------------------------------------------------------------- DECLARE @BackupName VARCHAR(100) DECLARE @BackupFileName VARCHAR(100) DECLARE @BackupPath VARCHAR(1000) SET @BackupName = 'nazwa_bazy-' + convert(nvarchar(20), getdate(), 112) SET @BackupFileName = @BackupName + N'.bak' SET @BackupPath = N'E:\_backup\Sello\' + @BackupFileName BACKUP DATABASE nazwa_bazy TO DISK = @BackupPath WITH NOFORMAT, NOINIT, NAME = @BackupFileName, SKIP, REWIND, NOUNLOAD, STATS = 10 exec xp_cmdshell 'C:\WINDOWS\sello.bat' ---------------------------------------------------------------------- Script timeout in seconds: 1200 SCHEDULE: Type Recurring every 12 hour Duration 16:30 4. Klikamy save. To zadanie bedzie wykonywało backup bazy Sello o nazwie nazwa_bazy o godzinie 16:30 i 4:30. Na koniec wykonywania backupu uruchamiany jest plik sello.bat, który musimy stworzyć i wrzucić, w tym przypadku, do C:\WINDOWS. sello.bat: cd E:\_backup\Sello E: "C:\Program Files\WinRAR\rar.exe" a -df -rr1 -ag[DD-MM-YYYY-HHmm] -ri7 %1 E:\_backup\Sello\spakowane\sello-%1.rar 5. Wykonanie powyzszego skryptu spowoduje spakowanie RARem wszystkich plików znajdujacych się w katalogu E:\_backup\Sello i umieszczenie archiwów w podkatalogu 'spakowane' o nazwach w formacie 'sello-[17-09-2008-1630].rar'. Czyli w nawiasie data i godzina wykonania backupu. Dodatkowo niespakowane kopie zostaną usuniete z nadrzędnego katalogu. 6. Dla Subiekta GT sytuacja wygląda praktycznie identycznie, wystarczy zmienić ścieżki i nazwy baz. SQL bedzie wyglądał np tak: DECLARE @BackupName VARCHAR(100) DECLARE @BackupFileName VARCHAR(100) DECLARE @BackupPath VARCHAR(1000) SET @BackupName = 'nazwa_bazy-' + convert(nvarchar(20), getdate(), 112) SET @BackupFileName = @BackupName + N'.bak' SET @BackupPath = N'E:\_backup\SubiektGT\' + @BackupFileName BACKUP DATABASE nazwa_bazy TO DISK = @BackupPath WITH NOFORMAT, NOINIT, NAME = @BackupFileName, SKIP, REWIND, NOUNLOAD, STATS = 10 exec xp_cmdshell 'C:\WINDOWS\subiektgt.bat' subiektgt.bat: cd E:\_backup\SubiektGT e: "C:\Program Files\WinRAR\rar.exe" a -df -rr1 -ag[DD-MM-YYYY-HHmm] -ri7 %1 E:\_backup\SubiektGT\spakowane\subiekt-%1.rar 7. Mając w SQL Scheduler uruchomione dwa powyższe zadania, ustawione na godziny jakie nam odpowiadają, możemy być spokojni o ewentualną awarię bazy danych, gdyż możemy ją w każdej chwili przywrócić. Ścieżką docelową kopii zapasowych powinien być najlepiej dysk zewnętrzny, który w wypadku awarii sprzętowej serwera lub jego dysku, pozostanie nienaruszony. Przechowywanie backupów na tym samym dysku na którym znajduje się zainstalowany MSSQL jest pozbawione sensu, gdyz w wypadku awarii sprzętowej pozostajemy z niczym. Jako ścieżkę docelową możemy również użyć sieciowej lokacji, jednak powinna ona być dostępna cały czas. Na tą chwilę poprzestańmy na tym, że serwer uzywa jedynie wewnetrznego dysku oznaczonego literą C:\, a dysk E:\ to jakis zewnetrzny dysk na USB lub w najgorszym wypadku pendrive. Nastepnym razem dopisze jak zautomatyzowac zarządzanie backupami, czyli ich usuwanie gdy są starsze niż podany przez nas okres czasu, aby nie doprowadzić do zapełnienia dysku. Cytuj Link to postu
mac 1 Napisano 24 Kwietnia 2009 Udostępnij Napisano 24 Kwietnia 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT a czy nie da się tego zrobić z poziomu SQL Servera? Opcje pojedynczego backupu znalazłem , ale nie potrafie wrzucić tego w jakiś harmonogram. Zna się ktoś na tym? Fajnie by było gdyby ktoś z Insertu zapodał jakiś sposób na automatyczne tworzenie kopii zapasowych ich programów. Z góry dzięki! Cytuj Link to postu
mac 1 Napisano 29 Kwietnia 2009 Udostępnij Napisano 29 Kwietnia 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT No to może przynajmniej sposób na backup ze stacji klienckich? Cytuj Link to postu
SRL SRL 11 Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Uważam, że przydałby się mechanizm jednoczesnego zapisu danych w czasie rzeczywistym do dwóch identycznych baz na różnych dyskach. W przypadku awarii jednego z dysków możemy kontynuować pracę od momentu awarii. Backup wg. _euan_ jest ciekawy, ale dane możemy odtworzyć tylko na podstawie ostatniej archiwizacji - kilka godzin pracy zawsze nam bezpowrotnie zniknie, a przy ok.200-300 transakcjach dziennie odtworzenie danych może być niemożliwe. Cytuj Link to postu
Bartosz Rosa 1 775 Napisano 5 Maja 2009 Udostępnij Napisano 5 Maja 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT jest takie coś i nazywa się RAID 1. Cytuj Link to postu
SRL SRL 11 Napisano 5 Maja 2009 Udostępnij Napisano 5 Maja 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT oczywiście korzystamy z RAID'a, ale nie każdy ma taką możliwość. Cytuj Link to postu
mac 1 Napisano 5 Maja 2009 Udostępnij Napisano 5 Maja 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Raid to raid, też mam, ale nie rozwiązuje to problemów backupów, więc mam nadzieje , że ktoś zapoda jakieś rozwiązanie. Cytuj Link to postu
SRL SRL 11 Napisano 5 Maja 2009 Udostępnij Napisano 5 Maja 2009 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Automatyzacja procesu backupu w Microsoft SQL 2005/2008 Express Firma Microsoft oprócz swojego flagowego produktu jakim jest Microsoft SQL 2005/2008 Server (wydała również w pełni darmową lecz okrojoną wersję tegoż oprogramowania. Mowa tu oczywiście o SQL 2005/2008 Express . Server ten posiada trzy istotne ograniczenia : Obsługa tylko jednego procesora , maksymalnie potrafi wykorzystać 1 GB pamięci fizycznej , maksymalny rozmiar bazy to 4 GB . Oprócz wyżej wymienionych minusów są jeszcze inne jak min brak opcji ustawiania harmonogramu automatycznie uruchamianych zadań jak np. backup , procesowanie kostek itp. Jednym z tych ograniczeń a dokładnie wykonaniem automatycznie kopii postanowiłem się zająć. Zaczynamy , w moim modelu zakładam że użytkownik posiada zainstalowany serwer bazodanowy SQL 2005 , pakiet SP2 i narzędzie Management Studio Express. Po pierwsze za pomocą Management Studio wybieramy interesującą naszą bazę . Klikamy opcję Tasks -> Back UP -> przechodzimy do menu Options gdzie zaznaczamy opcję „Overwrite All existing backup sets” ( w przeciwnym wypadku kolejne kopię będą się dopisywać do naszego pliku – co nie jest zalecane zwłaszcza w przypadku gdy nośnik kopii zapasowych się nie zmienia ). Możemy jeszcze zaznaczyć opcję weryfikacji po wykonaniu się kopi . Wybieramy jeszcze ścieżkę gdzie, kopia ma być zapisywana i klikamy meny Script -> Script Action fo File . Ostatnim krokiem jest zapisanie zadania do pliku z rozszerzeniem sql. By uruchomić nasze zadanie w wierszu poleceń ( lub w skrypcie ) należy wykonać ciąg sqlcmd -S server -i backupsql_1.sql. Sqlcmd to narzędzie wchodzące w skład pakietu Management Studio( domyślna ścieżka to C:\Microsoft SQL Server\90\Tools\Binn). Skrypt wystarczy dodać do Harmonogramu Zadań Windows i wykonywać go w zaplanowanych porach Przykład: mojabaza.sql BACKUP DATABASE [mojabaza] TO DISK = N’D:\Microsoft SQL Server 2005 Express\MSSQL.1\MSSQL\Backup\mojabaza.bak’ WITH NOFORMAT, INIT, NAME = N’mojabaza-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO Backupmojabaza.cmd sqlcmd -S server -i mojabaza.sql rename “D:\Microsoft SQL Server 2005 Express\MSSQL.\MSSQL\Backup\mojabaza.bak” mojabaza_%DATE%.bak W tym przykładzie sqlcmd zrzuci nam bazę do pliku mojabaza.bak , a następnie zostanie mu zmieniona nazwa na mojabaza_dzisiejszadata.bak W przypadku posiadania wielu baz i częstego wykonywania się kopii na pewno zauważycie że miejsce przeznaczone na backup szybko się zapełnia . Można temu zaradzić an kilka sposobów . Ja radzę sobie narzędziem FORFILES np. deloldbakfiles.cmd Forfiles -p ” D:\Microsoft SQL Server 2005 Express\MSSQL.1\MSSQL\Backup” -m *.bak -d -7 -c “CMD /C del @file” Exit Uruchamiając to narzędzie raz w na dwa tygodnie czyszczę katalog ze starych kopii – oczywiście wcześniej jeszcze przenoszę kopie na bezpieczny storage. Cytuj Link to postu
raffter 0 Napisano 14 Sierpnia 2011 Udostępnij Napisano 14 Sierpnia 2011 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT @slr Wykonałem wszystkie czynności opisane przez Ciebie do wykonania backupu jednak mam problem z wywołaniem skryptu uruchamiającego backup. Poniżej treść utworzonych przeze mnie plików uruchamiających: Backup_Sello_Allehandel.sql BACKUP DATABASE [www_allehandel_pl__1_7_2_] TO DISK = N'H:\Backup_SQL\Sello\www.allehandel.pl\backup_sello_allehandel.bak' WITH NOFORMAT, INIT, NAME = N'www_allehandel_pl__1_7_2_-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO Run_Backup.cmd sqlcmd -S server -i Backup_Sello_Allehandel.sql rename “H:\Backup_SQL\Sello\www.allehandel.pl\backup_sello_allehandel.bak” backup_sello_allehandel_%DATE%.bak Uruchomienie pliku Run_Backup.cmd wyświetla następujący komunikat: HResult 0x35, Level 16, State 1 Named Pipes Provider: Cloud can open a connection to SQL Server [53] Sqlcmd: Error: Microsoft SQL Native Client: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allowed remote connections... Sqlcmd: Error: Microsoft SQL Native Client: Login timeout expired. Z powyższego komunikatu wynika że wystąpił błąd ustanowienia połączenia z serwerem i może to być spowodowane brakiem możliwości połączenia zdalnego. W opcjach konfiguracji SQL Serwera mam ustawione zezwolenie na połączenia zdalne. Prosze o sugestie odnośnie rozwiązania tego problemu. Cytuj Link to postu
tadzimir.pl 155 Napisano 14 Sierpnia 2011 Udostępnij Napisano 14 Sierpnia 2011 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Radzę sobie w b. podobny sposób i, szczerze pisząc, czegoś mi w wierszu uruchamiającym backup brakuje - a konkretnie informacji nt. logowania do serwera SQL. Spróbuj dopisać do tego wiersza, jeśli używasz autoryzacji mieszanej dane użytkownika bazy, czyli sqlcmd -U użytkownik -P hasło -S server -i Backup_Sello_Allehandel.sql Jeśli korzystasz z autoryzacji Windows to zamiast tego musisz chyba zastosować opcję -E - ale to już zajrzyj do helpa od sqlcmd. Nie korzystałem, więc nie znam. Cytuj Link to postu
raffter 0 Napisano 15 Sierpnia 2011 Udostępnij Napisano 15 Sierpnia 2011 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Radzę sobie w b. podobny sposób i, szczerze pisząc, czegoś mi w wierszu uruchamiającym backup brakuje - a konkretnie informacji nt. logowania do serwera SQL. Spróbuj dopisać do tego wiersza, jeśli używasz autoryzacji mieszanej dane użytkownika bazy, czyli sqlcmd -U użytkownik -P hasło -S server -i Backup_Sello_Allehandel.sql Jeśli korzystasz z autoryzacji Windows to zamiast tego musisz chyba zastosować opcję -E - ale to już zajrzyj do helpa od sqlcmd. Nie korzystałem, więc nie znam. Dzięki tadzimir. Dopisanie informacji o logowaniu, w moim przypadku autoryzacja windows -E oraz ustawienie nazwy serwera pomogło (o tym też zapomniałem ). Wszystko działa jak należy. Poniżej prawidłowy kod: sqlcmd -E -S localhost\insertgt -i Backup_Sello_Allehandel.sql Cytuj Link to postu
tadzimir.pl 155 Napisano 16 Sierpnia 2011 Udostępnij Napisano 16 Sierpnia 2011 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT A plusik gdzie? Cytuj Link to postu
Gall Anonim 0 Napisano 11 Września 2013 Udostępnij Napisano 11 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Witam, Wszystko działa pięknie, z jednym ale... ale jak robi się archiwizacja strasznie przymula mi kompa, można to jakoś obejść? Co może być przyczyną? Pozdrawiam, Krzysiek Cytuj Link to postu
tadzimir.pl 155 Napisano 11 Września 2013 Udostępnij Napisano 11 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Być może obniżając priorytet procesu wykonującego backup - ale to na pewno kosztem czasu wykonywania backupu. Zależy w jaki sposób korzystasz z komputera, na którym stoi baza - u mnie np. działa on 24h/dobę, więc mam ustawione robienie backupu codziennie w nocy i nie ma problemu. Cytuj Link to postu
Bartosz Rosa 1 775 Napisano 12 Września 2013 Udostępnij Napisano 12 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT A plusik gdzie? Mrugnięcie Śledzisz swoje "pomóki" ? W sumie to jeszcze 1 i będziesz miał więcej ode mnie . Co do zamulania, to najlepiej mieć komputer wyposażony w procesor dwurdzeniowy (co najmniej). Wtedy SQL Server wykonując backup nie będzie blokował pracy. Inna sytuacja gdy to dysk twardy stanowi problem, zwłaszcza w laptopach, gdzie dyski są relatywnie wolne. Cytuj Link to postu
tadzimir.pl 155 Napisano 12 Września 2013 Udostępnij Napisano 12 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT A plusik gdzie? Mrugnięcie Śledzisz swoje "pomóki" ? W sumie to jeszcze 1 i będziesz miał więcej ode mnie . Orientacyjnie. Ale kiedyś śledziłem bardziej - a tamten post jest sprzed ponad 2 lat... Cytuj Link to postu
Gall Anonim 0 Napisano 12 Września 2013 Udostępnij Napisano 12 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Priorytet procesu ustawiony jest na LOW, procesor nie jest obciążony. Najprawdopodobniej to dysk przymula, czy RAID 0 by pomógł? Czy lepiej jeden porządny szybki dysk? Cytuj Link to postu
tadzimir.pl 155 Napisano 12 Września 2013 Udostępnij Napisano 12 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT RAID to zabezpieczenie przed utratą danych, nie system przyspieszający działanie dysku. Nie korzystałem, ale przypuszczam, że jeśli to spowolni on operacje, a nie przyspieszy. Jeden szybki dysk na pewno będzie pod tym względem lepszym rozwiązaniem. Cytuj Link to postu
Bartosz Rosa 1 775 Napisano 13 Września 2013 Udostępnij Napisano 13 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT a tamten post jest sprzed ponad 2 lat... faktycznie Cytuj Link to postu
Gall Anonim 0 Napisano 13 Września 2013 Udostępnij Napisano 13 Września 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT RAID to zabezpieczenie przed utratą danych, nie system przyspieszający działanie dysku. Nie korzystałem, ale przypuszczam, że jeśli to spowolni on operacje, a nie przyspieszy Może lepiej przyjąć na forum zasadę: Nie znam się to się nie wypowiadam? Ponawiam pytanie: Czy RAID 0 w odczuwalny sposób przyśpieszy działanie bazy danych? Cytuj Link to postu
Ks. Robak 314 Napisano 15 Grudnia 2013 Udostępnij Napisano 15 Grudnia 2013 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Ponawiam pytanie: Czy RAID 0 w odczuwalny sposób przyśpieszy działanie bazy danych? Zwykle powinno tak się stać. Oczywiście należy zainwestować w sprzętowy raid, dobrej firmy (Adaptec, LSI), bo programowe raidy dostępne na płytach głównych dość szybko się duszą przy operacjach bazodanowych, nie mówiąc o pożeraniu procesora. Ewentualnie można na początek spróbować z dyskiem SSD, ale tutaj trzeba by poszukać odpowiedniego modelu do baz danych, gdyż zwykłe jak wiadomo osiągają marne wyniki w odczycie/zapisie dużych ilości małych porcji danych. Oczywiście trzeba też mieć na uwadze ograniczoną ilość operacji zapisu dla tego typu dysków, co przy bazach danych może szybko okazać się problemem. Cytuj Link to postu
Krystian Kolasa 84 Napisano 12 Stycznia 2014 Udostępnij Napisano 12 Stycznia 2014 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT a tak z ciekawości, nie można zrobić w sello takiego mechanizmu jak w subiekcie na automatyczne backupy? w subiekcie wchodzi się w archiwizator, PPM na bazie, tworzysz harmonogram i jest z głowy. działa za każdym razem. Cytuj Link to postu
Bartosz Rosa 1 775 Napisano 13 Stycznia 2014 Udostępnij Napisano 13 Stycznia 2014 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT Oczywiście, że można. Tylko Sello nie posiada zewnętrznego archiwizatora jak Subiekt, więc musielibyśmy go dorobić, na co niestety w tej chwili "wolnego" czasu nie mamy. Cytuj Link to postu
Ks. Robak 314 Napisano 13 Stycznia 2014 Udostępnij Napisano 13 Stycznia 2014 w Automatyczne wykonywanie kopii zapasowych baz danych Sello i Subiekt GT W zasadzie bardziej zaawansowany użytkownik może to wszystko osiągnąć sam, poprzez https://forum.sello.pl/index.php?topic=1067.msg11332#msg11332 oraz plik bat, który trzeba samodzielnie wsadzić do Harmonogramu Zadań. U mnie tak działa i nie muszę pamiętać o backupach. Czas w nazwie pliku też można zapisać. U mnie działa taki ciąg w pliku bat (pod windows 7) SET HOUR=%time:~0,2% SET dtStamp9=%date%-0%time:~1,1%_%time:~3,2%_%time:~6,2% SET dtStamp24=%date%-%time:~0,2%_%time:~3,2%_%time:~6,2% if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%) potem tylko wykorzystujemy zmienną %dtStamp% w nazwie np.: sello_backup_%dtStamp%.bak daje to wynik jak: sello_backup_2014-01-06-20_31_13.bak No i robiąc backupy samodzielnie mamy pełną dowolność - można od razu sobie to skompresować rarem czy 7zipem, wysłać ftpem czy wgrać na drugi dysk na wszelki wypadek. Cytuj Link to postu
Polecane posty
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.