如何配置全世界最小的 MySQL 伺服器
配置全世界最小的 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/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,為我烤麵包吧!
本文永久更新連結地址: