k8s部署mysql 8.0.26
k8s部署
创建nas
阿里云,文件存储。使用通用性NAS(容量最大10P)
创建k8s volume
阿里云 k8s,先创建存储卷,选择NAS,配置挂载点,配置挂载路径
然后创建存储声明,使用刚才创建的存储卷
创建prod
使用无状态模式。
镜像使用mysql/mysql-server
, Tag使用8.0.26
配置环境变量
1 | MYSQL_ROOT_PASSWORD |
配置启动参数
1 | ["--default-authentication-plugin=mysql_native_password"] |
使用挂载卷(挂载卷配置路径/var/lib/mysql),对应容器路径/var/lib/mysql
迁移
导出原来数据
可以使用export
导出,或者使用client工具导出.
由于原数据库使用阿里云RDS,不区分大小写。自己部署的区分大小写。
注意导出的数据库表名为小写,需要手动修改表名为大小。
导入,使用source
1 | # 原数据库名称为 weixin-database; 8.0开始不能使用-作为表名 |
账号
创建账号
1 | CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_user@1234; |
可以通过NAT外网访问,或者通过SLB配置公网访问
在k8s中,可以通过mysql.common:3306
访问
问题
大小写问题
在MySQL中,从版本 8.0.1 开始,引入了 lower_case_table_names
参数,该参数控制数据库对象名称的大小写敏感性。
默认情况下,lower_case_table_names
的值是 0,表示表名大小写敏感。在这种情况下,你需要确保在创建表和查询表时使用一致的大小写。
如果将 lower_case_table_names
设置为非零值,例如设置为 1,MySQL 将表名视为大小写不敏感。在这种情况下,不同大小写的表名将被视为相同的表名
1 | SHOW VARIABLES LIKE 'lower_case_table_names'; |
尝试通过调整配置项,调整lower_case_table_names,无法生效。
卸载、挂载nas数据
- 挂载nas数据。可以将nas数据,点击挂载ECS,添加挂账点,从而导出数据。同一个路径不能有多个挂载点
点击卸载,可以查看挂载点,然后卸载对应数据。
可以挂载到ECS,然后导出对应的磁盘数据。
kebuctl 相关操作
秘钥, 从k8s中导出密钥到ECS,就可以在ECS上,使用kubectl命令操作k8s
常用命令
1 | # 卸载weixin namespace所有prod |
查看正在运行的 Pod:
1
kubectl get pods
这会列出所有正在运行的 Pod。
查看 Pod 的详细信息:
1
kubectl describe pod <pod-name>
用实际的 Pod 名称替换
<pod-name>
。查看 Pod 内的容器:
1
kubectl get pods <pod-name> -o jsonpath='{.spec.containers[*].name}'
替换
<pod-name>
为你想要查看的 Pod 的名称。查看容器日志:
1
kubectl logs <pod-name> -c <container-name>
替换
<pod-name>
为 Pod 名称,<container-name>
为容器名称。
外网访问
通过NAT,配置DNAT条码,将外网IP 306端口映射 10.0.0.6 3306端口,实现外网访问。