kubernetes mysql-StatefulSet报错处理

我们使用网上mysql-StatefulSet集群教程时候mysql-1启动错误,init-error。

第一次尝试解决:我从官网上下载yaml部署依然报错。

第二次尝试解决:网上换各种版本的yaml部署依旧报错。

第三次尝试解决:自己手动加mysql集群密码,依旧报密码错误之类的问题。

第四次尝试解决:不用动态PVC模式,手动创建pv。依旧报错

第五次尝试解决:删除动态pvc和sc  nfs-client-provisioner 等等,使用网上n多版本的依旧报错。

第六次尝试解决:更换xtrabackup image,依旧报错

第n次尝试解决:心态早崩溃了,尼玛官网给的yaml都不行。让我怎么弄啊。

第n+1次尝试解决:手动创建xtrabackup pod,进去一探究竟。终于水落石出。

 

查看报错内容如下:

[root@master mysql]# kubolor logs -f mysql-1 -c clone-mysql
+ [[ -d /var/lib/mysql/mysql ]]
++ hostname
+ [[ mysql-1 =~ -([0-9]+)$ ]]
+ ordinal=1
+ [[ 1 -eq 0 ]]
+ ncat --recv-only mysql-0.mysql 3307
+ xbstream -x -C /var/lib/mysql
+ xtrabackup --prepare --target-dir=/var/lib/mysql
xtrabackup version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)
xtrabackup: cd to /var/lib/mysql
xtrabackup: Error: cannot open ./xtrabackup_checkpoints
xtrabackup: error: xtrabackup_read_metadata()
xtrabackup: This target seems not to have correct metadata...
InnoDB: Number of pools: 1
InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
xtrabackup: Warning: cannot open ./xtrabackup_logfile. will try to find.
InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
  xtrabackup: Fatal error: cannot find ./xtrabackup_logfile.
xtrabackup: Error: xtrabackup_init_temp_log() failed.

 查看各种资料,这个报错是因为/var/lib/mysql没有文件。所以恢复失败。有了原因就知道怎么处理了,先保留一下想法,你们留言发挥一下怎么解决吧。我真的快疯了。

 

 

2022年9月15日补充,过了这么久很快有要忘了。赶紧补习一下知识。其实就是官方文档没有指定datadir=/var/lib/mysql的问题。在configmap里写好就行了。下面是我的configmap.yaml配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql
  namespace: default
  labels:
    app: mysql
data:
  master.cnf: |
    # Apply this config only on the master.
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    log-bin
    datadir=/var/lib/mysql
    default-time_zone = '+8:00'
    max_connections=3000
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
  slave.cnf: |
    # Apply this config only on slave.
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    super-read-only
    datadir=/var/lib/mysql
    default-time_zone = '+8:00'
    max_connections=3000
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'

  

posted @ 2022-04-22 17:23  一起走过的路  阅读(676)  评论(1编辑  收藏  举报