如何配置全世界最小的 MySQL 伺服器

oschina發表於2015-12-04

配置全世界最小的 MySQL 伺服器——如何在一塊 Intel Edison 為控制板上安裝一個 MySQL 伺服器。

介紹

在我最近的一篇博文中,物聯網,訊息以及 MySQL,我展示瞭如果 Particle Photon 的板子開始構建你自己的物聯網。那個實現很棒,不過因為 Particle Photon 板子沒有任何本地的儲存,所以需要穩定的網際網路(wi-fi)接入。如果你沒有一個可靠的網路訪問 (例如在一些邊遠的地方) 或者需要某些很小的東西來儲存資料,現在就可以使用 Intel Edison 了。我甚至在 Edison 安裝過 MySQL,這使其成為了世界上(在體積上)最小的 MySQL 伺服器! 其它的選擇包括:

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 的安裝相對比較簡單. 有兩個坑:

如何配置全世界最小的 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,為我烤麵包吧!

如何配置全世界最小的 MySQL 伺服器

相關文章