Redisのバックアップと復旧
hubotが覚えた赤外線信号やUNIXコマンドなどをバックアップする方法を説明する。
hubotのデータは、Redisというデータベースで管理されているので、Redisのバックアップと復元の方法を説明する。
https://gyazo.com/26bd486a873d49e0fbf7202f8f117372
バックアップしたデータは、異なる機種にも流用できる。
例えば Mac で覚えた赤外線データを、Raspberry Pi にコピーして Redis を復元しても、そのまま利用できる。 万が一の障害に備えて、運用しているサーバとは別の場所にバックアップを保管しておくと、一層安心できるだろう。
Raspberry Piの場合
バックアップ
code:sh
$ redis-cli save # データが /var/lib/redis/dump.rdb に記録される
$ sudo cp /var/lib/redis/dump.rdb ~/homebot/dump_date "+%Y%m%d_%H%M%S".rdb # データを~/homebotに退避
(バックアップデータはLZF形式という珍しい圧縮アルゴリズムで圧縮されており、データの内容を読むには一手間かかる。)
復旧
code:sh
$ sudo systemctl stop redis # redisを停止
$ sudo cp ~/homebot/dump_2018????_??????.rdb /var/lib/redis/dump.rdb # 退避しておいたバックファイルに差し替える
$ sudo systemctl start redis # redisを起動
Macの場合
バックアップ
code:sh
$ redis-cli save # データが /var/lib/redis/dump.rdb に記録される
$ cp /usr/local/var/db/redis/dump.rdb ~/homebot/dump_date "+%Y%m%d_%H%M%S".rdb # データを~/homebotに退避
(バックアップデータはLZF形式という珍しい圧縮アルゴリズムで圧縮されており、データの内容を読むには一手間かかる。)
復旧
code:sh
$ brew services stop redis # redisを停止
$ cp ~/homebot/dump_2018????_??????.rdb /usr/local/var/db/redis/dump.rdb # 退避しておいたファイルに差し替える
$ brew services start redis # redisを起動
Android の場合
準備(最初に一度だけ行えばOK。今後はこの準備は不要)
まず、redisに記録されているデータを、ファイルに保存する
code:sh
$ cd ~/homebot
$ redis-cli save # redisのデータが、ファイル ~/homebot/dump.rdbに保存される
$ cp dump.rdb dump_date "+%Y%m%d_%H%M%S".rdb # 安全のため、ファイル名に日時を含めて、コピーしておく
次に、ファイルの保存先が常にディレクトリ ~/homebot になるように、redisの設定ファイルを編集する
code:sh
$ cp ~/../usr/etc/redis.conf . # redisの設定ファイルを複製
$ pwd # 現在のディレクトリの絶対パスを調べる
/data/data/com.termux/files/home/homebot # このパスをコピー
$ nano redis.conf # 設定ファイルを編集
# dir ./ # 「dir ./」という行をコメントアウトする(行の頭に#を記入)
dir /data/data/com.termux/files/home/homebot # データ・ファイルの置き場所を ~/homebot にする
最後に、作成した設定ファイルで、redisを再起動する
code:sh
$ redis-cli shutdown # redisを停止
$ redis-server ~/homebot/redis.conf & # 先ほど作った設定ファイルを指定して、redisを起動
(バックアップデータはLZF形式という珍しい圧縮アルゴリズムで圧縮されており、データの内容を読むには一手間かかる。)
バックアップ
code:sh
$ cd ~/homebot
$ redis-cli save # redisのデータが、ファイル ~/homebot/dump.rdbに保存される
$ cp dump.rdb dump_date "+%Y%m%d_%H%M%S".rdb # 安全のため、ファイル名に日時を含めて、コピーしておく
復旧
code:sh
$ redis-cli shutdown # redisを停止
$ cp ~/homebot/dump_2018????_??????.rdb ~/../usr/etc/ # ファイルを差し替える
$ redis-server ~/homebot/redis.conf & # redisを起動すると、差し替えられた dump.rdb を読み込む
2018/1/30