Change-Id: I13f80047cf1fb64f3452f20df58cc3cf21a17456 Signed-off-by: Dariusz Krol <dkrol3@gmail.com> Signed-off-by: Dariusz Krol <d.krol@samsung.com>
5.0 KiB
Set up database replication
You can create a replica of an existing database instance. When you make subsequent changes to the original instance, the system automatically applies those changes to the replica.
- Replicas are read-only.
- When you create a replica, do not specify the
--users
or--databases
options. - You can choose a smaller volume or flavor for a replica than for the original, but the replica's volume must be big enough to hold the data snapshot from the original.
This example shows you how to replicate a MySQL database instance.
Set up replication
Get the instance ID
Get the ID of the original instance you want to replicate:
$ openstack database instance list +-----------+------------+-----------+-------------------+--------+-----------+------+ | id | name | datastore | datastore_version | status | flavor_id | size | +-----------+------------+-----------+-------------------+--------+-----------+------+ | 97b...ae6 | base_1 | mysql | mysql-5.5 | ACTIVE | 10 | 2 | +-----------+------------+-----------+-------------------+--------+-----------+------+
Create the replica
Create a new instance that will be a replica of the original instance. You do this by passing in the
--replica_of
option with theopenstack database instance create
command. This example creates a replica calledreplica_1
.replica_1
is a replica of the original instance,base_1
:$ openstack database instance create replica_1 6 --size=5 \ --datastore_version mysql-5.5 \ --datastore mysql --replica_of ID_OF_ORIGINAL_INSTANCE
Verify replication status
Pass in
replica_1
's instance ID with theopenstack database instance show
command to verify that the newly createdreplica_1
instance is a replica of the originalbase_1
. Note that thereplica_of
property is set to the ID ofbase_1
.$ openstack database instance show INSTANCE_ID_OF_REPLICA_1 +-------------------+--------------------------------------+ | Property | Value | +-------------------+--------------------------------------+ | created | 2014-09-16T11:16:49 | | datastore | mysql | | datastore_version | mysql-5.5 | | flavor | 6 | | id | 49c6eff6-ef91-4eff-91c0-efbda7e83c38 | | name | replica_1 | | replica_of | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | | status | BUILD | | updated | 2014-09-16T11:16:49 | | volume | 5 | +-------------------+--------------------------------------+
Now pass in
base_1
's instance ID with theopenstack database instance show
command to list the replica(s) associated with the original instance. Note that thereplicas
property is set to the ID ofreplica_1
. If there are multiple replicas, they appear as a comma-separated list.$ openstack database instance show INSTANCE_ID_OF_BASE_1 +-------------------+--------------------------------------+ | Property | Value | +-------------------+--------------------------------------+ | created | 2014-09-16T11:04:56 | | datastore | mysql | | datastore_version | mysql-5.5 | | flavor | 6 | | id | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | | ip | 172.16.200.2 | | name | base_1 | | replicas | 49c6eff6-ef91-4eff-91c0-efbda7e83c38 | | status | ACTIVE | | updated | 2014-09-16T11:05:06 | | volume | 5 | | volume_used | 0.11 | +-------------------+--------------------------------------+
Detach the replica
If the original instance goes down, you can detach the replica. The replica becomes a standalone database instance. You can then take the new standalone instance and create a new replica of that instance.
You detach a replica using the
openstack database instance detach replica
command:$ openstack database instance detach replica INSTANCE_ID_OF_REPLICA