Home » 2013 » February (Page 2)

InnoDB Quick Reference Guide:對於剛接觸 InnoDB 的入門與參考書

在「The InnoDB Quick Reference Guide is now available」這邊看到有人把 MySQLInnoDB 資訊整理成書,電子書版本大約是 NTD$230 (用美金計算是寫這篇文章換算出來最便宜的價錢)。購買後有 PDF、Mobi 以及 ePub 版可以下載。

這本書適合打算要換 InnoDB、剛換 InnoDB,或是換了 InnoDB 但還沒遇過瓶頸的人閱讀。開頭的章節先解釋 InnoDB 有什麼特性,後面的章節會說明有哪些設定可以設,以及測試的工具。而最後面會說明要如何維護,以及要如何處理爛掉的狀況。

測試 DigitalOcean 荷蘭阿姆斯特丹的機器...

續上篇「DigitalOcean 與 Linode 的比較...」,先補上上次沒抓的圖,這是 DigitalOcean 可以用的 Linux Distribution:

這次仔細檢查發現 DigitalOcean 本身沒有提供 DNS resolver,是指到 Google Public DNS

nameserver 8.8.8.8
nameserver 8.8.4.4

從阿姆斯特丹的機器過去是透過 Cogent 到法國的 Google Public DNS,需要 10ms,這數字有點差。到是 OpenDNS208.67.222.222 是走 Tinet,就在當地處理掉,只需要 0.6ms 左右,但 OpenDNS 會把不存在的 hostname 指到他們自家...

如果要用阿姆斯特丹機房的機器,在裝完機器後要記得 DNS 的部份可能要自己架,測試的時候是用 Unbound 架一個給自己用...

網路的部份:

  • 從台灣過去大約 280ms,從 Linode 東京過去大約 265ms。
  • 看起來是 Cogent + Tinet,看不太出來是以 Cogent 還是以 Tinet 為主,traceroute 時兩者都不少。
  • 大多數的 CDN 都在阿姆斯特丹當地有點,所以都沒什麼問題。不過 CloudFront 把我丟到隔壁德國法蘭克福機房 (大約多了 7ms)。
  • 如預期的,連到俄羅斯的網站大多都是直連。

DigitalOcean 與 Linode 的比較...

DigitalOcean 因為「Linode vs DigitalOcean, performance benchmarks」這篇上了 Hacker News 熱門文章列表,把本來試用帳號的名額都用完了,現在要測試要自己花錢... XD

原文是測效能 (I/O 速度與 CPU 速度),我是看其他的部分:

  • 價錢便宜又提供 SSD (看完提供的內容與品質後,居然還可以打趴 Linode,這真是低到不可思議 XD),控制介面又是自己開發的,難怪會讓 Hacker News 的人熱起來...
  • 計費是 by hour,然後每個月的上限就是表列出來的金額,比起 Linode 是以天計算友善不少...
  • 目前機房的點有點少,只有美東 (New York) 與荷蘭 (Amsterdam),我開美東的點測試,從台灣過去大約要 200ms,從 Linode 東京過去是 170ms。
  • 可以常見的 Linux 套件 (DebianUbuntuFedoraArchLinux、...),32bits 或是 64bits 都有提供,我是裝 Debian 6.0 64bits 版本,然後直接用 apt 換成 wheezy 後重開是沒問題的,Linode 沒換成功過...
  • 網路看起來是 Level3 + Cogent,而且是以 Level3 為主力,Cogent 的部份目前只有看到部分的 Akamai 走 (static.ak.fbcdn.net 這組),不過速度也沒什麼問題...
  • 紐約本來就是大點,各家 CDN 測起來都在當地有點。不過 CDNetworks 怎麼把 N2 (n2.panthercdn.com) 丟到華盛頓啊 (大約 8ms),反而是 L1 (l1.panthercdn.com) 走紐約本地...

Twitter 上已經看到 tkalu 已經把一些東西搬過去了:

Adobe 在澳洲降價:因為國會發正式公文要 Adobe 解釋為什麼賣的比其他地區貴...

首先是澳洲國會正式發文要求 AdobeApple 以及 Microsoft 解釋為什麼東西賣得比較貴:「Australian Govt Forces Apple, Adobe, Microsoft To Explain Price Hikes」、「Please explain prices: Parliament subpoenas Apple, Microsoft, Adobe」。

消息出來僅僅一天,Adobe 最先決定調降價錢:「Adobe Bows To Pressure and Cuts Australian Prices」、「Adobe cuts Australian prices after inquiry summons」。

調降的部份只包括月費服務的部份 (調到與美國一樣的價錢),而軟體買斷的部份仍然不變... 接下來等國會的後續了。

MySQL 5.6 的 GTID...

看到 Percona 的人在討論 MySQL 5.6 的 GTID (Global Transaction ID) 功能,剛剛就實際到 AWS 上開了兩台 m1.large 測試:「How to create/restore a slave using GTID replication in MySQL 5.6」。

要測試 GTID,因為剛出來沒多久,沒有多少文件可以看。MySQL 官方的「Replication with Global Transaction Identifiers」是必讀的文件。查 MySQL 官方文件時可以發現 5.6.9 (RC) 到 5.6.10 (GA) 其實還是改了不少變數名稱,如果在網路上找舊文章照抄是不會動的...

先提結論,Galera Cluster 畢竟出來很久了,成熟度比 GTID 高,建議現在先觀望一陣子,至少等 best practice 出來後再進場測試...

之前的 MySQL replication 有很多方法可以在不停機,或是停的時間很短的情況下把第一份 slave 資料與 replication 資訊生出來,舉例來說:

  • 系統如果用 InnoDB,可以用 Percona Xtrabackup 拉出。
  • 系統如果用 XFS + LVM,可以用 FLUSH TABLES WITH READ LOCK + XFS freeze + snapshot 功能拉出。
  • 甚至直接用空的 slave 跑 pt-table-sync...

但目前 MySQL 官方對 GTID 給的方式是 read only + mysqldump,這就算用 xtrabackup 也應該快不到哪吧... 這幾個月應該會一直有文章出現,裡面應該會有偷吃步的方法,看到再來測試看看 :o

跳過 MySQL replication 失敗的方法...

MySQL replication 發生錯誤後,需要一邊 skip replication error,一邊跑 pt-table-sync 強制資料庫同步:

while true; do ( echo 'SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;' | mysql -h $1 ) || sleep 1; done

那個 sleep 1 的設計是用在「如果 replication 正常,停一下再跑一次」的前提下而設計的;如果不需要的話拿掉也是 okay 的。

要注意,能這樣跑的前提是 max_connect_errors 要開超大,我是設成 max_connect_errors = 4294967295

Archives