Skip to content

Commit 79f8fea

Browse files
authored
DOC-5258, DOC-5257, DOC-5256 Clean migration planning pages (#227)
* revise create target page * start feasibility checks * feasibility checks page * deployment infra page * peer review
1 parent 1296f7e commit 79f8fea

File tree

8 files changed

+392
-330
lines changed

8 files changed

+392
-330
lines changed

modules/ROOT/nav.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
99
.{product}
1010
* xref:ROOT:introduction.adoc[]
11-
* Plan your migration
11+
* Plan and prepare
1212
** xref:ROOT:feasibility-checklists.adoc[]
1313
** xref:ROOT:deployment-infrastructure.adoc[]
1414
** xref:ROOT:create-target.adoc[]
Lines changed: 72 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,140 @@
11
= Create the target environment
22

3-
Before you begin your migration, you must create and prepare a new database (cluster) to be the target for your migration.
4-
You must also gather authentication credentials to allow {product-proxy} and your client applications to connect to the new database.
3+
After you review the xref:ROOT:feasibility-checklists.adoc[compatibility requirements] and prepare the xref:ROOT:deployment-infrastructure.adoc[{product-proxy} infrastructure], you must prepare your target cluster for the migration.
54

6-
== Prepare the target database
5+
This includes the following:
76

8-
The preparation steps depend on your target database platform.
7+
* Create the new cluster that will be the target of your migration.
8+
* Recreate the schema from your origin cluster on the target cluster.
9+
* Gather authentication credentials and connection details for the target cluster.
10+
11+
The preparation steps depend on your target platform.
12+
13+
[IMPORTANT]
14+
====
15+
For complex migrations, such as those that involve multi-datacenter clusters, many-to-one/one-to-many mappings, or unresolvable mismatched schemas, see the xref:ROOT:feasibility-checklists.adoc#multi-datacenter-clusters-and-other-complex-migrations[considerations for complex migrations].
16+
====
917

1018
[tabs]
1119
======
12-
Use an {astra-db} database as the target::
20+
Migrate to {astra}::
1321
+
1422
--
15-
To migrate data to an {astra-db} database, do the following:
16-
17-
. Sign in to your {astra-url}[{astra} account^].
23+
. Sign in to the {astra-ui-link} and xref:astra-db-serverless:administration:manage-organizations.adoc#switch-organizations[switch to the organization] where you want to create the new database.
1824
+
19-
You can use any subscription plan tier.
20-
However, paid subscription plans offer premium features that can facilitate your migration, including support for {sstable-sideloader}, more databases, and no automatic database hibernation.
21-
These plans also support advanced features like customer-managed encryption keys and metrics exports.
22-
For more information, see xref:astra-db-serverless:administration:subscription-plans.adoc[].
25+
{product-proxy} can be used with any xref:astra-db-serverless:administration:subscription-plans.adoc[{astra} subscription plan].
26+
However, paid plans offer premium features that can facilitate your migration, including support for {sstable-sideloader}, more databases, and no automatic database hibernation.
2327
24-
. xref:astra-db-serverless:databases:create-database.adoc[Create an {astra-db} Serverless database] with your preferred database name, keyspace name, region, and other details.
28+
. xref:astra-db-serverless:databases:create-database.adoc[Create a database] with your preferred database name, cloud provider, region, and other details.
2529
+
26-
The keyspace is a handle that establishes the database's context in subsequent DDL and DML statements.
27-
+
28-
For multi-region databases, see <<considerations-for-multi-region-migrations>>.
30+
All databases start with an initial keyspace.
31+
If the name of this keyspace doesn't match your origin cluster's schema, you can delete the initial keyspace after recreating the schema later in this process.
2932
3033
. When your database reaches **Active** status, xref:astra-db-serverless:administration:manage-application-tokens.adoc[create an application token] with a role like *Read/Write User* or **Database Administrator**, and then store the credentials (Client ID, Client Secret, and Token) securely.
3134
+
32-
These credentials are used by the client application, {product-proxy}, and {product-automation} to read and write to your target database.
35+
These credentials are used by the client application and {product-proxy} to read and write to your target database.
36+
Make sure the token's role has sufficient permission to perform the actions required by your client application.
3337
3438
. xref:astra-db-serverless:databases:secure-connect-bundle.adoc[Download your database's {scb}].
3539
The {scb-short} is a zip file that contains TLS encryption certificates and other metadata required to connect to your database.
40+
It is used during and after the migration process to securely connect to your {astra-db} database.
3641
+
3742
[IMPORTANT]
3843
====
3944
The {scb-short} contains sensitive information that establishes a connection to your database, including key pairs and certificates.
4045
Treat it as you would any other sensitive values, such as passwords or tokens.
4146
====
42-
+
43-
Your client application uses the {scb-short} to connect directly to {astra-db} near the end of the migration, and {cass-migrator} and {dsbulk-migrator} use the {scb-short} to migrate and validate data in {astra-db}.
4447

45-
. Use `scp` to copy the {scb-short} to your client application instance:
48+
. Use your preferred method to copy the {scb-short} to your client application instance.
49+
For example, you could use `scp`:
4650
+
4751
[source,bash]
4852
----
49-
scp -i <your_ssh_key> /path/to/scb.zip <linux user>@<public IP of client application instance>:
53+
scp -i some-key.pem /path/to/scb.zip user@client-ip-or-host:
5054
----
5155

5256
. Recreate your client application's schema on your {astra-db} database, including each keyspace and table that you want to migrate.
5357
+
5458
[IMPORTANT]
5559
====
5660
On your new database, the keyspace names, table names, column names, data types, and primary keys must be identical to the schema on the origin cluster or the migration will fail.
61+
62+
To help you prepare the schema from the DDL in your origin cluster, consider using the `generate-ddl` functionality in the {dsbulk-migrator-repo}[{dsbulk-migrator}].
5763
====
5864
+
5965
Note the following limitations and exceptions for tables in {astra-db}:
6066
+
61-
* In {astra-db}, you must create keyspaces in the {astra-ui} or with the {devops-api} because xref:astra-db-serverless:cql:develop-with-cql.adoc[CQL for {astra-db}] doesn't support `CREATE KEYSPACE`.
62-
For instructions, see xref:astra-db-serverless:databases:manage-keyspaces.adoc[].
63-
* You can use {astra-db}'s built-in or standalone `cqlsh` to issue typical CQL statements to xref:astra-db-serverless:databases:manage-collections.adoc#create-a-table[create tables in {astra-db}].
67+
* In {astra-db}, you must xref:astra-db-serverless:databases:manage-keyspaces.adoc[create keyspaces in the {astra-ui} or with the {devops-api}] because xref:astra-db-serverless:cql:develop-with-cql.adoc[CQL for {astra-db}] doesn't support `CREATE KEYSPACE`.
68+
* You can use `cqlsh`, drivers, or the {data-api} to xref:astra-db-serverless:databases:manage-collections.adoc#create-a-table[create tables in {astra-db}].
6469
However, the only optional table properties that {astra-db} supports are `default_time_to_live` and `comment`.
65-
As a best practice, omit unsupported table properties, such as compaction strategy and `gc_grace_seconds`, when creating tables in {astra-db} because xref:astra-db-serverless:cql:develop-with-cql.adoc#unsupported-values-are-ignored[CQL for {astra-db} ignores all unsupported values].
70+
As a best practice, omit xref:astra-db-serverless:cql:develop-with-cql.adoc#unsupported-values-are-ignored[unsupported DDL properties], such as compaction strategy and `gc_grace_seconds`, when creating tables in {astra-db}.
6671
* {astra-db} doesn't support Materialized Views (MVs) and certain types of indexes.
67-
You must replace these with supported indexes.
72+
You must adjust your data model and application logic to discard or replace these structures before beginning your migration.
6873
For more information, see xref:astra-db-serverless:cql:develop-with-cql.adoc#limitations-on-cql-for-astra-db[Limitations on CQL for {astra-db}].
69-
70-
[TIP]
71-
====
72-
* If you plan to use {sstable-sideloader} for your data migration, you can find more information and specific requirements in xref:sideloader:migrate-sideloader.adoc#record-schema[Migrate data with {sstable-sideloader}: Configure the target database].
73-
74-
* To help you prepare the schema from the DDL in your origin cluster, consider using the `generate-ddl` functionality in the {dsbulk-migrator-repo}[{dsbulk-migrator}].
75-
However, this tool doesn't automatically convert MVs or indexes.
76-
====
74+
* If you plan to use {sstable-sideloader} for xref:ROOT:migrate-and-validate-data.adoc[Phase 2], see the xref:sideloader:migrate-sideloader.adoc#record-schema[target database configuration requirements for migrating data with {sstable-sideloader}].
7775
--
7876

79-
Use a generic CQL cluster as the target::
77+
Migrate to {hcd-short}, {dse-short}, or open-source {cass-reg}::
8078
+
8179
--
82-
{product-short} can be used to migrate to any type of CQL cluster, running in any cloud or on-premise.
83-
84-
To migrate data to any other generic CQL cluster, such as {hcd-short} or OSS {cass-short}, do the following:
85-
86-
. Provision infrastructure, and then create the new cluster with your desired database platform version and configuration:
80+
. Provision the cluster infrastructure, and then create your {hcd-short}, {dse-short}, or {cass-short} cluster with your desired configuration:
8781
+
88-
.. Determine the correct topology and specifications for your new cluster, and then provision infrastructure that meets those requirements.
82+
Determine the correct topology and specifications for your new cluster, and then provision infrastructure that meets those requirements.
8983
Your target infrastructure can be hosted on a cloud provider, in a private cloud, or on bare metal machines.
90-
.. Create your cluster using your desired CQL cluster version.
91-
For specific infrastructure, installation, and configuration instructions, see the documentation for your infrastructure platform, database platform, and database platform version.
92-
Pay particular attention to the configuration that must be done at installation time.
93-
.. Configure your new cluster as desired.
84+
+
85+
For specific infrastructure, installation, and configuration instructions, see the {hcd-short}, {dse-short}, or {cass-short} documentation.
9486
+
9587
[TIP]
9688
====
9789
Because {product-proxy} supports separate connection details for each cluster, you can configure the new cluster as needed, independent of the origin cluster's configuration.
9890
This is a good opportunity to establish your desired configuration state on the new cluster and implement new patterns that might have been unavailable or impractical on the old cluster, such as enabling authentication or configuring TLS encryption.
99-
100-
For multi-region clusters, see <<considerations-for-multi-region-migrations>>.
10191
====
102-
.. Recommended: Consider testing your new cluster to ensure it meets your performance requirements, and then tune it as necessary before beginning the migration.
10392

104-
. If you enabled authentication, create a user with the required permissions for your client application to use to read and write to the cluster.
93+
. Recommended: Consider testing your new cluster to ensure it meets your performance requirements, and then tune it as necessary before beginning the migration.
94+
95+
. If you enabled authentication in your cluster, create a user with the required permissions for your client application to use to read and write to the cluster.
96+
+
97+
Store the authentication credentials securely for use by your client application and {product-proxy} later in the migration process.
98+
99+
. Note your cluster's connection details, including the contact points (IP addresses or hostnames) and port number.
105100

106-
. Recreate your client application's schema on your new cluster, including each keyspace and table that you want to migrate.
101+
. Recreate your origin cluster's schema on your new cluster, including each keyspace and table that you want to migrate.
107102
+
108103
[IMPORTANT]
109104
====
110-
On your new cluster, the keyspace names, table names, column names, data types, and primary keys must match the schema on the origin cluster, or the migration will fail.
105+
On your new cluster, the keyspace names, table names, column names, data types, and primary keys must be identical to the schema on the origin cluster or the migration will fail.
111106
====
112107
+
113-
To copy the schema, you can run CQL `describe` on the origin cluster to get the schema that is being migrated, and then run the output on your new cluster.
108+
To copy the schema, you can run CQL `DESCRIBE` on the origin cluster to get the schema that is being migrated, and then run the output on your new cluster.
109+
Alternatively, you can use the `generate-ddl` functionality in the {dsbulk-migrator-repo}[{dsbulk-migrator}].
114110
+
115-
If you are migrating from an old version, you might need to edit CQL clauses that are no longer supported in newer versions, such as `COMPACT STORAGE`.
116-
For specific changes in each version, see your driver's changelog or release notes.
111+
If your origin cluster is running an earlier version, you might need to edit CQL clauses that are no longer supported in newer versions, such as `COMPACT STORAGE`.
112+
For specific changes in each version, see the release notes for your database platform and {cass-short} driver.
113+
--
114+
115+
Other CQL-compatible data stores::
116+
+
117+
--
118+
Support for other CQL-compatible data stores isn't guaranteed for {product-proxy}.
119+
120+
If your origin and target clusters meet the xref:ROOT:feasibility-checklists.adoc[protocol version compatibility requirements], you might be able to use {product-proxy} for your migration.
121+
As with any migration, {company} recommends that you test this in isolation before attempting a full-scale production migration.
122+
123+
See your data store provider's documentation for information about creating your cluster and schema, generating authentication credentials, and gathering the connection details.
117124
--
118125
======
119126

120-
[#considerations-for-multi-region-migrations]
121-
== Considerations for multi-region migrations
127+
[TIP]
128+
====
129+
After you create the target cluster, try connecting your client application directly to the target cluster without {product-proxy}.
130+
This ensures that the connection will work when you disconnect {product-proxy} at the end of the migration.
122131
123-
include::ROOT:partial$multi-region-migrations.adoc[]
132+
Additionally, {company} recommends running performance tests and measuring benchmarks in a test environment where your client application is connected directly to your target cluster.
133+
This helps you understand how your application workloads will perform on the new cluster.
134+
This is particularly valuable when migrating to a new platform, such as {dse-short} to {astra}, where you might be unfamiliar with the platform's performance characteristics.
124135
125-
== Next steps
136+
Depending on the results of your tests, you might need to adjust your application logic, data model, or cluster configuration to achieve your performance goals.
137+
For example, you might need to optimize queries to avoid anti-patterns that were acceptable on your origin cluster but degrade performance on the target cluster.
138+
====
126139

127-
Learn about xref:ROOT:rollback.adoc[rollback options] before you begin Phase 1 of the migration process.
140+
Next, learn about xref:ROOT:rollback.adoc[rollback options] before you begin xref:ROOT:phase1.adoc[Phase 1] of the migration process.

modules/ROOT/pages/deploy-proxy-monitoring.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ For more information, see xref:manage-proxy-instances.adoc[].
175175

176176
==== Multi-datacenter clusters
177177

178-
For xref:ROOT:feasibility-checklists.adoc[multi-datacenter origin clusters], specify the name of the datacenter that {product-proxy} should consider local.
178+
For xref:ROOT:deployment-infrastructure.adoc#multiple-datacenter-clusters[multi-datacenter origin clusters], specify the name of the datacenter that {product-proxy} should consider local.
179179
To do this, set the `origin_local_datacenter` property to the local datacenter name.
180180
Similarly, for multi-datacenter target clusters, set the `target_local_datacenter` property to the local datacenter name.
181181
These two variables are stored in `vars/zdm_proxy_advanced_config.yml`.

0 commit comments

Comments
 (0)