於 Debian Wheezy 使用 APT 安裝 Percona MySQL Server - 2013

於 Debian squeeze (stable) 安裝 Percona MySQL Server 只要照此篇: 於 Ubuntu、Debian 安裝 MySQL Percona 就可以完成.

但是若是從一開始版本就是用 Wheezy (Testing), Percona 官方支援(Percona Software) 還沒 Support, 就會遇到一些問題.

註: 此篇於 Percona MySQL 出 Wheezy DEB Package 後, 就只要照上面的連結做就可以了, 以下是直接裝 Debian Testing 時, Percona 遇到尚未出版本, 然後有遇到套件相依有問題的狀況, 提供可能的解決方式.

Debian Squeeze 和 Wheezy 在安裝 Percona 會遇到的問題, 最主要是差在 libssl (squeeze: libssl0.9.8, wheezy: libssl1.0.0).

直接使用 APT 安裝, 會遇到下述問題:

percona-server-server : 相依關係: percona-server-server-5.5 但它卻將不會被安裝
E: 無法修正問題,您保留 (hold) 了損毀的套件。

percona-server-server-5.5 : 相依關係: libssl0.9.8 (>= 0.9.8m-1) 但它卻無法安裝
E: 無法修正問題,您保留 (hold) 了損毀的套件。

不理 libssl, 直接強迫安裝的話(下載 deb 使用 dpkg --ignore-depends, 或 apt-get -f 強制安裝), 其中相依的套件都裝好後, 啟動 MySQL 會遇到下述問題:

mysql: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory

閱讀全文〈於 Debian Wheezy 使用 APT 安裝 Percona MySQL Server - 2013〉

mysqldump 一筆一行 Insert 的 Dump 語法

MySQL 想要對文字內容大量取代某個網址, 比較安全的做法是先 mysqldump 所有資料後, 對內容做取代, 然後在整個 Import 回去.

但是有幾個問題:

  1. 怕取代資料會有意外, 所以做完要再次確定修改的筆數, 來以防替換到不該取代的, 問題就大了.
  2. mysqldump 的資料都是一次 Insert 好幾筆資料混在同一行, 造成確認困難.

以上問題, 只要 MySQL dump 的資料可以一筆 Insert, 一行 SQL 語法, 就可以解決此問題.

閱讀全文〈mysqldump 一筆一行 Insert 的 Dump 語法〉

MySQL myisamchk 遇到 Disk is full 的解法

MySQL 使用 myisamchk 修復 *.MYI 時, 出現下述訊息:

myisamchk: Disk is full writing '/tmp/ST3lJjsW' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to c ontinue after freeing disk space)

myisamchk: Retry in 60 secs. Message reprinted in 600 secs

閱讀全文〈MySQL myisamchk 遇到 Disk is full 的解法〉

MySQL 對 MyISAM、InnoDB 使用 Optimize Table

系統用久了, 自然就會有不連續的碎片(fragmented)產生, 以前 Dos 使用 defrag, Windows 使用磁碟重組, 而 MySQL 則是使用 Optimize table.

以往都是使用: 使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作 - 這裡面的那隻程式來跑.

這次突然想到對特定的 Table 手動執行一下, 意外看到下述的訊息:

mysql> OPTIMIZE TABLE foo;

+----------+----------+----------+-------------------------------------------------------------------+
| Table    | Op       | Msg_type | Msg_text                                                          |
+----------+----------+----------+-------------------------------------------------------------------+
| test.foo | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| test.foo | optimize | status   | OK                                                                |
+----------+----------+----------+-------------------------------------------------------------------+

雖然結果一樣, 但是還是查查看差別為何~

閱讀全文〈MySQL 對 MyISAM、InnoDB 使用 Optimize Table〉

MySQL 的衍生版本 - Percona、MariaDB、MySQL branch at Google - 2012

自從 MySQL 被 Oracle 買過去後, 依照 MySQL 原本架構再開發出衍生的版本, 連 Google 都來插一腳囉~ 🙂

2012/04/10 更新, Twitter 也釋出他改得 MySQL 版本 - MySQL at Twitter

閱讀全文〈MySQL 的衍生版本 - Percona、MariaDB、MySQL branch at Google - 2012〉