好文 - Google棄甲骨文MySQL,將大規模導入MariaDB

去年(2012) WikiPedia 也捨棄 MySQL 轉向 MariaDB: Wikipedia moving from MySQL to MariaDB (註: 不過應該還不是全部轉過去)

今年 Google 也將大規模採用 MariaDB 囉~

註: 我現在是全部都轉向 Percona

閱讀全文〈好文 - Google棄甲骨文MySQL,將大規模導入MariaDB〉

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() 功能〉