加班

下午發生了緊急事件,於是就跟老闆還有老闆的老闆還有大神三個人衝到內湖機房,搞到早上五點天都亮了才結束…OTL
其實之前也有在機房加班到凌晨三四點啦,不過這次原因更囧了。haproxy萬歲啊!

另外也因為這次的事件,有幸拜會了B站的老闆,還有傳說中的第N代的BBS。B站的老闆說第一代BBS現在被供奉在公司的辦公桌旁,比起被當成皮球的某「有站」的BBS來說,還真是好命啊…

MySQL (MyISAM) 的備份

當系統小的時候,用 mysqldump 在離峰時間把資料 dump 出來還算可行。
雖然 Table 會暫時 Lock 住,但是因為小,所以速度可以很快,鎖住的時間可以不計。
但當系統大的時候就不能這樣做了。

好在已經有許多處理這個問題的經驗者。
解決這個問題的 Key Point 是「減少鎖 Table 的時間」,因此如果採用的 File System 或是 Volume Manager 有支援快速的 snapshot 功能的話,整個問題就簡單很多。步驟如以下所示:

  1. SLAVE STOP;
  2. FLUSH TABLE WITH READ LOCK;
  3. 作 snapshot
  4. UNLOCK TABLES;
  5. SLAVE START;

如果採用 LVM (Linux), ZFS (FreeBSD, Solaris) 或是 NetApp 的話,整個備份過程可以小於 5 秒鐘,因此可以做到每個小時備份一次而不影響正常使用。如果在 Slave 上做 snapshot 備份,則完全不會影響到寫入(READ LOCK時還是可以讀)。

高捷遊記

這次趁去墾丁的機會回了老家一趟,也因此搭了高捷。

IMG_1878
世運站

IMG_1879
高雄車站,高捷的地下車站都有月台門

IMG_1884
中央公園站

其實感覺跟台北捷運差不多,不過車廂比較少,所以比較擠。
還有就是驗票閘門有點秀逗,三次裡面有兩次單程票沒辦法一次就順利回收,要重新再試第二次才能順利回收。

 

screenrc 指定視窗 encoding

23:58 <@sunpoet> wens 是新的不能亂洗澡站長。 😛
23:58 <@sunpoet> 原來之前改錯地方,現在 screenrc 裡面可以用 -b/-g 指定該視窗要哪個 encoding 啦。
00:06 < NotExist> sunpoet: 你用哪版@@ 我man沒看到 囧rz
00:06  * NotExist 想那功能也很久….
00:10 <@sunpoet> NotExist: 自己 patch …
00:15 <@sunpoet> NotExist: http://sunpoet.net/mira/screen-big5-gbk
00:16 <@sunpoet> 像這樣連大神的站 screen -b -t abpe 2 env LANG=C LC_ALL=en_US.ISO8859-1 telnet abpe.org
00:20 < NotExist> sunpoet: XD 感謝
00:20 <@sunpoet> NotExist: 因為我懶惰 :p
00:21 < NotExist> sunpoet: 科技始終來自於惰性 :p

感謝 sunpoet,作個備忘。

MySQL 在 Mtron SSD 上的測試

這次PIXNET進了2顆 32G Mtron MSP-SATA70(Spec 上寫的寫入速度為 90MB/s,讀取速度為 120MB/s),裝在 8-way、12G RAM 的 Debian Linux 上,跑 MySQL 5.1 Slave,用 MyISAM 當 backend。最大的 MyISAM Table 大概有 3GB。

這次一開始就採用 RAID 0, 4KB stripe size + XFS (4 KB Data Size) + noop disk scheduler。測試開始時,從DB Master複製資料所需的時間,大概是兩顆 SCSI 10k RPM + XFS 的 1/3,約 70MB/s。接著 replication qps 大概在 3000-4000 左右徘徊,最高大約是 15000 qps。

實際使用上(同時有 SELECT 與 UPDATE),大概 8000 qps 是極限,接著就會遇到 CPU Bound,對於較複雜的 SQL Query (SELECT … IF EXISTS)會開始卡。如果只計算單純的 SELECT QUERY,則可以到約 15000 qps。