如何安裝二個 MySQL 在同一台 Linux - Ubuntu Server 上

如何安裝二個 MySQL 在同一台 Linux - Ubuntu Server 上


News from: Orange.

App 後台服務的必要性


我們在開發 App 時,除了單機版程式之外,往往至少需要一個後台來作服務的提供者。依筆者來看,這是手機 App 強大的地方之一。要比 CPU 速度,比視窗大小,手機不可能會比筆電或是桌機來得更好。要打電動或是上網,手機其實並不是個很好的媒體。然而手機 App 至少有二個地方完全的壓過了桌機與筆電:
1.可取得性:在任何地方,就如Jobs 當年的名橋段,從牛仔褲裡掏出了… 一支手機!筆電即始可以帶著走,但是也不是任何時間能夠打開使用。然而手機是連搭公車站著都可以使用,這就很不同了~ 一天之中,帶著筆電在外頭跑來跑去的,真正打開來的時間可能不到能夠使用手機的 1/5。
2. 通往世界的窗口:手機不只是手機,而是手機通過網路,可以連接全世界幾近無限的網路服務。這是這一波革命的核心價值之一。即始我在滿員電車裡,除了幻想著某些橋段之外,我可以查看郵件,上網購物,google 所有興趣的頁面,以及頁面導向的進一步頁面,查看交通路況,看看家裡小朋友有沒有乖乖睡午覺,連絡週末的聚會,立即回答老闆剛傳來的疑問… 太多太多事可以作。
所以,回到原議題,在大多數的 App 裡後台的服務是必要的。

如何搭建 App 後台服務


後台的選擇,依筆者的經驗,至少有二個方法:搭用別人架好的平台,如著名的 Parse.com,或者就是自己作苦工,建立自己的後台。二者各有優缺點,視專案而作適合的選擇。
而若要搭建自己的後台,又至少需要分為測試後台與正式後台二種。這樣才不會避免開發新功能時不小心將不該 Po 的資料傳送給使用者,而導至使用經驗的大幅降低。
若使用 parse.com 作為後台,這件事倒是相對容易很多,就開二個 parse 目錄即可。若自己搭建後台,那要如何區分正式後台與測試後台,就需要動些腦筋了。(註:2016年1月,Parse.com 已宣布 2017年1月將關閉服務。)
以使用LAMP作為後台伺服器為例,就會遇到了一個很基本的需求,儘管可以將多個網域指向同一台機器,然而該機器上的 Port 3306 (MySQL 預設 port)只有一個。當然使用二台機器就可以省一些事,但是卻增加了一些硬體成本以及維護成本。畢竟,有二台機器,就表示定期備份要作二倍的工。
這裡可以有二個選擇:使用二個不同的資料庫名字,或者,就架二個 MySQL。前者的優點是不用去傷腦筋怎麼架二個 MySQL,但是缺點卻是 PHP 程式在正式版與測試版之間需要作切換。後者的優點則相反,程式幾乎不需要作切換,但是如何安裝二個  MySQL 在同一台機器上,卻需要費一些工。

在同一個 Ubuntu Server 上設 2 個 MySQL service 設定步驟


由於筆者所使用的後台是 Ubuntu Server,而MySQL 官網上的文章是 Linux 的,並不適合 Ubuntu ,這讓我浪費了不少時間。在奮戰一下午之後,終於找到正確的路搞定這件事。以下是操作步驟。(注意,不同的 OS 步驟不相同,僅供參考)
筆者環境:
OS: Ubuntu 14.04.2 LTS
MySQL:  5.5.41-0ubuntu0.14.04.1 

1. 先備份原來的資料庫

你不會希望慘劇發生,除非你的機器本來資料庫裡就是空的。
命令:
萬一出了什麼事,只要保留好這個檔案,一切可能還有救


2. Stop MySQL


3. 建立 data 目錄,等一下會把另一個 MySQL  安裝在這裡。所有權要改為 mysql,不然會有問題。


4. 建立 log 目錄,第二台 MySQL 若有任何錯誤訊息,可以由這裡看到


5. 建立 config 檔


請參考 https://github.com/naveensnayak/mysql-multi/blob/master/my3308.cnf

6. 修改 Apparmor ( Ubuntu 的軟體防火牆)設定檔 /etc/apparmor.d/usr.sbin.mysqld



7. 安裝另一份 MySQL



然後用 netstat -ltn 可以看到, port 3308 根本沒起來。
用 tail -100 /var/log/mysql/mysql3308/error.log 可以看到錯誤訊息。

8. 連線


9. 修改 root 密碼

剛架好的 MySQL 的 root 是沒有密碼的,連上之後可以用這個指令來修改密碼。
恭喜!終於大功告成,可以用一台機器可以架二個 MySQL 了。



留言

熱門文章