-
Notifications
You must be signed in to change notification settings - Fork 227
RC: RDI In the Cloud #1066
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
cmilesb
wants to merge
109
commits into
main
Choose a base branch
from
preview-rc-rdi
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
RC: RDI In the Cloud #1066
Changes from all commits
Commits
Show all changes
109 commits
Select commit
Hold shift + click to select a range
c4d39e6
begin index and setup drafts
kaitlynmichael d586971
overview draft
kaitlynmichael b5beb6a
edit desc
kaitlynmichael 10d5de8
fix relref
kaitlynmichael c9e5161
get started, doc link
kaitlynmichael 42fcff9
prepare source database with link
kaitlynmichael 17270d8
setup connectivity
kaitlynmichael 9e0de8e
connectivity steps
kaitlynmichael efc8b0b
pane > box
kaitlynmichael 20c3050
Limitations draft
kaitlynmichael c3b7bca
Apply suggestions from code review
cmilesb 85c6d08
Merge branch 'main' into DOC-4137
cmilesb e938762
Edits and DB credentials changes
cmilesb a5977a2
Add setup step and more edits
cmilesb 289f0e4
Move last step to provision
cmilesb 1d6fce4
Merge branch 'main' into DOC-4137
cmilesb 272e518
Add some of Yaron's suggestions to intro
cmilesb 9d12553
Apply suggestions from code review
cmilesb 1551e1d
Merge branch 'main' into DOC-4137
cmilesb a32204e
Add define steps
cmilesb 07bc249
Merge branch 'main' into DOC-4137
cmilesb bc41625
Merge branch 'main' into DOC-4137
cmilesb 71f431c
Fix relrefs
cmilesb e8ea310
stash commit
cmilesb 860944a
Add security information
cmilesb 639fc50
Merge branch 'main' into DOC-4137
cmilesb 697d665
Merge branch 'main' into DOC-4137
cmilesb fa87f86
Add View/Edit
cmilesb 49d1f54
Incorporate Yaron's feedback, part 1
cmilesb 4abac23
Merge branch 'main' into DOC-4137
cmilesb 4d69274
stash commit
cmilesb 129d6af
More suggestions from Yaron
cmilesb 99229b1
Merge branch 'main' into DOC-4137
cmilesb c3e501e
Apply suggestions from code review
cmilesb 01907d8
Merge branch 'main' into DOC-4137
cmilesb c9469e0
Combine define and provision and remove errors section
cmilesb d56188a
Merge branch 'main' into DOC-4137
cmilesb f817848
Add secret permissions and keys
cmilesb 8f274f5
Update content/operate/rc/databases/rdi/define.md
cmilesb 2d2820d
Fix note
cmilesb 46603a6
replace account ID in resource permissions
cmilesb 89e0c4f
DOC-4548 Setup and define screenshots
cmilesb 962c1e9
Merge branch 'main' into DOC-4137
cmilesb 2b110b4
stash commit
cmilesb a51743b
Merge branch 'main' into DOC-4137
cmilesb 35c8dc5
Fix screenshot widths
cmilesb 52412cc
add edit pipeline images
cmilesb 7ef44a2
Apply suggestions from code review
cmilesb d0bf623
Merge branch 'main' into DOC-4137
cmilesb 07b45a0
Merge branch 'main' into DOC-4137
cmilesb ff2c061
Added metrics
cmilesb 79fee3a
Merge branch 'main' into DOC-4137
cmilesb 40891de
DOC-4674 Addressing feedback from Georgiana, Yaron, and Cornel
cmilesb 375cf15
Update content/operate/rc/databases/rdi/view-edit.md
cmilesb c8483de
Apply suggestions from code review
cmilesb ed0a757
Merge branch 'main' into DOC-4137
cmilesb 5ff8b8b
Merge branch 'main' into DOC-4137
cmilesb c32ad98
Merge pull request #570 from redis/DOC-4137
cmilesb 1ecaa4d
Merge branch 'main' into preview-rc-rdi
cmilesb 892b6d4
start
cmilesb e0b86c1
Added NLB and Endpoint service steps
cmilesb 42d8b6c
Merge branch 'main' into preview-rc-rdi
cmilesb 3a464a8
Merge branch 'preview-rc-rdi' into DOC-4741
cmilesb e74ed1b
Update content/operate/rc/databases/rdi/setup.md
cmilesb 5aff527
Merge pull request #1116 from redis/DOC-4741
cmilesb 51373ca
Merge branch 'main' into preview-rc-rdi
cmilesb 758fd25
Update content/operate/rc/databases/rdi/_index.md
cmilesb 234cff0
Merge branch 'main' into preview-rc-rdi
cmilesb cfd68f7
Merge branch 'main' into preview-rc-rdi
cmilesb 83c07da
Add supported source databases table
cmilesb be32bcb
Merge branch 'main' into preview-rc-rdi
cmilesb c8eeda6
Update content/operate/rc/databases/rdi/define.md
cmilesb 8d14cf3
Merge branch 'main' into preview-rc-rdi
cmilesb 319344e
Address review comments
cmilesb d625457
Merge branch 'main' into preview-rc-rdi
cmilesb b1eb09b
RC RDI: Update screenshots and add specific steps for RDS/Aurora
cmilesb 5b7bb2d
Add Static IP step
cmilesb b149acd
Merge branch 'main' into preview-rc-rdi
cmilesb ee1bb0c
Merge branch 'preview-rc-rdi' into DOC-5166
cmilesb 8dda0c9
Some fixes to steps
cmilesb f47daa9
Merge pull request #1492 from redis/DOC-5166
cmilesb b6b3688
Fix HTML comment
cmilesb ae7b8c0
Added RDS PostgreSQL and RDS MySQL
cmilesb 742a58b
Update content/operate/rc/databases/rdi/define.md
cmilesb 5700121
Merge branch 'main' into preview-rc-rdi
cmilesb 14f2d28
Fix image
cmilesb 52d2c09
Merge branch 'preview-rc-rdi' into DOC-5222
cmilesb 5201c3e
Reformatted steps and added RDS SQL Server page
cmilesb 48cbdd6
Update content/integrate/redis-data-integration/data-pipelines/prepar…
cmilesb fca0769
Add links to prep source databases
cmilesb 668028a
Merge pull request #1544 from redis/DOC-5222
cmilesb 39787b4
Merge branch 'main' into preview-rc-rdi
cmilesb 91ab559
Fix images
cmilesb ed09e16
Merge branch 'main' into preview-rc-rdi
cmilesb 9137b85
Merge branch 'main' into preview-rc-rdi
cmilesb d9b2abf
stash 1
cmilesb c6e4a3c
Add note about SQL server editions
cmilesb 3987df2
Metrics Scraping
cmilesb 8474da5
Publicly accessible setting
cmilesb 5ad31c7
Fix embed formatting
cmilesb 21309d0
Add tabs to setup page
cmilesb 4453c24
Images
cmilesb 0a0fa21
Apply suggestions from code review
cmilesb 09207e4
Revert "Publicly accessible setting"
cmilesb ba1b5be
Add multitabs for connectivity setup
cmilesb 0c851e4
Merge branch 'tab-testing-1' into DOC-5350
cmilesb b45447f
Change diagram captions
cmilesb 960c870
Merge pull request #1750 from redis/DOC-5350
cmilesb 8997f65
Merge branch 'main' into preview-rc-rdi
cmilesb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
--- | ||
Title: Data Integration | ||
alwaysopen: false | ||
categories: | ||
- docs | ||
- operate | ||
- rc | ||
description: Use Redis Data Integration with Redis Cloud. | ||
hideListLinks: true | ||
weight: 99 | ||
--- | ||
|
||
Redis Cloud now supports [Redis Data Integration (RDI)]({{<relref "integrate/redis-data-integration">}}), a fast and simple way to bring your data into Redis from other types of primary databases. | ||
|
||
A relational database usually handles queries much more slowly than a Redis database. If your application uses a relational database and makes many more reads than writes (which is the typical case) then you can improve performance by using Redis as a cache to handle the read queries quickly. Redis Cloud uses [ingest]({{<relref "/integrate/redis-data-integration/">}}) to help you offload all read queries from the application database to Redis automatically. | ||
|
||
Using a data pipeline lets you have a cache that is always ready for queries. RDI Data pipelines ensure that any changes made to your primary database are captured in your Redis cache within a few seconds, preventing cache misses and stale data within the cache. | ||
|
||
RDI helps Redis customers sync Redis Cloud with live data from their primary databases to: | ||
- Meet the required speed and scale of read queries and provide an excellent and predictable user experience. | ||
- Save resources and time when building pipelines and coding data transformations. | ||
- Reduce the total cost of ownership by saving money on expensive database read replicas. | ||
|
||
Using RDI with Redis Cloud simplifies managing your data integration pipeline. No need to worry about hardware or underlying infrastructure, as Redis Cloud manages that for you. Creating the data flow from source to target is much easier, and there are validations in place to reduce errors. | ||
|
||
## Data pipeline architecture | ||
|
||
An RDI data pipeline sits between your source database and your target Redis database. Initially, the pipeline reads all of the data and imports it into the target database during the *initial sync* phase. After this initial sync is complete, the data pipeline enters the *streaming* phase, where changes are captured as they happen. Changes in the source database are added to the target within a few seconds of capture. The data pipeline translates relational database rows to Redis hashes or JSON documents. | ||
|
||
For more info on how RDI works, see [RDI Architecture]({{<relref "/integrate/redis-data-integration/architecture">}}). | ||
|
||
### Pipeline security | ||
|
||
Data pipelines are set up to ensure a high level of data security. Source database credentials and TLS secrets are stored in AWS secret manager and shared using the Kubernetes CSI driver for secrets. See [Share source database credentials]({{<relref "/operate/rc/databases/rdi/setup#share-source-database-credentials">}}) to learn how to share your source database credentials and TLS certificates with Redis Cloud. | ||
|
||
Connections to the source database use Java Database Connectivity (JDBC) through [AWS PrivateLink](https://aws.amazon.com/privatelink/), ensuring that the data pipeline is only exposed to the specific database endpoint. See [Set up connectivity]({{<relref "/operate/rc/databases/rdi/setup#set-up-connectivity">}}) to learn how to connect your PrivateLink to the Redis Cloud VPC. | ||
|
||
RDI encrypts all network connections with TLS. The pipeline will process data from the source database in-memory and write it to the target database using a TLS connection. There are no external connections to your data pipeline except from Redis Cloud management services. | ||
|
||
## Prerequisites | ||
|
||
Before you can create a data pipeline, you must have: | ||
|
||
- A [Redis Cloud Pro database]({{< relref "/operate/rc/databases/create-database/create-pro-database-new" >}}) hosted on Amazon Web Services (AWS). This will be the target database. | ||
- One supported source database, hosted on an AWS EC2 instance, AWS RDS, or AWS Aurora: | ||
|
||
{{< embed-md "rdi-supported-source-versions.md" >}} | ||
|
||
{{< note >}} | ||
Please be aware of the following limitations: | ||
|
||
- The target database must be a Redis Cloud Pro database hosted on Amazon Web Services (AWS). Redis Cloud Essentials databases and databases hosted on Google Cloud do not support Data Integration. | ||
- The target database must use multi-zone [high availability]({{< relref "/operate/rc/databases/configuration/high-availability" >}}). | ||
- The target database can use TLS, but can not use mutual TLS. | ||
- The target database cannot be in the same subscription as another database that has a data pipeline. | ||
- Source databases must also be hosted on AWS. | ||
- You must use a [custom encryption key on AWS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) to create the instance hosting the database. | ||
- One source database can only be synced to one target database. | ||
- You must be able to set up AWS PrivateLink to connect your Source database to your target database. RDI only works with AWS PrivateLink and not VPC Peering or other private connectivity options. | ||
{{< /note >}} | ||
|
||
## Get started | ||
|
||
To create a new data pipeline, you need to: | ||
|
||
1. [Prepare your source database]({{<relref "/operate/rc/databases/rdi/setup">}}) and any associated credentials. | ||
2. [Define the source connection and data pipeline]({{<relref "/operate/rc/databases/rdi/define">}}) by selecting which tables to sync. | ||
|
||
Once your data pipeline is defined, you can [view and edit]({{<relref "/operate/rc/databases/rdi/view-edit">}}) it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
--- | ||
Title: Define data pipeline | ||
alwaysopen: false | ||
categories: | ||
- docs | ||
- operate | ||
- rc | ||
description: Define the source connection and data pipeline. | ||
hideListLinks: true | ||
weight: 2 | ||
--- | ||
|
||
After you have [prepared your source database]({{<relref "/operate/rc/databases/rdi/setup">}}) and connection information, you can set up your new pipeline. To do this: | ||
|
||
1. [Define the source connection](#define-source-connection) by entering all required source database information. | ||
2. [Define the data pipeline](#define-data-pipeline) by selecting the data that you want to sync from your source database to the target database. | ||
|
||
## Define source connection | ||
|
||
1. In the [Redis Cloud console](https://cloud.redis.io/), go to your target database and select the **Data Pipeline** tab. | ||
1. Select **Define source database**. | ||
{{<image filename="images/rc/rdi/rdi-define-source-database.png" alt="The define source database button." width=200px >}} | ||
1. Enter a **Pipeline name**. | ||
{{<image filename="images/rc/rdi/rdi-define-pipeline-cidr.png" alt="The pipeline name and deployment CIDR fields." >}} | ||
1. A **Deployment CIDR** is automatically generated for you. If, for any reason, a CIDR is not generated, enter a valid CIDR that does not conflict with your applications or other databases. | ||
1. In the **Source database connectivity** section, enter the **PrivateLink service name** of the [PrivateLink connected to your source database]({{< relref "/operate/rc/databases/rdi/setup#set-up-connectivity" >}}). | ||
{{<image filename="images/rc/rdi/rdi-define-connectivity.png" alt="The Source database connectivity section, with database connection details and connectivity options." >}} | ||
1. Enter your database details. This depends on your database type, and includes: | ||
- **Port**: The database's port | ||
- **Database**: Your database's name, or the root database *(PostgreSQL, Oracle only)*, or a comma-separated list of one or more databases you want to connect to *(SQL Server only)* | ||
- **Database Server ID**: Unique ID for the replication client. Enter a number that is not used by any existing replication clients *(mySQL and mariaDB only)* | ||
- **PDB**: Name of the Oracle pluggable database *(Oracle only)* | ||
1. Enter the ARN of your [database credentials secret]({{< relref "/operate/rc/databases/rdi/setup#share-source-database-credentials" >}}) in the **Source database secrets ARN** field. | ||
1. Select **Start pipeline setup**. | ||
{{<image filename="images/rc/rdi/rdi-start-pipeline-setup.png" alt="The start pipeline setup button." width=200px >}} | ||
1. Redis Cloud will attempt to connect to PrivateLink. If your PrivateLink does not allow automatic acceptance of incoming connections, accept the incoming connection on AWS PrivateLink to proceed. See [Accept or Reject PrivateLink connection requests](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#accept-reject-connection-requests). | ||
|
||
If Redis Cloud can't find your PrivateLink connection, make sure that the PrivateLink service name is correct and that Redis Cloud is listed as an Allowed Principal for your VPC. See [Set up connectivity]({{<relref "/operate/rc/databases/rdi/setup#set-up-connectivity">}}) for more info. | ||
|
||
At this point, Redis Cloud will provision the pipeline infrastructure that will allow you to define your data pipeline. | ||
|
||
{{<image filename="images/rc/rdi/rdi-pipeline-setup-in-progress.png" alt="The Pipeline setup in progress screen." width=75% >}} | ||
|
||
Pipelines are provisioned in the background. You aren't allowed to make changes to your data pipeline or to your database during provisioning. This process will take about an hour, so you can close the window and come back later. | ||
|
||
When your pipeline is provisioned, select **Complete setup**. You will then [define your data pipeline](#define-data-pipeline). | ||
|
||
{{<image filename="images/rc/rdi/rdi-complete-setup.png" alt="The complete setup button." width=200px >}} | ||
|
||
## Define data pipeline | ||
|
||
After your pipeline is provisioned, you will be able to define your pipeline. You will select the database schemas, tables, and columns that you want to import and synchronize with your primary database. | ||
|
||
### Configure a new pipeline | ||
|
||
1. In the [Redis Cloud console](https://cloud.redis.io/), go to your target database and select the **Data Pipeline** tab. If your pipeline is already provisioned, select **Complete setup** to go to the **Select data** section. | ||
{{<image filename="images/rc/rdi/rdi-complete-setup.png" alt="The complete setup button." width=200px >}} | ||
1. Select the Schema and Tables you want to migrate to the target database from the **Source data selection** list. | ||
{{<image filename="images/rc/rdi/rdi-select-source-data.png" alt="The select source data section. " width=75% >}} | ||
|
||
You can select any number of columns from a table. | ||
|
||
{{<image filename="images/rc/rdi/rdi-select-columns.png" alt="The select source data section. A table is expanded with a few columns selected." width=75% >}} | ||
|
||
If any tables are missing a unique constraint, the **Missing unique constraint** list will appear. Select the columns that define a unique constraint for those tables from the list. | ||
|
||
{{<image filename="images/rc/rdi/rdi-missing-unique-constraint.png" alt="The missing unique constraint list." width=75% >}} | ||
|
||
{{<image filename="images/rc/rdi/rdi-select-constraints.png" alt="The missing unique constraint list with columns selected." width=75% >}} | ||
|
||
Select **Add schema** to add more database schemas. | ||
|
||
{{<image filename="images/rc/rdi/rdi-add-schema.png" alt="The add schema button." width=150px >}} | ||
|
||
Select **Delete** to delete a schema. You must have at least one schema to continue. | ||
|
||
{{<image filename="images/rc/rdi/rdi-delete-schema.png" alt="The delete schema button." width=50px >}} | ||
|
||
After you've selected the schemas and tables you want to sync, select **Continue**. | ||
|
||
{{<image filename="images/rc/rdi/rdi-continue-button.png" alt="The continue button." width=150px >}} | ||
|
||
1. In the **Pipeline definition** section, select the Redis data type to write keys to the target. You can choose **Hash** or **JSON** if the target database supports JSON. | ||
{{<image filename="images/rc/rdi/rdi-configure-new-pipeline.png" alt="The pipeline definition screen." width=75% >}} | ||
|
||
You can also supply one or more [transformation job files]({{< relref "/integrate/redis-data-integration/data-pipelines/transform-examples" >}}) that specify how you want to transform the captured data before writing it to the target. Select **Upload jobs** to upload your job files. | ||
|
||
{{<image filename="images/rc/rdi/rdi-transformation-jobs.png" alt="The transformation jobs section. Select Upload jobs to upload transformation jobs." >}} | ||
|
||
Select **Continue**. | ||
{{<image filename="images/rc/rdi/rdi-continue-button.png" alt="The continue button." width=150px >}} | ||
|
||
1. Review the tables you selected in the **Summary**. If everything looks correct, select **Start ingest** to start ingesting data from your source database. | ||
|
||
{{<image filename="images/rc/rdi/rdi-start-ingest.png" alt="The start ingest button." width=175px >}} | ||
|
||
At this point, the data pipeline will ingest data from the source database to your target Redis database. This process will take time, especially if you have a lot of records in your source database. | ||
|
||
After this initial sync is complete, the data pipeline enters the *change streaming* phase, where changes are captured as they happen. Changes in the source database are added to the target within a few seconds of capture. | ||
|
||
You can view the status of your data pipeline in the **Data pipeline** tab of your database. See [View and edit data pipeline]({{<relref "/operate/rc/databases/rdi/view-edit">}}) to learn more. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.