MySQL PXC集群修改表名大小写不敏感

2021年3月8日 679点热度 0人点赞 0条评论

新搭建的一套PXC集群,采用了Percona的最新版本,如下所示:

[root@mysqldb2:0 /mysql/soft/bak]# mysql --version
mysql  Ver 8.0.21-12.1 for Linux on x86_64 (Percona XtraDB Cluster (GPL), Release rel12, Revision 4d973e2, WSREP version 26.4.3)

需要修改系统配置为大小写不敏感,因此需要修改配置参数lower_case_table_names=1。
修改以后需要重启集群,这里涉及到一系列问题的发生,具体如下所述。
只在节点1修改后立即启动失败,需要3个节点都改完,都关闭,再次启动才可以。
如下可见,最后关闭的节点是mysqldb3:

[root@mysqldb1:1 ~]# cat /mysql/pxc/data/grastate.dat
# GALERA saved state
version: 2.1
uuid:    00000000-0000-0000-0000-000000000000
seqno:   -1
safe_to_bootstrap: 0
[root@mysqldb2:1 ~]# cat /mysql/pxc/data/grastate.dat
# GALERA saved state
version: 2.1
uuid:    edadf0b1-7d97-11eb-992e-0b86e44731ea
seqno:   15
safe_to_bootstrap: 0
[root@mysqldb3:1 ~]# cat /mysql/pxc/data/grastate.dat
# GALERA saved state
version: 2.1
uuid:    edadf0b1-7d97-11eb-992e-0b86e44731ea
seqno:   16
safe_to_bootstrap: 1

但此时无论在哪个节点都无法正常启动,在最后关闭的节点safe_to_bootstrap也失败,日志如下:

2021-03-08T06:30:19.446822Z 0 [Warning] [MY-013245] [Server] The SSL library function CRYPTO_set_mem_functions failed. This is typically caused by the SSL library al
ready being used. As a result the SSL memory allocation will not be instrumented.
2021-03-08T06:30:19.451833Z 3 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-03-08T06:30:29.697644Z 3 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-03-08T06:30:29.705173Z 3 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
2021-03-08T06:30:29.706002Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2021-03-08T06:30:29.707342Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-03-08T06:30:29.707378Z 0 [Note] [MY-000000] [WSREP] Initiating SST cancellation
,,,
2021-03-08T06:32:52.203097Z 0 [Warning] [MY-000000] [Galera] Fail to access the file (/mysql/pxc/data//gvwstate.dat) error (No such file or directory). It is possible if node is booting for first time or re-booting after a graceful shutdown

如上log可见是因为Different lower_case_table_names settings导致数据字典初始化失败,难道是因为已经新建了一个test库?还是需要从头初始化数据库?
lower_case_table_names改回原来的设置0,启动数据库,删掉test库,再改为1,还是一样的错误,看来只能从头初始化数据库才可以了。
重新初始化数据库的方法很简单,就是删掉数据库文件,这一点不像其他大型数据库那么复杂。
然后复制SSL证书、密钥到其他节点:

[root@mysqldb3:2 ~]# scp /mysql/pxc/data/*.pem mysqldb1:/mysql/pxc/data
[root@mysqldb3:2 ~]# scp /mysql/pxc/data/*.pem mysqldb2:/mysql/pxc/data

改root密码,同前
然后stop-start
systemctl stop mysql@bootstrap
systemctl start mysql@bootstrap 【注:此时如果如此启动systemctl start mysql,则失败,只能bootstrap方式启动,原因是其他节点尚未加入】
此时启动其他节点成功。

注:如下配置项可以正常修改,停启库生效。
character-set-server = utf8
max_allowed_packet = 200M

liking

我是雪人

文章评论