我有两台电脑,Ubuntu 20.04 主力开发环境,MacBookPro 是备用机。Ubuntu 开发的白泽 Notebook 和数据如何自动同步到 macbook 呢?思考了下,Notebook 保存在 MySQL,数据保存在本机目录。MySQL 可以使用云服务,本机目录的数据使用 JuiceFS 实现自动同步。说干就干,开搞。
MySQL 云服务
我选择了青云MySQL 云服务,开通公网IP,设置防火墙规则。这事花点钱就行,没有难度。
JuiceFS
JuiceFS 搭建有点繁琐,需要在 ubuntu 和 Mac 分别配置,这里介绍下。JuiceFS 需要 1) 元数据存储,使用刚申请的 MySQL 云服务。2) 云存储,七牛云提供了 10 GB 免费空间,开发够用了。
Ubuntu 20
- 下载安装 JuiceFS
wget https://github.com/juicedata/juicefs/releases/download/v0.17.5/juicefs-0.17.5-linux-amd64.tar.gz
tar -xf juicefs-0.17.5-linux-amd64.tar.gz
sudo install juicefs /usr/local/bin
- 创建 MySQL 元数据库
登录青云 MySQL ,建库,作为 JuiceFS 元数据库。
create database juicefs charset utf8mb4;
- 创建 JuiceFS 文件系统
在 ubuntu 命令行执行。这里 zjcfs 是juicefs 的文件系统名称,可以换成你喜欢的。七牛云存储的 URL AK SK 等请参考这篇文档
juicefs format \
--storage qiniu \
--bucket https://<七牛云存储URL> \
--access-key <七牛云存储 AK> \
--secret-key <七牛云存储 SK> \
"mysql://<MySQL JDBC连接串>/juicefs" \
zjcjfs
执行后,juicefs 会提示 MySQL 连接延迟比较高,作为开发环境,实际体验下来,可以接受。生产环境下,建议优化。
- 挂载
sudo juicefs mount -d "mysql://<MySQL JDBC连接串>/juicefs" /work/juicefs
我希望启动Linux 自动挂载,所以修改 /etc/fstab
sudo cp /usr/local/bin/juicefs /sbin/mount.juicefs
sudo vi /etc/fstab
mysql://<MySQL JDBC 连接串>/juicefs /work/juicefs juicefs _netdev,max-uploads=50,writeback,cache-size=512000 0 0
执行 juicefs info /work/juicefs
, 可以看到juicefs 自动同步 /work/juicefs
。
这样,申请的七牛云存储挂载到本机 /work/juicefs
目录了。
- 配置 byzer-lang 和 byzer-notebook
对于byzer-lang,我们修改 deltalake 主目录 streaming.datalake.path /work/juicefs/byzer-lang-1/delta
对于 byzer-notebook, 修改 notebook.properties
中 notebook.database
开头的所有配置,使用 青云 MySQL 云服务。 byzer-notebook 的参数
notebook.user.home指定了用户上传的数据保存的目录,设置为
/work/juicefs/byzer-lang-1/users`.
启动 byzer-lang 和 byzer-notebook, 分别上传一份数据,创建一个 notebook。
MacOS
重复一遍 Ubuntu 20 的操作步骤。有 3 点不同,需要注意。
- 配置 JuiceFS 时,先安装 MacFuse.
下载地址为
https://github.com/osxfuse/osxfuse/releases/download/macfuse-4.1.2/macfuse-4.1.2.dmg
-
MacOS 的 根目录 / 是只读的,所以 juicefs 挂载到
/Users/jiachuan.zhu/juicefs
-
开机自动挂载JuiceFS 也不同。命令如下:
# zjcjfs 可以改为你的名字
touch ~/Library/LaunchAgents/io.juicefs.zjcjfs.plist
# io.juicefs.zjc.plist 添加如下内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>io.juicefs.zjcjfs</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/juicefs</string>
<string>mount</string>
<string>mysql://<MySQL JDBC 连接串>/juicefs</string>
<string>/Users/jiachuan.zhu/juicefs</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
JucieFS 搞定后,修改 Byzer-lang 和 byzer-notebook 参数,启动。可以发现,Ubuntu 的 Notebook 和数据自动同步到了 Mac ! 大功告成。整个过程花了约 2 - 3 个小时,但是多台电脑之间不需要手工拷贝数据了; 假如 1 台电脑的崩溃了,数据和 notebook 还在,这点时间还是很值的!
网友评论