使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作

發現 Blog 的速度越來越慢, 主要原因應該是資料越來越多, Database 也開太多(資料蒐集 等等), 於是想說要來為所有 DB 做 Optimize 和 Repair 的動作.

詳可見:

閱讀全文〈使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作〉

MySQL Replication Slave 使用 PHP 來忽略錯誤語法

MySQL 使用量越來越大時, 就會遇到不少莫名奇妙的事, 不管是 Replication 還是 Data Import 等等.

最常見的就是這個: MySQL Replication 出現 Duplicate Key

註: 此狀況只會發生在 MySQL Replication 的 Slave, 所以下述程式也是給 Slave 用, Master 不需要.

閱讀全文〈MySQL Replication Slave 使用 PHP 來忽略錯誤語法〉

查看 MySQL 各 Table 的使用空間

想知道 MySQL 每個 Table 到底使用多少空間, 如果是用 MyISAM 格式, 直接 ls -lh 去看即可. (下述路徑是 Debian Linux 預設 MySQL DB 存放路徑)

查看 MySQL Table 使用容量 (看 *.MYI)

  • ls -lh /var/lib/mysql/DB_NAME/
  • ls -lh /var/lib/mysql/DB_NAME/ | grep MYI # root 身份 可以直接 ls -lh /var/lib/mysql/DB_NAME/*.MYI

取出 MySQL Table 使用容量 依容量大小排序

  • ls -l /var/lib/mysql/DB_NAME/ | grep MYI | awk '{print $5,$8}' | sort -nr
  • 簡化: ls -l /var/lib/mysql/DB_NAME/ | awk '/MYI/ {print $5,$8}' | sort -nr # 感謝
    artchiu 提供

不過若使用 InnoDB, 因為檔案只有一個, 就沒辦法使用此方法來查.

閱讀全文〈查看 MySQL 各 Table 的使用空間〉

Ubuntu / Debian Linux Mplayer codecs 安裝 & 更新

Linux 看電影都是用 Mplayer, 平常所有影片都能看, 但是最近有個 rmvb 不能看(有聲音, 沒畫面), 但是我新灌的電腦可以看, 應該是 codecs 太舊的原因, 所以來更新看看.

如果您只是要安裝 Mplayer 與 確定可以正常顯示等等, 請先試此篇文章這兩個步驟:

  • 安裝 / 更新 Mplayer Codecs
  • 設定 視頻輸出驅動 (vo)

如果不行, 再參考本篇內其它步驟~ 🙂

註: 感謝 shell 的指點, Debian 有寫好的 Script 可以直接執行, 就會自動安裝好.

sudo /usr/share/mplayer/scripts/binary_codecs.sh install

閱讀全文〈Ubuntu / Debian Linux Mplayer codecs 安裝 & 更新〉

使用 AWK 來做垂直數字加總

數字垂直加總

檔案內容 (num.txt)

1
2
3

  • 加總: cat num.txt | awk '{sum += $1} END {print sum}'
  • 輸出: 6

加總 Apache access log 輸出的流量

  • cat access.log | awk '{sum += $10} END {print sum}'
  • 數值就是輸出的流量.

若數字太大,出現 E 的符號,可以用 printf 來印

  • cat access.log | awk '{sum += $10} END {printf "%f\n", sum}'

相關網頁

MySQL Import / 資料還原 忽略錯誤訊息

要將 MySQL 的資料備份還原(mysqldump), 但是出現下面這些錯誤訊息: (mysql -u root DBNAME < DB.sql)

ERROR 1062 (23000) at line 43238: Duplicate entry '?' for key 2
ERROR 1062 (23000) at line 50788: Duplicate entry '?' for key 2
ERROR 1062 (23000) at line 50860: Duplicate entry '?' for key 2
ERROR 1062 (23000) at line 50923: Duplicate entry '?' for key 2

平常狀況這個應該是不存在的(或許吧? 業主的 DB 不知道為何會匯出這樣子的資料), 總之要先 Import 進去, 才能開始進行開發的工作.

出現上述的錯誤訊息, 匯入的動作就會停止, 所以要讓 MySQL 不要管這些訊息, 強制匯入.

閱讀全文〈MySQL Import / 資料還原 忽略錯誤訊息〉

開始使用 Debian Linux 桌面環境

前幾天遇到悲慘的狀況, 使用中的桌機, 硬碟突然就掛了. 幸好現在資料大部份都在網路上, 就沒什麼好留念的~

這台電腦裡面還有兩顆 IDE 硬碟(但是感覺都不太行了), 還是拿新的 SATA 硬碟來用, 所以現在電腦裡面的狀況就是 SATA + IDE 共存, 感覺好像沒什麼問題, 但是灌 Ubuntu 就有狀況了, Ubuntu (8.04/8.10) 無法光碟開機, 殘念.

還是回來使用 Debian, Debian 光碟可以正常開機, 但是直接安裝桌面環境, 裝完後連開機選單都出不來... 還是認命重灌~ 只灌最基本的系統, 然後跑 apt-get install gnome xorg 等命令來安裝桌面環境.

閱讀全文〈開始使用 Debian Linux 桌面環境〉

MySQL 的 mysqldump 移除 AUTO_INCREMENT=* 字串

MySQL 備份或者資料庫架構的匯出, 都會使用 mysqldump 來匯, 備份資料/還原都很方便, 但是匯出資料庫架構這方面, 對於 AUTO_INCREMENT 的處理就有點小麻煩了.

MySQL 匯出 DB Schema 的參數:(不匯出資料)

mysqldump -u root -d DB_NAME # "-d" 就不會將資料一起匯出來

閱讀全文〈MySQL 的 mysqldump 移除 AUTO_INCREMENT=* 字串〉