配置全世界最小的 MySQL 服務器——如何在一塊 Intel Edison 為控制板上安裝一個 MySQL 服務器。
介紹
在我最近的一篇博文中,物聯網,消息以及 MySQL,我展示了如果Particle Photon 的板子開始構建你自己的物聯網。那個實現很棒,不過因為 Particle Photon 板子沒有任何本地的存儲,所以需要穩定的互聯網(wi-fi)接入。如果你沒有一個可靠的網絡訪問 (例如在一些邊遠的地方) 或者需要某些很小的東西來存儲數據,現在就可以使用Intel Edison了。我甚至在Edison 安裝過 MySQL,這使其成為了世界上(在體積上)最小的 MySQL 服務器! 其它的選擇包括:
Raspberry Pi(我的大學同學在 Raspberry PI 上面安裝了 Percona 服務端)
基於 Android 的系統 (例如 Nexus 7: Vadim 在 Nexus 7 上安裝了 Percona 服務端)
MySQL 配置
Intel Edison是一個小巧的計算機,基於 22 nm 的 Silvermont 雙核 Intel Atom CPU, 主頻 500MHz,運行 Linux (叫做 Yocto 的基於 Ubuntu 的發布版)。為了對 Edison 進行編程,我們需要一塊接口板。可以選擇的板子包括兼容 Arduino 的接口板 (包含了 SD 卡) 還有 Intel 接口板。
安裝和配置是直觀的。我使用了在 Intel Edison 板子上開啟 Yocto 項目的指南來對板子進行安裝和配置。首先我們需要通過串口來連接 Edison,並對 sshd 和 Wi-Fi 進行配置;完成後我們就可以使用 SSH 連接到 Edison 了。
因為 Linux 通用的二進制文件是兼容 Yocto Linux 的(因而你無需編譯任何東西),所以 MySQL 的安裝相對比較簡單. 有兩個坑:
Yocto linux (還有官方的資源庫) 默認並沒有包含 MySQL 所需要的庫: libaio1, libcrypto, libssl
內部存儲比較小,而 MySQL 5.7 二進制文件不適合放到任何分區。我必須刪除一些 “tests”以及其它我並不需要的東西。真正安裝的時候可以使用 SD 卡 (SD 插敘在一些板子上是有的)。
為了安裝庫文件,我遵照這份優秀的指南:Edison 包 repo 配置,使用了非官方的 Edison 資源庫。設置很簡單:
要配置你的 Edison 從這個 repo 獲取包,請用下面這些東西替換掉 /etc/opkg/base-feeds.conf 中的東西(其它 opkg 配置文件不需要改變):
src/gzallhttp://repo.opkg.net/edison/repo/allsrc/gzedisonhttp://repo.opkg.net/edison/repo/edisonsrc/gzcore2-32http://repo.opkg.net/edison/repo/core2-32[/code]
之後我們需要對庫進行安裝:
#opkginstalllibaio1_0.3libcrypto1.0.0libssl1.0.0[/code]
最後我們可以下載 Percona Server 5.6 並將其放到某個地方 (使用 my.cnf 中的 basedir 指向安裝路徑):
#wgethttps://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-5.6.25-73.1/binary/tarball/Percona-Server-5.6.25-rel73.1-Linux.i686.ssl100.tar.gz[/code]
請注意最新的 Percona Server 5.6 依賴於 Numa 庫,而對於 Yocto 沒有這樣的庫 (對 Edison不影響)。因此 5.6.25 是你可以在這裡安裝的最新的 Percona 服務端。
下面在 Intel Edison 上所進行的簡單(並且相當無用 )的基准測試:
root@edison:/usr/local/mysql#cat/proc/cpuinfoprocessor:0vendor_id:GenuineIntelcpufamily:6model:74modelname:GenuineIntel(R)[email protected]>SELECTBENCHMARK(10000000,ENCODE('hello','goodbye'));+-----------------------------------------------+|BENCHMARK(10000000,ENCODE('hello','goodbye'))|+-----------------------------------------------+|0|+-----------------------------------------------+1rowinset(18.77sec)[/code]
MySQL 可以為你烤面包嗎?
著名的 MySQL Bug#2, 提交於 2002 年 9 月12 號,並說明“MySQL Connector/J 並不能烤面包”。使用 Intel Edison 和 Arduino 兼容的接口板現在就可以修復這個 bug 了: 現在不僅 MySQL Connector/J , MySQL 服務端本身也可以為你烤面包了 ! 這可以借助於 UDF,或者在 MySQL 5.7中使用Query Rewrite 插件,因此你可以執行MySQL 查詢:
mysql>maketoast;[/code]
對於實際的實現,你既可以”黑“掉一個手頭的烤面包機來接入接口板的針腳,或者使用兼容 Arduino 的Robotic Arm。好了, MySQL,為我烤面包吧!