Waline的数据库从LeanCloud迁移到了TiDB
书接上回,今天仔细翻阅Waline官方文档,在不断尝试中终于把数据库搞定了
,将过程记录下来,供以后翻阅。
一、按照官方文档建立TiDB数据库
1、建库
注册并登陆TiDB后,点击右上角的Creats Resource

在弹出页面中
Plan选择Starter;
Instance Name自己取一个,我为了方便就设为Waline;
Cloud Provider设置为Alibaba Cloud;
Region选择新加坡;
Monthly Spending Limit设为0;
点击右键下的Create创建实例。

等待不到一分钟就建好了。
2、运行代码
左侧选择SQL Editor,按照官方文档,先后将以下5段代码粘贴进去并运行。
注意,每粘贴进去一段代码就运行一次,一共运行5次。
1 | CREATE DATABASE `waline`; |
1 | USE waline; |
1 | CREATE TABLE `wl_Comment` ( |
1 | CREATE TABLE `wl_Counter` ( |
1 | CREATE TABLE `wl_Users` ( |
致此TiDB的数据库就建好了

二、获取TiDB数据库的连接配置
点击左侧的Overview,再点右上角的Connect就会在弹出窗口里显示连接信息。

1、创建密码
Database选择waline,再点击中间右侧的Generate Password创建密码

2、保存到本地
用以上参数建立一个waline-tidb.ini文件
1 | [tidb] |
三、导出原数据
LeanCloud的提供的数据导出会将数据按类别分成多个jsonl文件,用Waline后台提供的数据导出则只会导出一个jsonl文件,我们用第二种。
进入Waling的后台,登陆管理员账号后点头像,在弹出的窗口中点Migration,选择Export即可得到一个waline.jsonl文件。

四、将原数据导入至TiDB
1、快捷工具
这里需要用到waline-data-import-tool工具,根据你自己操作平台下载对应的版本
:
| 文件名 | 对应平台 |
|---|---|
| waline-data-import-tool-arm64 | Linux arm64 |
| waline-data-import-tool-linux | Linux x86_64 |
| waline-data-import-tool-amd64 | macOS Intel |
| waline-data-import-tool-darwin-arm64 | macOS Apple Silicon |
| waline-data-import-tool.exe.zip | windows |
我是m1芯片的MacBook,下载waline-data-import-tool-darwin-arm64,并与waline-tidb.ini、waline.jsonl两个文件放在同一个目录下
2、执行导入数据库的命令
在终端里进入三个文件的目录执行以下命令
1 | ./waline-data-import-tool-darwin-arm64 -c waline-tidb.ini -f waline.json |
我这提示permission denied: ./waline-data-import-tool-darwin-arm64,
权限不足,通过sudo su切换到root用户并再次执行
发现还是权限不足
执行
1 | ls -l waline-data-import-tool-darwin-arm64 |
发现只有读写权限,没有执行权限
通过
1 | chmod 777 waline-data-import-tool-darwin-arm64 |
授权读、写、执行权限后再次执行上一部的命令
这下成功执行了,根据提示按y继续

等待数据完成导入。
五、更改Waline的环境变量
将原来的LEAN_ID、LEAN_KEY、LEAN_MASTER_KEY、LEAN_SERVER删掉,新增以下几个变量,后面两个变量我搞不懂,似乎不用配置也可以。
| 环境变量名称 | 值 | 备注 |
|---|---|---|
| TIDB_DB | waline | TiDB 数据库库名 |
| TIDB_USER | TiDB 数据库的用户名 | |
| TIDB_PASSWORD | TiDB 数据库的密码 | |
| TIDB_HOST | TiDB 服务的地址 | |
| TIDB_PORT | 4000 |
TiDB 服务的端口 |
| TIDB_PREFIX | wl_ |
TiDB 数据表的表前缀 |
| TIDB_CHARSET | utf8mb4 |
TiDB 数据表的字符集 |
重新部署即可
六、测试
进入博客页面,以前的评论还在那就表明成功了。
也可以随便在哪个地方评论一下,然后在TiDB的 SQL Editor 里执行
1 | select * from wl_Comment order by id desc limit 3; |
就能看到刚才新增的评论。

但是出现一个问题,数据产生的时间比实际时间早了8个小时
显而易见需要将TiDB的时间改为东8
设置TiDB的时区
回到TiDB首页,在Organization Settings里找到常规设置,Time Zone
改为UTC+08:00,并点击右侧的Update。

诶,可是好像没有卵用诶
那我们到Waline的数据库里,点左侧SQL Editor,运行以下两条代码
1 | SET GLOBAL time_zone = '+8:00';-- 将全局时区设置为 UTC+8 |
1 | SET time_zone = '+8:00'; -- 将当前会话时区设置为 UTC+8 |
然后执行
1 | SELECT NOW(); -- 查看当前时间 |
显示的时间与当前北京时间一致。
搞定。