前言
通过无数次踩坑,以及腾讯云工程师的耐心协助,一个下午时间,我这个小白终于完成了这项工作。今天做成文档把整个过程记录下来。
测试实例的搭设
云服务商面板的操作
毕竟是数据库迁移工作,数据丢失的代价还是很大的。必要情况下要根据本文档在测试机上做测试,测试没问题后,再迁移正式业务机。比如我的做法是:
- 开通一个按量付费的云服务器(B)实例
- 由于原正式机(A)的服务(Web,MySQL和Redis)都在一台实例上,所以直接用原实例(A)做一个镜像出来
- 将实例B重装系统,选择自定义镜像-选择刚刚A制作出来的镜像
- 此时实例A的正式业务并不会受到影响,而实例B的数据也定格在了制作镜像的这一刻,因为DNS还是在A的公网IP上
宝塔面板的操作
通过实例B的公网IP进入测试机的宝塔面板,需要在面板上做以下操作:
- 在【面板设置】中修改服务器IP为测试机的公网IP
- 在【网站】中添加站点,重新设置一个站点域名(新域名需要重新配置SSL),并将该域名解析到测试机的公网IP
- 在【文件】中索引这个路径/www/wwwroot/,在列表中找到正式机域名命名的文件夹,复制文件夹内的内容到新域名命名的文件夹里
- 在【数据库】中对老数据库点击备份,生产备份文件后,在去新建的数据库点击导入(宝塔上一般默认的数据库名是域名把中间的点换成下划线,如www_baidu_com)
- 修改网站程序的数据库连接串中的数据库名和数据库账户、密码字段(每个程序修改方式不同,一般文件名为db,config之类)
Redis迁移
基本概念
Redis是将数据存储在内存RAM中,然后根据设定的规则定期保存一份持久化文件到硬盘,每次断电重启内存的数据将会丢失,然后就会通过硬盘中的持久化文件来恢复。所以,一般情况下,只要服务器不关机、重启、断电,Redis的数据就是一直存储在内存中的实时数据,可以直接拿这部分数据配合云厂商提供的DTS数据迁移服务来迁移,而不需要考虑持久化文件这个东西。
宝塔面板的操作
Redis版本兼容性问题
目前大多数云厂商,包括阿里云,腾讯云等,云Redis产品都是默认2.8版本,最高支持5.0版本的,应该是对于新版本6.0的稳定性存疑,就没有支持。但是宝塔这边centOS8以上的系统,直接安装Redis都是6.2.5的最新版。腾讯云的DTS数据迁移并不支持6.0版本的迁移。所以这个时候存在一个自建redis版本降级的问题,但是也要确定业务侧是否支持低版本的运行,一般是没有问题的。
Redis版本降级方法
先通过【软件商店】默认安装好最新版的Redis,由于我们是迁移,所以肯定已经安装好了6.2.5版本的Redis
然后卸载软件商店的Redis,同时把拓展也卸载掉,比如PHP的Redis拓展
进入【文件】,找到/www/server/panel/install/redis.sh
文件,打开编辑,把第四行的redis_version=6.2.5
更改为redis_version=5.0.8
完成后保存
打开ssh,运行以下指令bash /www/server/panel/install/redis.sh install
新版本安装完成后,记得重新去安装拓展
Redis安全性配置
由于通过DTS数据迁移,需要打开自建Redis的外部访问权限。故在此之前需要对宝塔自建Redis的安全性配置进行强化。
默认配置在本地服务器的Redis连接地址一般为127.0.0.1,如果做迁移备份可以临时把bind IP更改为0.0.0.0,迁移完成后应尽快改回
修改Redis默认端口6379为63790或其它未被占用的端口
由于需要开启外部访问,所以如果之前Redis没有设置密码的话,现在需要给它设置一个密码,在requirepass字段后输入你想设置的密码,也可以在配置文件中搜索# requirepass foobared,将#去掉 ,将foobared改为你需要的密码
注意redis密码请勿使用特殊符号 redis密码最好是12位数以上 英文大小写+数字 组合
保存修改后需要重新启动Redis服务
Redis允许外网访问配置
在Redis配置中将bind IP修改为0.0.0.0
Redis配置文件中搜索protected-mode,将他的值修改为no
重启Redis服务
云服务商面板的操作
开通云数据库Redis
直接找到【NoSQL数据库产品弹性缓存Redis】,购买开通即可。需要注意的是:
建议先创建一台按量付费的实例用于测试
云服务器和云Redis需要是一家云厂商提供的,且在一个可用区,一个VPC内,可以相互通过内网访问
初始化云Redis
设置Redis版本与迁移源一致
设置Redis密码并记录
将Redis实例加入安全组,入网及出网规则均添加内网IP段,TCP:6379的访问。
腾讯云的云Redis不支持更改默认端口号6379;内网IP段可以在私有网络中看到,前提是已经将云Redis和云服务器放在了一个私有网络下
DTS数据迁移服务的使用
开通DTS服务,创建数据迁移任务,选择VPC所在区,开始创建
根据自己真实情况选择,并填写在宝塔Redis设置的端口和密码信息,然后测试连通性
如果测试连通性失败,则为端口、安全组或密码未根据本文档设置好,重新设置再重新测试,直到连通性成功为止
设置好目标库信息
开始校验任务,如无问题,则可立刻执行迁移
数据迁移完成后,并不会立刻完成任务,而是会继续监控源库的数据变动,实时同步,此时目标实例为只读状态,无法作为实际业务使用。
更改网站程序的Redis数据库连接串的IP、端口、密码信息,IP为云Redis的内网地址,端口为6379,密码为初始化云Redis时设置的密码
更改完成并测试连接成功后,手动停止完成迁移任务,此时云Redis转为读写状态,即可正常使用
Comments are closed.