如果你要将你的数据转移到IBM Cloud Redis云数据库,你需要采取一些步骤来成功迁移你的所有数据。我们帮你搞定了。在这篇文章中,我们将向你展示一种快速的方法来开始将你的数据迁移到Redis的数据库中,无论你的数据库是本地的还是云的。
如果你是Redis用户,你应该已经知道为什么Redis是快速存储和检索内存数据的好数据库。如果你正在考虑迁移到云,或者从Compose for Redis(或其他云提供商)过渡到数据库,很乐意指导你完成迁移过程。如果你从本地或Compose for Redis数据库迁移到数据库为Redis没有太多的事情要做。
为Redis迁移到数据库需要运行一个我们在Github上提供的简单Python脚本。该脚本将从您的源数据库复制所有键到您的数据库用于Redis部署。您需要下载该脚本,并确保您安装Python 3。如果你在MacOS上,你可以使用brew install python3来安装它,它会给你最新的版本。接下来,我们建议创建一个迁移窗口,让您的用户知道您将进行一些维护。这样你就有时间把你所有的数据迁移到你的新数据库上进行Redis部署。如果您使用Redis作为键值存储的过期时间,请放心,这些过期时间将复制到您的新数据库。我们在数据库中使用1000万个键进行测试,根据您的带宽,这不会花费太多时间来迁移。
还要注意一些前提条件
- 创建不带SSL的Compose for Redis:由于IBM Cloud最新一代云数据为了遵从合规性以及对企业用户的数据安全考量,强制设置SSL,所以需要创建不带SSL的Compose for Redis来进行数据中转,ICD Redis和Compose for Redis应该在同样的区域,Compose for Redis基于Cloud Foundry,所以需要配置空间和配额,并设置好权限。
Compose for Redis不显示在数据库目录中,可以通过访问下方连接后按需求创建:https://cloud.ibm.com/catalog/services/compose-for-redis
然后在同全局创建ICD For Redis
- 创建IBM Classic虚机:虚机上需要安装ibmcloud cli和ICD插件,如果数据量小,他可以通过Cloud Shell。
注意事项
- 执行该操作前建议停止将数据继续写入AWS ElastiCache for Redis。
- 执行该操作前请提前做好数据备份。
- 执行该操作前需要规划业务停机时间。
接下来我们讨论下具体部署
步骤一:将AWS ElastiCache for Redis导出为RDB文件
创建备份到特定集群。单击左侧导航栏中的Redis,选择需要备份的集群名称,单击备份,资源名称里选择需要备份的集群,填写备份名称后单击创建快照。
将备份文件导出到AWS S3存储桶。单击左侧导航栏中的备份,选择需要导出的备份文件,单击上方的复制,填写新缓存快照标识符名称,选择目标S3位置,单击右下角复制,导出过程将开始。
可以在S3存储桶中找到导出的RDB文件。
从S3存储桶下载RDB文件。
步骤二:获取目标和源数据库凭据
现在,您需要拥有源数据库和您的数据库的凭据用于Redis部署。您可以通过单击IBM Cloud资源面板中的数据库来获得用于Redis部署的数据库凭据。然后从左侧菜单中单击Service凭证链接,该链接将带您到Service凭证视图。在那里,您可以通过单击该按钮创建一个New凭据,或者您可以使用已经创建的任何凭据。
获取此信息的另一种方法是使用IBM Cloud CLI,使用cdb插件,你可以运行:
ibmcloud cdb deployment-connections <Redis deployment name>
下面的命令将提供你的数据库为Redis连接URI,包括主机名和端口。要获得数据库的解码CA证书,你可以运行:
ibmcloud cdb deployment-cacert <Redis deployment name>
CA证书解码后,您需要将其保存到一个文件中,以便稍后连接到数据库。如果你不知道Redis部署的密码,你需要从你生成的服务凭据中获取,或者你可以通过运行来创建一个新的密码:
ibmcloud cdb deployment-user-password <Redis deployment name> admin <new password>
有了这些信息,我们就得到了目的地所需的信息。对于源代码,假设我们想要将我们的数据从Compose For Redis迁移到我们的新数据库用于Redis部署。要做到这一点,你必须获得主机、端口和Redis数据库的Compose密码。你可以按照我们上面提到的步骤,从IBM云资源面板上点击Compose for Redis数据库,然后创建或使用你的服务凭证。
步骤三:运行脚本和迁移数据
既然您已经拥有了这两个数据库(Compose Redis和ICD Redis)的所有凭据,现在我们将向您展示如何运行该脚本。我们将Python脚本文件命名为pymigration.py。你现在需要做的就是使用上面的凭据从你的终端运行代码:
python pymigration.py <source host> <source password> <source port>
<destination host> <destination password> <destination port>
<destination ca certificate path> --sslsrc --ssldst
因为我们从一个Compose for Redis数据库复制数据,你需要添加--sslsrc标志,如果你的Compose for Redis数据库是SSL/TLS启用。如果不是,那就不要添加旗子。这确保Redis连接到一个SSL/TLS启用的数据库。你还需要添加--ssldst,因为目标数据库是数据库的Redis也启用SSL/TLS。可以添加的附加标志是--dband --flush。使用--db,你可以表明你的密钥是从数据库复制的,这将是他们复制到你的数据库中用于Redis部署的数据库。--flush标志允许您在从源数据库导入键之前刷新目标数据库。
如果你想在Redis部署时保持数据库中的内容新鲜,flush将首先删除所有键,然后从源数据库导入新的键。运行上面的脚本,使用Compose for Redis作为数据迁移的源,数据库为Redis作为迁移数据的目的地,我们会得到如下结果:
python pymigration.py portal0.0000.composedb.com composepassword1 88888 000.000.databases.appdomain.cloud dbredispassword1 99999 ~/dbredisCA --sslsrc --ssldst 10000000 keys: 100% |###################################################| Time: 0:00:00 Keys disappeared on source during scan: 0 Keys already existing on destination: 0
正如你可以从结果中看到的,我们从Compose for Redis复制了1000万个键到数据库。没有键被删除的Compose for Redis数据库。如果我们添加一个新的键到Compose for Redis部署并尝试再次迁移数据,我们将看到目标上已经存在的键将更改为10000000,因为原来的1000万个键已经存在于该数据库中。
10000000 keys: 100% |###################################################| Time: 0:00:00
Keys disappeared on source during scan: 0
Keys already existing on destination: 10000000
在你的迁移之后,你所需要做的就是将你的应用程序的数据库连接字符串与你的数据库交换为Redis连接字符串和凭证。迁移数据是不是非常简单?