坑点:字符集不兼容
有台物理机部署了 postgres 数据库,现在要把这个数据库迁移至 k8s。
第一次迁移,我们首先关闭了数据库,把文件直接挪到了 k8s 上,配上对应的 pg 镜像。
测试时,服务正常运行了,但是没有办法提供数据服务,甚至连数据库也连接不上。
连接报错
zh_CN.UTF-8:initdb: error: locale “zh_CN.UTF-8“ requires unsupported encoding "en_CN.UTF-8"
我们没有深究,就感觉可能是数据库文件不兼容,不能直接暴力迁移文件。
第二次迁移,我们使用 pg_dumps 和 pg_restore 工具进行迁移。数据量有点大,等待迁移完成后,我们再次进行了测试。
连接报错
zh_CN.UTF-8:initdb: error: locale “zh_CN.UTF-8“ requires unsupported encoding "en_CN.UTF-8"
仍然报字符集不兼容的问题。这着实有点让人费解。
咨询了运维大佬后,给的建议是安装下依赖,即:
yum install -y langpacks-zh_CN
这种方式需要在编译镜像时安装,影响比较小。
后面又查询到一种方式,在编译镜像时,使用 localedef
指定编码并设置环境变量为 LANG 为 zh_CN.utf8:
FROM postgres
RUN localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8
ENV LANG zh_CN.utf8
但是用了这种方法,日志似乎会变成中文😂😂😂
👇👇👇
本文作者: Czasg
版权声明: 转载请注明出处哦~👮