メリークリスマス?!!
相変わらずクリスマスでもサーバいじる私ですがw
前回ブログしたbitwardenの続きです。
[docker][Free Open Source Password Manager]無料パスワード管理システムbitwardenをインストールしてみた!
バックアップとリストア(復元)をまったく理解していなかったので
今回はそのフローをブログします。
■Backing up your on-premise hosted data
https://help.bitwarden.com/article/backup-on-premise/
バックアップに関しては特に問題ないはず。(vault DBをバックアップしてる感じ)
以下のように一日一回バックアップが出来ているのでこいつをリストアすればいいだけです!
※Macのlocalhostでbitwarden動いてます。
1 2 3 4 5 |
[~/bitwarden/bwdata/mssql/backups] $ ll total 15168 -rw-r----- 1 adachin staff 3588096 11 30 08:59 vault_FULL_12232017_000001.BAK -rw-r----- 1 adachin staff 4177920 12 24 18:29 vault_FULL_12242017_093007.BAK |
■bitwarden/mssql
bitwardenのDBはMSSQLで出来ているので、経験したことない私に取って大変でした。。w
一旦動いているmssqlコンテナにログインしてみましょう。
・docker ps
1 2 |
$ docker ps |grep mssql 0a4650250449 bitwarden/mssql:1.14.1 "/entrypoint.sh" 6 hours ago Up 6 hours 1433/tcp mssql |
・docker exec -it
1 2 |
$ docker exec -it 0a4650250449 /bin/bash root@0a4650250449:/# |
・backup-db.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
root@0a4650250449:/# ll total 84 drwxr-xr-x 1 root root 4096 Dec 24 09:32 ./ drwxr-xr-x 1 root root 4096 Dec 24 09:32 ../ -rwxr-xr-x 1 root root 0 Dec 24 04:16 .dockerenv* -rwxr-xr-x 1 root root 242 Aug 31 13:59 backup-db.sh* -rw-r--r-- 1 root root 0 Dec 24 09:32 backup-db.sql drwxr-xr-x 1 root root 4096 Aug 28 18:17 bin/ drwxr-xr-x 2 root root 4096 Apr 12 2016 boot/ drwxr-xr-x 5 root root 340 Dec 24 04:16 dev/ -rwxr-xr-x 1 root root 64 Aug 21 16:48 entrypoint.sh* drwxr-xr-x 1 root root 4096 Dec 24 04:16 etc/ drwxr-xr-x 2 root root 4096 Apr 12 2016 home/ -rwxrwxr-x 1 root root 866 Aug 28 18:15 install.sh* drwxrwxr-x 1 root root 4096 Aug 28 18:16 lib/ drwxr-xr-x 1 root root 4096 Aug 28 18:17 lib64/ drwxr-xr-x 2 root root 4096 Nov 14 2016 media/ drwxr-xr-x 2 root root 4096 Nov 14 2016 mnt/ drwxrwxr-x 1 root root 4096 Aug 28 18:17 opt/ dr-xr-xr-x 148 root root 0 Dec 24 04:16 proc/ drwx------ 1 root root 4096 Dec 24 09:12 root/ drwxr-xr-x 1 root root 4096 Dec 24 04:16 run/ drwxr-xr-x 1 root root 4096 Aug 28 18:17 sbin/ drwxr-xr-x 2 root root 4096 Nov 14 2016 srv/ dr-xr-xr-x 13 root root 0 Dec 24 05:04 sys/ drwxrwxrwt 1 root root 4096 Dec 24 09:17 tmp/ drwxrwxr-x 1 root root 4096 Aug 28 18:15 usr/ drwxr-xr-x 1 root root 4096 Aug 28 18:16 var/ |
「/」配下にbackup-db.shがあったのでこいつが内部で動いてます。
1 2 3 4 5 6 7 |
#!/bin/sh # Delete backup files older than 30 days find /etc/bitwarden/mssql/backups/ -type f -name '*.BAK' -mindepth 1 -mtime +30 -delete # Do a new backup /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ${SA_PASSWORD} -i /backup-db.sql |
ちなみにDBのパスはどこに書いてあるのか…
1 2 3 4 5 |
[~/bitwarden/bwdata/env] $ cat mssql.override.env ACCEPT_EULA=Y MSSQL_PID=Express SA_PASSWORD=XXXXXXXXXXXXXXXXXXXX |
です。次はdockerホストからバックアップファイルをコンテナ内に飛ばしましょう。
・docker cp
1 |
$ docker cp vault_FULL_12242017_093007.BAK 0a4650250449:/root |
■RESTORE DATABASE
・login database
1 2 3 |
root@0a4650250449:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U sa Password: XXXXXXXXXXXXXXXXX 1> |
・delete vault db
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
4> drop database vault; 5> go 1> create database vault; 2> go 1> select name from sys.databases; 2> go name -------------------------------------------------------------------------------------------------------------------------------- master tempdb model msdb vault |
・SET SINGLE_USER
MSSQLは簡単に復元ができないのでvault DBをシングルユーザモードにします。
1 2 3 4 |
1> ALTER DATABASE vault 2> SET SINGLE_USER 3> WITH ROLLBACK IMMEDIATE 4> go |
・RESTORE
1 2 3 4 5 |
1> RESTORE DATABASE vault FROM DISK = "/root/vault_FULL_12242017_093007.BAK" WITH REPLACE 2> go Processed 496 pages for database 'vault', file 'vault' on file 1. Processed 2 pages for database 'vault', file 'vault_log' on file 1. RESTORE DATABASE successfully processed 498 pages in 0.032 seconds (121.582 MB/sec). |
・updatedb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
~/bitwarden/ $ ./bitwarden.sh updatedb _ _ _ _ | |__ (_) |___ ____ _ _ __ __| | ___ _ __ | '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \ | |_) | | |_ \ V V / (_| | | | (_| | __/ | | | |_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_| Open source password management solutions Copyright 2015-2017, 8bit Solutions LLC https://bitwarden.com, https://github.com/bitwarden =================================================== Docker version 17.09.1-ce, build 19e2cf6 docker-compose version 1.17.1, build 6d101fb 1.14.1: Pulling from bitwarden/setup Digest: sha256:ac28e542707d10b4508219a23a70367fab9e85b6cf6cc1f501af3652ae041215 Status: Image is up to date for bitwarden/setup:1.14.1 Migrating database. Beginning transaction Beginning database upgrade Fetching list of already executed scripts. No new scripts need to be executed - completing. Migration successful. Database update complete |
OK!!!?
ログインしたところ全て戻ってました!!
■まとめ
にしてもMSSQL童貞でしたがなんとか復元できてよかったわい。
あとはgoofysでバックアップファイルをS3に保管しておけばぶっ壊れても直せる。
慣れればDBリストアをdocker ~ \のようにワンラインで書ければ尚かっこよす。
・参考
https://qiita.com/chihiro/items/75b12aca631f79be28b2
https://docs.microsoft.com/ja-jp/sql/linux/tutorial-restore-backup-in-sql-server-container
0件のコメント