使用Alpine Linux做基础镜像备份mysql8.0+数据库
  TEZNKK3IfmPf 2023年11月14日 73 0

说明

本篇文章仅是基于 k8s cronjob备份mysql8.0+数据库,使用 Alpine Linux 作为基础镜像时遇到的问题做下简单的排坑,没有涉及到具体的部署细节,后面有时间再补上。

镜像打包

## 最新镜像
docker build -t  registry.cn-shanghai.aliyuncs.com/test/mysql-backup:202302211550 .

定时执行

基于k8s crontabjob 运行形式,每天凌晨12点整开始运行。

解决的坑

MySQL 8: caching_sha2_password not supported

详细报错如下:

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: Error loading shared library /usr/lib/mysql/plugin/caching_sha2_password.so: No such file or directory

我基础镜像使用的是 Alpine linux镜像,仅包含 MariaDB 版本的 mysql-client,并且他们不打算很快支持 sha2,待备份 mysql 数据库均是8.0+版本以上。

这里提供几种方法供参考,我使用的 方法四

方法一:从 mysql 8 手动编译 mysql-client

这种方法太费劲,对于想使用 Alpine Linux 作为build镜像的基础镜像来说,更费劲一些,算是个思路吧。

方法二:切换到 debian 作为该镜像的基础镜像

如果能容忍build后镜像的大小,这种方式完全是可行的,当然你也可以选择使用 CentOS 或 Ubuntu 作为基础镜像。

方法三:更改数据库配置

大家使用的mysql可能部署在不同的系统,可能是windows也可能是Linux

方法四:安装扩展包

## Alpine:3.8+
apk add --no-cache mariadb-connector-c-dev

这会将缺少的 caching_sha2_password.so库添加到 /usr/lib/mariadb/plugin/caching_sha2_password.so中。

Max retries exceeded with url

详细报错如下:

requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘xxx’, port=443): Max retries exceeded with url

这边采用的措施:

## 增加重试连接次数
requests.adapters.DEFAULT_RETRIES = 5
## 关闭多余的连接
s = requests.session()
s.keep_alive = False
## 增加休眠时间
time.sleep(3)
## 及时关闭连接和证书认证
res = requests.post(url, headers=headers, data = json.dumps(post_data),verify=False)
res.close()
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
TEZNKK3IfmPf