MySQL Replication 遇到 Got fatal error 1236 from master 修復

MySQL Replication 遇到 error 1236 就有點麻煩了~ 通常都是 binlog 出問題造成的~ (Master 或 Slave 的 binlog 壞掉都有可能造成此錯誤)

通常遇到這個狀況, 都是 Slave 的 binlog 壞掉, 就 Slave DB 的資料重倒來解決, 但是此次遇到是 Master 的 binlog 壞掉, 就有點苦了~

錯誤訊息如下:

  • Last_IO_Errno: 1236
  • Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin.003583' at 45997491, the last event read from './mysql-bin.003583' at 4, the last byte read from './mysql-bin.003583' at 4.'

閱讀全文〈MySQL Replication 遇到 Got fatal error 1236 from master 修復〉

MySQL 砍不存在的 Table 造成 Replication 停擺解法

MySQL 於 Master 砍個不存在的 Table, Slave 沒有此 Table 的話, 就會造成 Replication 停擺, 會出現下述錯誤訊息: (有些不需要看到的訊息我先刪掉了)

Replicate_Wild_Ignore_Table:
Last_Errno: 1146
Last_Error: Error 'Table 'phpmyadmin.pma_table_info' doesn't exist' on query. Default database: ''. Query: 'DELETE FROM `phpmyadmin`.`pma_table_info` WHERE db_name  = 'test' AND table_name = 'item''
Skip_Counter: 1
Seconds_Behind_Master: NULL
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 1146
Last_SQL_Error: Error 'Table 'phpmyadmin.pma_table_info' doesn't exist' on query. Default database: ''. Query: 'DELETE FROM `phpmyadmin`.`pma_table_info` WHERE db_name  = 'test' AND table_name = 'item''

上述發生的狀況是 Master 有 phpMyAdmin, Slave 沒有(所以 Slave 一開始同步也沒去建立 phpMyAdmin DB), 但是 phpMyAdmin 新版會建立自己的 DB, 於 phpMyAdmin 頁面上砍 Table 時, 他也要從自己的 pma_table_info 砍資料, 於是就造成 Replication 停擺, 就出現上述錯誤訊息.

閱讀全文〈MySQL 砍不存在的 Table 造成 Replication 停擺解法〉

MySQL 出現 Could not initialize master info structure 修復

於 MySQL 設定同步 Replication, 將下述命令拆成兩組輸入, 如下述:

  1. mysql> CHANGE MASTER TO MASTER_HOST='master.example.com', MASTER_USER='repl', MASTER_PASSWORD='repl_password';
  2. mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;

設定 Replication 完成後, start slave 無法啟動, 出現下述錯誤訊息:

Could not initialize master info structure, more error messages can be found in the MySQL error log

要怎麼解決呢?

閱讀全文〈MySQL 出現 Could not initialize master info structure 修復〉

Can't connect to MySQL server on (99) 解法

PHP 出現下述錯誤訊息:

PHP Warning:  mysql_connect(): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (99)

但是追蹤起來, 程式執行時, 機器、DB 都沒有什麼 Loading, 於是從設定追, 程式大概都跑約 60秒就掛掉, 於是把設定於60秒的都抓出來看, 再測試看看, 也沒有任何差異, 一樣會掛掉.

閱讀全文〈Can't connect to MySQL server on (99) 解法〉

MySQL 為 GROUP BY 搭配的 GROUP_CONCAT() 功能

於 MySQL 內, 資料格式如下:

id       name
1          A
1          B
1          C
2          D

想要一行指令: "SELECT * FROM TABLE WHERE id = 1 GROUP BY id", 取得 GROUP BY id 的所有資料集合, 要怎麼做?

註: 想要內容列出 id=1, name=A,B,C

閱讀全文〈MySQL 為 GROUP BY 搭配的 GROUP_CONCAT() 功能〉

於 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〉