我有兩臺(tái)電腦,Ubuntu 20.04 主力開(kāi)發(fā)環(huán)境,MacBookPro 是備用機(jī)。Ubuntu 開(kāi)發(fā)的白澤 Notebook 和數(shù)據(jù)如何自動(dòng)同步到 macbook 呢?思考了下,Notebook 保存在 MySQL,數(shù)據(jù)保存在本機(jī)目錄。MySQL 可以使用云服務(wù),本機(jī)目錄的數(shù)據(jù)使用 JuiceFS 實(shí)現(xiàn)自動(dòng)同步。說(shuō)干就干,開(kāi)搞。
MySQL 云服務(wù)
我選擇了青云MySQL 云服務(wù),開(kāi)通公網(wǎng)IP,設(shè)置防火墻規(guī)則。這事花點(diǎn)錢(qián)就行,沒(méi)有難度。
JuiceFS
JuiceFS 搭建有點(diǎn)繁瑣,需要在 ubuntu 和 Mac 分別配置,這里介紹下。JuiceFS 需要 1) 元數(shù)據(jù)存儲(chǔ),使用剛申請(qǐng)的 MySQL 云服務(wù)。2) 云存儲(chǔ),七牛云提供了 10 GB 免費(fèi)空間,開(kāi)發(fā)夠用了。
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
- 創(chuàng)建 MySQL 元數(shù)據(jù)庫(kù)
登錄青云 MySQL ,建庫(kù),作為 JuiceFS 元數(shù)據(jù)庫(kù)。
create database juicefs charset utf8mb4;
- 創(chuàng)建 JuiceFS 文件系統(tǒng)
在 ubuntu 命令行執(zhí)行。這里 zjcfs 是juicefs 的文件系統(tǒng)名稱,可以換成你喜歡的。七牛云存儲(chǔ)的 URL AK SK 等請(qǐng)參考這篇文檔
juicefs format \
--storage qiniu \
--bucket https://<七牛云存儲(chǔ)URL> \
--access-key <七牛云存儲(chǔ) AK> \
--secret-key <七牛云存儲(chǔ) SK> \
"mysql://<MySQL JDBC連接串>/juicefs" \
zjcjfs
執(zhí)行后,juicefs 會(huì)提示 MySQL 連接延遲比較高,作為開(kāi)發(fā)環(huán)境,實(shí)際體驗(yàn)下來(lái),可以接受。生產(chǎn)環(huán)境下,建議優(yōu)化。
- 掛載
sudo juicefs mount -d "mysql://<MySQL JDBC連接串>/juicefs" /work/juicefs
我希望啟動(dòng)Linux 自動(dòng)掛載,所以修改 /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
執(zhí)行 juicefs info /work/juicefs, 可以看到j(luò)uicefs 自動(dòng)同步 /work/juicefs 。
這樣,申請(qǐng)的七牛云存儲(chǔ)掛載到本機(jī) /work/juicefs目錄了。
- 配置 byzer-lang 和 byzer-notebook
對(duì)于byzer-lang,我們修改 deltalake 主目錄 streaming.datalake.path /work/juicefs/byzer-lang-1/delta
對(duì)于 byzer-notebook, 修改 notebook.properties 中 notebook.database 開(kāi)頭的所有配置,使用 青云 MySQL 云服務(wù)。 byzer-notebook 的參數(shù)notebook.user.home指定了用戶上傳的數(shù)據(jù)保存的目錄,設(shè)置為/work/juicefs/byzer-lang-1/users`.
啟動(dòng) byzer-lang 和 byzer-notebook, 分別上傳一份數(shù)據(jù),創(chuàng)建一個(gè) notebook。
MacOS
重復(fù)一遍 Ubuntu 20 的操作步驟。有 3 點(diǎn)不同,需要注意。
- 配置 JuiceFS 時(shí),先安裝 MacFuse.
下載地址為
https://github.com/osxfuse/osxfuse/releases/download/macfuse-4.1.2/macfuse-4.1.2.dmg
MacOS 的 根目錄 / 是只讀的,所以 juicefs 掛載到
/Users/jiachuan.zhu/juicefs開(kāi)機(jī)自動(dòng)掛載JuiceFS 也不同。命令如下:
# zjcjfs 可以改為你的名字
touch ~/Library/LaunchAgents/io.juicefs.zjcjfs.plist
# io.juicefs.zjc.plist 添加如下內(nèi)容
<?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 參數(shù),啟動(dòng)??梢园l(fā)現(xiàn),Ubuntu 的 Notebook 和數(shù)據(jù)自動(dòng)同步到了 Mac ! 大功告成。整個(gè)過(guò)程花了約 2 - 3 個(gè)小時(shí),但是多臺(tái)電腦之間不需要手工拷貝數(shù)據(jù)了; 假如 1 臺(tái)電腦的崩潰了,數(shù)據(jù)和 notebook 還在,這點(diǎn)時(shí)間還是很值的!