データベースのバックアップとリストア

データベースのバックアップとリストア

データベースをバックアップし、Object Storage サービスにバックアップを保存するために、Database を使用できます。後から、元のデータベースが破壊された場合、データベースをリストアするために、バックアップを使用できます。リストア処理は、データベースインスタンスを作成します。

この例は、MySQL データベースをバックアップし、リストアする方法を示します。

  1. データベースインスタンスのバックアップ

    背景として、以下の特性を持つデータベースインスタンスを作成してあることを仮定しています。

    • データベースインスタンスの名前: guest1
    • フレーバー ID: 10
    • ルートボリューム容量: 2
    • データベース: db1 および db2
    • ユーザー: ユーザー user1 、パスワード password

    まず、 trove list コマンドを使用して、guest1 データベースインスタンスの ID を取得します。

    $ trove list
    
    +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
    |                  id                  |  name  | datastore | datastore_version | status | flavor_id | size |
    +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
    | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | guest1 |   mysql   |     mysql-5.5     | ACTIVE |     10    |  2   |
    +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
    

    trove backup-create コマンドを使用して、データベースインスタン`backup1`` という名前です。INSTANCE_ID97b4b853-80f6-414f-ba6f-c6f455a79ae6 に置き換えます。

    注釈

    このコマンド構文は、python-troveclient のバージョン 1.0.6 以降のみ利用できます。これ以前のバージョンは、バックアップ名を最初の引数として渡す必要があります。

    $ trove backup-create INSTANCE_ID backup1
    
    +-------------+--------------------------------------+
    |   Property  |                Value                 |
    +-------------+--------------------------------------+
    |   created   |         2014-03-18T17:09:07          |
    | description |                 None                 |
    |      id     | 8af30763-61fd-4aab-8fe8-57d528911138 |
    | instance_id | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 |
    | locationRef |                 None                 |
    |     name    |               backup1                |
    |  parent_id  |                 None                 |
    |     size    |                 None                 |
    |    status   |                 NEW                  |
    |   updated   |         2014-03-18T17:09:07          |
    +-------------+--------------------------------------+
    

    このコマンドは、元のインスタンス ID (instance_id) とバックアップの ID (id) を返します。

    後ほど、 trove configuration-parameter-list コマンドを使用して、この情報を取得します。

    $ trove backup-list
    +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
    |                  id                  |             instance_id              |   name  |   status  | parent_id |       updated       |
    +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
    | 8af30763-61fd-4aab-8fe8-57d528911138 | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | backup1 | COMPLETED |    None   | 2014-03-18T17:09:11 |
    +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
    

    trove backup-show コマンドを使用して、BACKUP_ID を渡すことにより、追加の情報を取得できます。ここでは 8af30763-61fd-4aab-8fe8-57d528911138 です。

    $ trove backup-show BACKUP_ID
    
    +-------------+----------------------------------------------------+
    |   Property  |                   Value                            |
    +-------------+----------------------------------------------------+
    |   created   |              2014-03-18T17:09:07                   |
    | description |                   None                             |
    |      id     |                 8af...138                          |
    | instance_id |                 97b...ae6                          |
    | locationRef | http://10.0.0.1:.../.../8af...138.xbstream.gz.enc  |
    |     name    |                 backup1                            |
    |  parent_id  |                  None                              |
    |     size    |                  0.17                              |
    |    status   |               COMPLETED                            |
    |   updated   |           2014-03-18T17:09:11                      |
    +-------------+----------------------------------------------------+
    
  2. データベースインスタンスのリストア

    ここで guest1 データベースインスタンスが破壊され、リストアする必要があると仮定します。この例では、guest2 という名前の新規データベースインスタンスを作成するために、 trove create コマンドを使用します。

    • 新しい guest2 インスタンスが同じフレーバー (10) を持ち、元の guest1 インスタンスと同じ容量のルートボリューム (2) を持つことを指定します。
    • この新しいインスタンスは、BACKUP_ID により識別されるバックアップに基づくことを指定するために、--backup 引数を使用します。この例では、BACKUP_ID8af30763-61fd-4aab-8fe8-57d528911138 を置き換えます。
    $ trove create guest2 10 --size 2 --backup BACKUP_ID
    
    +-------------------+----------------------------------------------+
    |      Property     |                Value                         |
    +-------------------+----------------------------------------------+
    |      created      |         2014-03-18T17:12:03                  |
    |     datastore     | {u'version': u'mysql-5.5', u'type': u'mysql'}|
    |datastore_version  |                mysql-5.5                     |
    |       flavor      | {u'id': u'10', u'links': [{u'href': ...]}    |
    |         id        |  ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b        |
    |        name       |                guest2                        |
    |       status      |                 BUILD                        |
    |      updated      |          2014-03-18T17:12:03                 |
    |       volume      |             {u'size': 2}                     |
    +-------------------+----------------------------------------------+
    
  3. バックアップの検証

    新しい guest2 インスタンスが、元の guest1 インスタンスと同じ特性を持つことを確認します。

    まず新しい guest2 インスタンスの ID を取得します。

    $ trove list
    
    +-----------+--------+-----------+-------------------+--------+-----------+------+
    |     id    |  name  | datastore | datastore_version | status | flavor_id | size |
    +-----------+--------+-----------+-------------------+--------+-----------+------+
    | 97b...ae6 | guest1 |   mysql   |     mysql-5.5     | ACTIVE |     10    |  2   |
    | ac7...04b | guest2 |   mysql   |     mysql-5.5     | ACTIVE |     10    |  2   |
    +-----------+--------+-----------+-------------------+--------+-----------+------+
    

    新しい guest2 インスタンスの情報を表示するために、 trove show コマンドを使用します。guest2 の INSTANCE_ID を渡します。ここでは、ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b です。

    $ trove show INSTANCE_ID
    
    +-------------------+--------------------------------------+
    |      Property     |                Value                 |
    +-------------------+--------------------------------------+
    |      created      |         2014-03-18T17:12:03          |
    |     datastore     |                mysql                 |
    | datastore_version |              mysql-5.5               |
    |       flavor      |                  10                  |
    |         id        | ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b |
    |         ip        |               10.0.0.3               |
    |        name       |                guest2                |
    |       status      |                ACTIVE                |
    |      updated      |         2014-03-18T17:12:06          |
    |       volume      |                  2                   |
    |    volume_used    |                 0.18                 |
    +-------------------+--------------------------------------+
    

    データストア、フレーバー ID、ボリューム容量が、元の guest1 インスタンスと同じ値を持つことに注意します。

    trove database-list コマンドを使用して、元のデータベース (db1db2) がリストアされたインスタンスに存在することを確認します。

    $ trove database-list INSTANCE_ID
    
    +--------------------+
    |        name        |
    +--------------------+
    |        db1         |
    |        db2         |
    | performance_schema |
    |        test        |
    +--------------------+
    

    trove user-list コマンドを使用して、元のユーザー (user1) がリストアされたインスタンスに存在することを確認します。

    $ trove user-list INSTANCE_ID
    
    +--------+------+-----------+
    |  name  | host | databases |
    +--------+------+-----------+
    | user1  |  %   |  db1, db2 |
    +--------+------+-----------+
    
  4. ユーザーへの通知

    いま無効化されている guest1 データベースインスタンスにアクセスしていたユーザーに、guest2 にアクセスできることを通知します。guest2 の名前、IP アドレス、他の必要な情報を提供します。(trove show コマンドを使用して、この情報を取得できます。)

  5. クリーンアップ

    この時点で、 trove delete コマンドを使用して、無効化された guest1 インスタンスを削除したいかもしれません。

    $ trove delete INSTANCE_ID
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.