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.
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
the openstack database instance create command. This example creates a replica
called replica_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 the openstack database instance show command
to verify that the newly created replica_1
instance is a replica
of the original base_1
. Note that the replica_of
property is
set to the ID of base_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 the openstack database instance show command
to list the replica(s) associated with the original instance. Note
that the replicas
property is set to the ID of replica_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
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.