使用 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 的使用空間〉

Perl 基本格式 (Hello、JSON 寫法)

Perl 讀取 JSON 寫法


#!/usr/bin/perl
# apt-get install libjson-perl
# http://search.cpan.org/dist/JSON/

# use JSON qw/to_json from_json/;
use JSON;
use Data::Dumper;

$json_text = '{"a":1}';

print Dumper from_json($json_text);
# $hash = from_json($json_text);
# print $hash->{'a'} . "\n";

閱讀全文〈Perl 基本格式 (Hello、JSON 寫法)〉

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}'

相關網頁

Amazon SimpleDB 操作筆記 與 程式範例(PHP)

在 EBS(Elastic Block Store)出來前(註: 有 EBS 就可以將 MySQL data 目錄 mount 上去.), 若要使用 EC2 搭配的資料庫, 就是得要選 SimpleDB, 雖然現在可以有 EBS 用, 不過 SimpleDB 還是有值得使用的地方, 應用範圍再自行想像囉~ 🙂

Amazon SimpleDB 儲存的格式是 Domain -> PKeys, PKey -> Attributes, Attributes 有很多 Key ->Value (註: Attributes 就是一筆紀錄下面, 可以有多個 Key -> Value 的紀錄), ex:

Key: 1
Attributes:
 Category: Book
 Price: 200
 Date: 2009-01-01

而且 SimpleDB 也有簡易的 Select 語法可以使用(在此篇還沒詳細研究 Select 語法.)

相關資訊: Amazon SimpleDB 研究相關文件蒐集

閱讀全文〈Amazon SimpleDB 操作筆記 與 程式範例(PHP)〉

Amazon EC2 取得自己的外部 IP

Amazon EC2 開機會自動取得自己 10.x.x.x 的 IP, 要抓取實體 IP / Hostname 等, 要用下述方法抓:

  • 取得 IP: wget -q -O /tmp/public-ip http://169.254.169.254/latest/meta-data/public-ipv4
  • 取得 Hostname: wget -q -O /tmp/public-hostname http://169.254.169.254/latest/meta-data/public-hostname
  • 註: 169.254.169.254 是特殊 IP, 非 EC2 無法用此方法抓取.

閱讀全文〈Amazon EC2 取得自己的外部 IP〉