Tableau Server 백업 스크립트
목적
- Tableau Server 운영을 하고 있는데 뜬금 Disaster Recovery 방안 뭐있냐 질문받음..
- 네 그래서 하루에 한번씩 백업하는거 자동화하께여!
- 그리고 요즘 Window 서버에 백업 작업 많이 걸어놔서.. 기억하려고 포스팅!!
방법개요
- Tableau Server Management에 백업 명령어 (tsm-cli) 있네? 이거 쓸게여!
- 근데 한번 백업하면 백업파일이 200메가 넘네? -> Tableau Server 올려놓은 서버는 코딱지만하니까 S3로 전송한다음에 지워버릴게여~
- S3에 저장된 파일은 수명 주기 정책 걸어서-> 30일 후에 삭제하게 할게요
배치스크립트 (Windows)
-
tsm maintenence backup -f ts_backup -d
Tableau Server의 데이터, 통합문서 백업. 백업 파일 형태는 ts_backup-%yyyy%-%mm%-%dd%.tsbak -
tsm settings export --output-config-file ts_export-2021-07-28.json
Tableau Server의 토폴로지 설정 export. 백업하고 달리, 날짜 지정해줘야함. 파일 형태는 json -
당연하지만 tsm 명령어 이후에는 배치 스크립트가 자동 종료되므로.. call 사용
-
call tsm maintenance cleanup -l --log-files-retention 1
로그파일이 포함되어있으면 파일 사이즈 커지므로 주기적으로 지워준다 -
forfiles /P "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups" /M *.tsbak /D -4 /C "cmd /c del @file
서버 상에서 백업파일 4일치만 남기도록 백업파일을 지워준다. -
daily-backup.bat
@echo off rem delete existing file if exist "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_backup-%date%.tsbak" del /s /q "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_backup-%date%.tsbak" rem cleanup log files call tsm maintenance cleanup -l --log-files-retention 1 if %errorlevel% neq 0 exit /b %errorlevel% rem cmd echo backup tableau server repo call tsm maintenance backup -f ts_backup -d if %errorlevel% neq 0 exit /b %errorlevel% rem del files call forfiles /P "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups" /M *.tsbak /D -4 /C "cmd /c del @file"
-
daily-export.bat
@echo off rem log set LOGFILE=%date%-export.log call :LOG > %LOGFILE% exit /B :LOG rem Get start time: echo %date% %time% rem delete existing file if exist "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_export-%date%.json" del /s /q "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_export-%date%.json" rem cmd echo export tableau server topology call tsm settings export --output-config-file "ts_export-%date%.json" rem Get end time: echo %date% %time%
-
param.bat
@if (@x)==(@y) @end /***** jscript comment ****** @echo off cscript //E:JScript //nologo "%~f0" exit /b 0 @if (@x)==(@y) @end ****** end comment *********/ var d = new Date(); d.setDate(d.getDate()); var mm=(d.getMonth())+1 if (mm<10){ mm="0"+mm; } var dd=d.getDate(); if (dd<10) { dd="0"+dd; } WScript.Echo(d.getFullYear()+"-"+mm+"-"+dd);
-
daily-transfer.bat : S3 전송
@echo off rem log set LOGFILE=%date%-transfer.log call :LOG > %LOGFILE% exit /B :LOG rem Get start time: echo %date% %time% rem transfer echo s3 cp export file aws s3 cp "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_export-%date%.json" s3://hdci-dt/db=backup/ rem transfer echo s3 cp backup file aws s3 cp "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\backups\ts_backup-%date%.tsbak" s3://hdci-dt/db=backup/ rem Get end time: echo %date% %time%
S3 수명주기