[精讚] [會員登入]
1128

[Docker] Mariadb-Galera出現Incorrect definition of table mysql.column_stats:'hist_type'及 'histogram'

使用docker的Mariadb-galera出現'hist_type'及 'histogram'型別錯誤的解決方法。

分享此文連結 //n.sfs.tw/16443

分享連結 [Docker] Mariadb-Galera出現Incorrect definition of table mysql.column_stats:'hist_type'及 'histogram'@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
最後編修
2024-08-24 10:48:44 By 張○○
 

自動目錄

自從上週發生資料庫系統整個被撐爆,所有的資料庫死機起動不了的意外,可以參考 [Rocky9+Docker] Mariadb Cluster + HAPROXY + Docker compose@新精讚 裡的錯誤排除。

我幾天就開始很注意他的容量問題,結果發現資料庫log每天以600mb的速度在長大,我並不知道他到底為什麼長得這麼快,所以第一招就是不要寫入binlog的記錄:

關閉記錄檔

修改設定檔

[mysqld]
skip-log-bin  <==加入這行
log_bin ='/var/log/mysql/mariadb-bin'
binlog_format='row'
expire_logs_days=1
max_binlog_size = 10M <==加入這行

第一行加入 skip-log-bin [1] ,其它參數保留不要註解,以免出現其它的錯誤。

錯誤訊息

以上我並沒有測試容量是否就不會長大,接下來就前景啟動試試看,結果發現一直跳出大量的這個log,我感覺我發現原因了:

[ERROR] Incorrect definition of table mysql.column_stats: expected column 'hist_type' at position 9 to have type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB'), found type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB').
[ERROR] Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255).

上網查了很多解決,全部沒效,例如加入環境參數[2]:

    environment:
    ....
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_INITDB_SKIP_TZINFO=1

沒效。

例如執行更新指令 docker-compose exec mariadb mysql_upgrade -uroot -ppassword 得到錯誤[3]

OCI runtime exec failed: exec failed: unable to start container process: exec: "mysql_upgrade": executable file not found in $PATH: unknown

沒效

解決

後來仔細看了錯誤,自己試著修改欄位的格式就解決了

進到資料庫下指令:

ALTER TABLE `column_stats` CHANGE `hist_type` `hist_type` ENUM('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL;

ALTER TABLE `column_stats` CHANGE `histogram` `histogram` LONGBLOB NULL DEFAULT NULL;

結果後面才發現有人的解法和我一樣[4],呵呵。

 

參考資料

[1] https://dba.stackexchange.com/questions/72770/disable-mysql-binary-logging-with-log-bin-variable

[2] https://github.com/docker-library/docs/issues/2164

[3] https://techoverflow.net/2022/06/07/how-to-fix-docker-mariadb-correct-definition-of-table-mysql-column_stats-expected-column-hist_type-at-position-9/

[4] https://github.com/wallabag/wallabag/issues/6572

END

你可能感興趣的文章

[MySQL/Mariadb] console 將查詢結果輸出到檔案 在mysql 的console中該如何將查詢結果輸出到檔案?

[Mysql] 使用索引來加速搜尋 只要是常常用到搜索條件的欄位,就應該把它設成索引鍵,有無設定的速度差可能會好幾倍

[Mysql/MariaDB] 清除及設定 MySQL 的死連接 mysql 伺服器若有太多的連接,無疑的會耗用非常多的資源,若資源耗盡會影響新的連線,勢必要做一些調整

[MySQL] FIND_IN_SET函數,把多筆條件判斷弄成字串 SQL 我們如果要查找某個欄位是否為某個值的時候,如果要判斷的條件很多,可以用這個函數

[Mysql/Mariadb] GROUP_CONCAT 函數 MySQL 中和 group by 一起用的函式,如果我們要算數值的總和或平均,可以使用 sum() 或 avg() 。但是我們如果要在 group by 中把字串「黏起來」,不是使用 concat(

[Mysql/Mariadb] 查看使用狀態,抓出可疑慢查詢SQL 當Mysql 的負載loading飆高時,除了重新啟動外,如果想對症下藥,那該怎麼處理?

隨機好文

[札記] 2016.7~12月札記 札記,只是札記

UTF8中文字/全形一覽 快速查詢urf-8的中文字,共計13246中文字(5401常用字+7652罕用字+日文或編號),292全形符號,27半形符號。

[bc] linux 的計算機 bc 設定小數位數、計算π、次方根 linux 的計算機 bc 設定小數位數、計算π、次方根

UTF-8的網頁但IE8一片空白 UTF8編碼的網頁在Firefox 正常顯示、但IE8 就是空白,IE8編碼設定是「自動偵測」可是自動偵測到的是 big5...

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?