MySQL Replication 出現 Duplicate Key

當 MySQL Replication 的 Slave 機器連進去, 使用 show slave status, 發現以下的訊息, 而 Replication 也隨著停下來不在運作的時後的做法~

Error 'Duplicate entry 'PRIMARY KEY' for key 1' on query. Default database: 'DB_NAME'. Query: 'INSERT INTO TABLE_NAME xxx VALUE( 'xxxx' )

這代表 Key 有重覆到, 原因不明, 也許是 MySQL 本身就有 Bug, 總之遇到這種狀況的處理方法, 可以把重覆的那筆資料砍掉(不過可能會有很多), 或者就是用以下做法:

  1. SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N; (N 是要跳過幾筆 (1~ ...))
  2. start slave;
  3. show slave status; # 持續看看狀況, 若有則重覆上述步驟

這樣子就可以了, 當然建議寫一隻程式來跑(可能會有很多)

閱讀全文〈MySQL Replication 出現 Duplicate Key〉

PHP 縮圖

因為本 blog 的頻寬有限, 想要貼圖又不太敢貼, 所以我的 blog 一直都很少有在貼圖(放在 flickr 或 其它地方 又怕何時不見了就麻煩了).

今天為了要貼一張圖, 但是看 166kb 實在蠻大的, Gimp 等的縮圖縮起來又糢糊不清(應該是我不會用.. Orz), 還是自己寫個簡單的縮圖比較簡單~ 🙂

總之效果還不錯就好了~

閱讀全文〈PHP 縮圖〉

grep、man 顏色設定

既然 ls 顏色設好了, grep、man 當然也要對一些 keyword 來做做顏色區分囉~

grep 對要找的字做顏色標註, 只要用預設參數即可(--color), 所以在 .bashrc 寫個 alias 就好囉, 如下:

alias grep='grep --color'

man 的話需要在 .bashrc 最後面加以下幾行, 就可以輕鬆的看 man page 囉~

  • # For colourful man pages (CLUG-Wiki style)
  • export LESS_TERMCAP_mb=$'\E[01;31m'
  • export LESS_TERMCAP_md=$'\E[01;31m'
  • export LESS_TERMCAP_me=$'\E[0m'
  • export LESS_TERMCAP_se=$'\E[0m'
  • export LESS_TERMCAP_so=$'\E[01;44;33m'
  • export LESS_TERMCAP_ue=$'\E[0m'
  • export LESS_TERMCAP_us=$'\E[01;32m'

閱讀全文〈grep、man 顏色設定〉

ls 顏色設定(in Bash shell)

ls 出來沒有任何顏色的時後看的很辛苦, 但是 ls --color 秀出來的時後, 看到目錄顏色是深藍色的時後, 有時後看起來會比沒有顏色更辛苦, 所以還是來修改一下顯示的顏色吧.

不過因為 BSD 和 Linux 的設定不一樣(BSD 用 LSCOLORS, Linux 用 LS_COLORS), 所以以下會分別記錄兩者的 原始狀態 和 如何修改.

閱讀全文〈ls 顏色設定(in Bash shell)〉

當 mysqdump 遇到 Out of memory

當 MySQL 的資料量太大, 在使用 mysqldump的時後遇到 Out Of Memory 的時後該怎麼辦?

有以下兩種做法:

1. 設定 my.cnf, 設定以下參數, max_allowed_packet=16M 可隨機再調大.

[mysqldump]
quick
max_allowed_packet = 16M

2. 使用 -q (--quick) 的參數, 使用此參數就不會使用到 Memory.

使用範例: mysqldump -q -u root DB_NAME > DB_NAME.sql

原廠的說明是如下:

--quick, -q

This option is useful for dumping large tables. It forces mysqldump to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out.

閱讀全文〈當 mysqdump 遇到 Out of memory〉