如何配置全世界最小的 MySQL 服務器
如何配置全世界最小的 MySQL 服務器
配置全世界最小的 MySQL 服務器——如何在一塊 Intel Edison 為控制板上安裝一個 MySQL 服務器。
介紹
在我最近的一篇博文中,物聯網,消息以及 MySQL,我展示了如果 Particle Photon 的板子開始構建你自己的物聯網。那個實現很棒,不過因為 Particle Photon 板子沒有任何本地的存儲,所以需要穩定的互聯網(wi-fi)接入。如果你沒有一個可靠的網絡訪問 (例如在一些邊遠的地方) 或者需要某些很小的東西來存儲數據,現在就可以使用 Intel Edison 了。我甚至在 Edison 安裝過 MySQL,這使其成為了世界上(在體積上)最小的 MySQL 服務器! 其它的選擇包括:
-
基于 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/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
之后我們需要對庫進行安裝:
# opkg install libaio1_0.3 libcrypto1.0.0 libssl1.0.0
最后我們可以下載 Percona Server 5.6 并將其放到某個地方 (使用 my.cnf 中的 basedir 指向安裝路徑):
# wget https://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
請注意最新的 Percona Server 5.6 依賴于 Numa 庫,而對于 Yocto 沒有這樣的庫 (對 Edison不影響)。因此 5.6.25 是你可以在這里安裝的最新的 Percona 服務端。
下面在 Intel Edison 上所進行的簡單(并且相當無用 )的基準測試:
root@edison:/usr/local/mysql# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 74
model name : Genuine Intel(R) CPU 4000 @ 500MHz
...
mysql> SELECT BENCHMARK(10000000,ENCODE('hello','goodbye'));
+-----------------------------------------------+
| BENCHMARK(10000000,ENCODE('hello','goodbye')) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
1 row in set (18.77 sec) 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> make toast;
對于實際的實現,你既可以”黑“掉一個手頭的烤面包機來接入接口板的針腳,或者使用兼容 Arduino 的 Robotic Arm。好了, MySQL,為我烤面包吧!