自建数据库迁移入云
场景一:Redis离线RDB迁移:
用户可以使用redis-port工具将自建redis的RDB文件迁移到网易云Redis。
前提条件
- 考虑到安全等因素,网易云redis默认不提供公网ip,所以需要用户在同一个vpc内部临时创建绑定公网ip的云主机,迁移完成后即可释放资源。
- 源RDB由redis 2.8版本生成。
- redis-port工具当前支持Redis基础版和主从版两种实例类型的迁移,暂不支持集群版。
下载地址
使用命令
- 登录云主机;
- 下载redis-port工具,下载地址:https://redis-tools.nos-eastchina3.126.net/redis-port
- 运行命令
./redis-port restore --input dump.rdb --target 192.168.3.51:6379 --auth 123456
参数说明:
redis-port restore [--ncpu=N] [--parallel=M] [--input=INPUT] [--faketime=FAKETIME] [--filterdb=DB] --target=TARGET [--auth=AUTH] [--replace]
- ncpu和parallel配置cpu占用和并发度,保持默认。
- input:要导入的rdb文件。
- filterdb:只迁移特定db。
- target:目标redis节点地址,ip:port。
- auth:目标redis节点密码。
- replace:restore命令参数,支持目标数据replace,不需要指定,保持默认。
- 其余参数保持默认。
同步状态
日志输出:
2018/10/29 15:24:45 main.go:204: [INFO] set ncpu = 1, parallel = 1
2018/10/29 15:24:45 restore.go:53: [INFO] restore from 'dump.rdb' to '192.168.3.51:6379'
2018/10/29 15:24:46 restore.go:129: [INFO] total = 18852599 - 469758 [ 2%] entry=15094
2018/10/29 15:24:47 restore.go:129: [INFO] total = 18852599 - 975715 [ 5%] entry=31385
2018/10/29 15:24:48 restore.go:129: [INFO] total = 18852599 - 1489791 [ 7%] entry=47944
2018/10/29 15:24:49 restore.go:129: [INFO] total = 18852599 - 1975691 [ 10%] entry=63588
2018/10/29 15:24:50 restore.go:129: [INFO] total = 18852599 - 2459758 [ 13%] entry=79181
2018/10/29 15:24:51 restore.go:129: [INFO] total = 18852599 - 2958658 [ 15%] entry=95249
......
2018/10/29 15:25:23 restore.go:129: [INFO] total = 18852599 - 17535213 [ 93%] entry=564676
2018/10/29 15:25:24 restore.go:129: [INFO] total = 18852599 - 18014838 [ 95%] entry=580126
2018/10/29 15:25:25 restore.go:129: [INFO] total = 18852599 - 18480212 [ 98%] entry=595116
2018/10/29 15:25:25 restore.go:129: [INFO] total = 18852599 - 18852599 [100%] entry=607140
2018/10/29 15:25:25 restore.go:131: [INFO] restore: rdb done
当出现restore rdb done
时全量同步完成,同步自动退出。
异常处理
迁移过程中如遇到网络或者节点故障,工具会自动退出,打印异常日志,定位问题后需要先清理目标端的数据,然后开始重新执行同步命令。
场景二:Redis在线迁移:
用户可以使用redis-port工具将自建redis在线迁移到网易云Redis。
前提条件
- 考虑到安全等因素,网易云redis默认不提供公网ip,所以需要用户在同一个vpc内部临时创建绑定公网ip的云主机,迁移完成后即可释放资源。
- 源实例有公网ip,版本为2.8版本。
- redis-port工具当前支持Redis基础版和主从版两种实例类型的迁移,暂不支持集群版。
下载地址
使用命令
- 登录云主机;
- 下载redis-port工具,下载地址:https://redis-tools.nos-eastchina3.126.net/redis-port
- 运行命令
./redis-port sync -f 45.250.40.216:6379 -P 123456 -t 192.168.3.51:6379 -A 123456
参数说明:
redis-port sync [--ncpu=N] [--parallel=M] --from=MASTER [--password=PASSWORD] [--filterdb=DB] --target=TARGET [--auth=AUTH] [--sockfile=FILE [--filesize=SIZE]] [--log=filename] [--pid=filename] [--replace]
- ncpu和parallel配置cpu占用和并发度,保持默认。
- from:源redis节点地址,ip:port。
- password:源redis节点密码。
- filterdb:只迁移特定db。
- target:目标redis节点地址,ip:port。
- auth:目标redis节点密码。
- replace:restore命令参数,支持目标数据replace,不需要指定,保持默认。
- 其余参数保持默认。
同步状态
日志输出:
2018/10/29 11:51:55 main.go:204: [INFO] set ncpu = 1, parallel = 1
2018/10/29 11:51:55 sync.go:68: [INFO] sync from '45.250.40.216:6379' to '192.168.3.51:6379'
2018/10/29 11:51:55 sync.go:132: [INFO] psync runid = 001d20e32c767ed0b3715602b402ba03af2b00ad offset = 1708, fullsync
2018/10/29 11:51:55 sync.go:89: [INFO] rdb file = 18852599
2018/10/29 11:51:57 sync.go:251: [INFO] total=18852599 - 426056 [ 2%] entry=13686
2018/10/29 11:51:58 sync.go:251: [INFO] total=18852599 - 844997 [ 4%] entry=27177
2018/10/29 11:51:59 sync.go:251: [INFO] total=18852599 - 1290935 [ 6%] entry=41538
2018/10/29 11:52:00 sync.go:251: [INFO] total=18852599 - 1762113 [ 9%] entry=56710
....
2018/10/29 11:52:33 sync.go:251: [INFO] total=18852599 - 17394917 [ 92%] entry=560157
2018/10/29 11:52:34 sync.go:251: [INFO] total=18852599 - 17820225 [ 94%] entry=573856
2018/10/29 11:52:35 sync.go:251: [INFO] total=18852599 - 18121552 [ 96%] entry=583562
2018/10/29 11:52:36 sync.go:251: [INFO] total=18852599 - 18432232 [ 97%] entry=593570
2018/10/29 11:52:37 sync.go:251: [INFO] total=18852599 - 18754317 [ 99%] entry=603943
2018/10/29 11:52:37 sync.go:251: [INFO] total=18852599 - 18852599 [100%] entry=607140
2018/10/29 11:52:37 sync.go:253: [INFO] sync rdb done
2018/10/29 11:52:38 sync.go:307: [INFO] sync: +forward=5 +nbypass=0 +nbytes=70
2018/10/29 11:52:39 sync.go:307: [INFO] sync: +forward=0 +nbypass=0 +nbytes=0
2018/10/29 11:52:40 sync.go:307: [INFO] sync: +forward=0 +nbypass=0 +nbytes=0
2018/10/29 11:52:41 sync.go:307: [INFO] sync: +forward=0 +nbypass=0 +nbytes=14
当出现sync rdb done
时全量同步完成,开始增量同步,后续源节点的数据写入会实时同步到目标节点。
用户可以对源集群进行短暂停写,看到日志输出打印+nbytes=0
日志说明已经没有写入流量,用户可以将业务安全的切到云上的目标节点。+nbytes=14
输出是由于主从同步会发送PING
命令保活,非用户写入数据。
异常处理
迁移过程中如遇到网络或者节点故障,工具会自动退出,打印异常日志,定位问题后需要先清理目标端的数据,然后开始重新执行同步命令。