- [M] myql> FLUSH TABLES WITH READ LOCK;
- [M] $ mysqldump --all-databases --master-data | bzip2 -9 > mysql.bz2
- [M] scp mysql.bz2 foo@SLAVE:
- [S] mysql> STOP SLAVE;
- [S] bzip2 -dc | mysql -u root -p
- [M] mysql> RESET MASTER;
- [S] mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=147;
- [S] mysql> START SLAVE;
- [M] UNLOCK TABLES;
2015-11-27
MySQL Slave 重啟後步驟
此文章的場景是描述 MySQL Slave 和 Master 斷了同步資料,如何恢復。
2015-10-04
WordPress Replication
手上有兩台異地不同 Public IP 主機,在 CloudFlare 設定 DNS Round Robin,又運行著 WordPress,下面解說如何設定兩台主機同步。讓兩台主機都能登入,且新文章能互相同步。
MySQL 資料庫
參考 MySQL Replication 設定。要注意的是因為做的是 DNS Round Robin,所以隨機兩台主機都要設定 master-slave 兩種角色同時運行,我參考 Digital Ocean 的文章完成。
同步腳本
因為 WordPress 要處理 cache、files 資料夾,腳本請參閱 FTP Replication。
FTP Replication
我有兩台異地不同 Public IP 主機,在 Cloud Flare 設定 Round Robin,運行著 nginx。此文講解使用兩個腳本同步檔案。
L3 ~ L6: 因為 web root 權限需要,所以使用 sudo 提高權限。
L8: H0 & H1 透過 ssh 加密傳輸,得事先加信任公鑰。 L14 ~ L15: inotifywait 排除掉不想監控的檔案 ([Tt]hunms.db),接著只監控特定事件 (delete, moved_to, close_write, create)。為了記錄過程我把時間戳一並寫出,log 的樣子會長這樣:
L3 ~ L6: 因為要寫入到 web root,要求得是 root 。
L13 ~ L26: 做的事情和 H0 一樣,只是來源和目的互換。
我的 H0 機器讓人 FTP 上傳檔案,監控程式偵測有檔案異動及開始 rsync 到 H1。示意圖如下:
H0
L3 ~ L6: 因為 web root 權限需要,所以使用 sudo 提高權限。
L8: H0 & H1 透過 ssh 加密傳輸,得事先加信任公鑰。 L14 ~ L15: inotifywait 排除掉不想監控的檔案 ([Tt]hunms.db),接著只監控特定事件 (delete, moved_to, close_write, create)。為了記錄過程我把時間戳一並寫出,log 的樣子會長這樣:
15/10/04 21:37:05 CREATE /var/www/example.com/index.html
L9: 在 H1 機器上有個 pool 目錄放置這些需要同步的檔案,原因不想讓 rsync 直接寫到 web root,權限過大危險。
L21: 移除前綴字,避免同步路徑錯誤。
L24: 移除檔案名稱,讓 rsync 同步資料夾,而非單一檔案。
L26: rsync + ssh 同步資料夾到 H1。
L21: 移除前綴字,避免同步路徑錯誤。
L24: 移除檔案名稱,讓 rsync 同步資料夾,而非單一檔案。
L26: rsync + ssh 同步資料夾到 H1。
H1
L3 ~ L6: 因為要寫入到 web root,要求得是 root 。
L13 ~ L26: 做的事情和 H0 一樣,只是來源和目的互換。
已知問題
刪除
inotifywait 遇到刪除檔案或目錄,只會出現 OPEN,ISDIR,接著就沒了,所以也無法偵測到 DELETE 事件。rsync 直到下個時間才會把上個未刪除的工作做完。2015-10-02
GoDaddy 註冊系統有安全疑慮
GoDaddy 註冊系統只接受最長 11 個字的 local-part,而 Email 地址的規範 RFC 5322 明確指出最長可以到 64 個字。
這種回答讓我對 GoDaddy 灰心,工程文化沒落實完全,如此簡單的註冊瑕疵能用這麼簡單的方式拿回權限,如果今天我就是壞人呢?
緣由
我在 GoDaddy 註冊了一個帳號,我的 Email local-part 有 30 個字,因為某個原因我需要重新登錄網站,結果就無法登錄。查了 Whois 發現 GoDaddy 把我的 Email 縮短了,而且是沒有規則。客服
0. 官網沒有文字客服
GoDaddy 不知緣由為何,停止了文字客服,只剩電話客服。因為擔心英文口說無法順利解決我的問題,且如此長的國際電話肯定所費不貲。最後讓我找到了 @GoDaddyHelp。
1. 英譯證件
GoDaddy 客服來信要求我提供英文翻譯的官方證件,原先試著自己 PS 將身分證翻譯成英文版本,但是客服不接受這種翻譯。後來我提供了護照,但是由於當初註冊使用的名字不是漢語拼音,而是沒有法律效力的自取英文名字。我在信中和對方表明當初我沒有想到註冊會失敗,且我的自取英文名字和漢語拼音的用處。客服人員基於保護客戶帳號安全,提供了三個方式:
0. 試著聯繫 Whois 上面錯誤的 Email。
1. 透過 ICANN 投訴。
2. 法院傳票要回。
2. 將錯就錯
GoDaddy 客服拒絕我的護照證明後,我在信中嚴厲的反應這是網站註冊系統的瑕疵,造成我的困擾。客服根本不想回應我的理由,因為他有理由可以假設我是壞人,透過如此手段竊取別人的域名,想想也是有道理,就不在此爭端,徒勞罷。
我讀了 ICANN 投訴的方式,根據 2015-03-01 發佈的 Rules for Uniform Domain Name Dispute Resolution Policy,投訴方得負擔所有調查的費用,看了 GODADDY SUBPOENA POLICY/ATTORNEY TIPS 光研究每小時就得付 75 USD,這已經超出我的域名購買費用,不划算。
最後,我想到了將錯就錯的伎倆,去申請 Whois 錯誤的 Email。因為是 Gmail 所以可以隨意申請,果真行得通,重置密碼的信件順利收到,把登入權限給拿回來了!
安全疑慮
一拿到登入權限後,試著在後台變更 Email 為 30 個字的帳號,發現依然不行,然後聯繫 @GoDaddyHelp,得到的答案是:
I was not able to duplicate this in another account. You may want to try using an alternate email address.
這種回答讓我對 GoDaddy 灰心,工程文化沒落實完全,如此簡單的註冊瑕疵能用這麼簡單的方式拿回權限,如果今天我就是壞人呢?
訂閱:
文章 (Atom)