0%

some problem with percona-mysql-server upgrade from 5.6 to 5.7

緣起

mysql 5.7 在功能與性能上都比 5.6 出色不少,但基於 percona 一直沒有更新的情況下我也沒有貿然升級,隨著前陣子 percona 釋出了 5.7 剛好最近又有了要使用 mysql 的機會,就想藉由這次機會順便升級 5.7

過程

在 OS 上面這台使用的是 Ubuntu 14.04,使用下面指令就能完成升級

1
2
3
sudo service mysql stop
sudo apt-get update
sudo apt-get install percona-server-server-5.7

等到跑完之後重啟 mysql 即可…

但是大家都知道事情通常都不會這麼順利,所以我在這邊發生了 mysql 啟動不了的悲劇GG

問題解決

因為重啟的時候有看到如下的訊息

1
no directory logging in with home=/ mysql

於是先使用這樣的做法

1
sudo usermod -d /var/lib/mysql/ mysql #這裡舉例使用預設路徑,有改路徑的記得跟著改

上面的作法等同於去修改 /etc/passwd 裡面 mysql 這個 user 的第六項資料,大致上是設定 mysql 這個 user 的家目錄的意思
想了解更多也可以參看一下這篇Ubuntu 平滑升级 MySQL 到 5.7

再重啟訊息不見了,但是依然失敗

再去 /etc/mysql/my.cnf 裡面確定一下

  1. datadir = (資料路徑)
  2. log_error= /var/log/mysql/error.log (log 有正確被寫入到預設位置)

檢查一下 log 之後發現錯誤訊息是
‘innodb_buffer_pool_populate’ 這個參數找不到

Google 查一下找到下面這篇說明
Changed in Percona Server 5.7
innodb_buffer_pool_populate server option and numa_interleave mysql_safe.sh option have been replaced by innodb_numa_interleave server option. Note that flush_caches option still remains.

於是乎把 innodb_buffer_pool_populate 取代成 innodb_numa_interleave 重啟 mysql 就成功啟動了,謝天謝地。

後記

最後執行一下

1
sudo mysql_upgrade -u root -p #更新一下數據