GreatSQL社区

搜索

[待回复] greatsql的entrypoint相关问题

22 6 3 天前
本帖最后由 Jnu2021 于 2024-11-18 10:24 编辑

原来默认的是docker-compose.yml 里面没有设置entrypoint, 所以默认是greatsql-init.sh启动,可以启动并部分初始化;
但是docker-entrypoint-initdb.d里面的初始化文件并不能执行完全,自定义的数据库只初始化了部分表和数据。


现在改成手动指定entrypoint文件直接启动不了了?请问有什么问题呀,是用户和用户组的问题吗?我看用户和用户组里没有mysql
启动的start.sh
chown mysql:mysql /etc/my.cnf
exec /greatsql-init.sh mysqld(这里不需要改成greatsql吧?)



用的docker-compose文件:
version: '3'

services:  greatsql:   
image: greatsql
container_name: greatsql   
env_file:   
  - ../../data/greatsql/config/greatsql.env   
ports:      - "3306:3306"   
volumes:     
- ../../data/greatsql/config/my.cnf:/etc/my.cnf      
- ../../data/greatsql/config/my.client.cnf:/etc/my.client.cnf     
- ../../data/greatsql/init:/docker-entrypoint-initdb.d/      
- ../../data/greatsql/sh/start.sh:/start.sh     
entrypoint: "bash /start.sh"

docker-entrypoint-initdb.d 里面是初始化数据,命令行如下
bash-4.4# cd docker-entrypoint-initdb.d/
bash-4.4# ls
1_init_plugin.sql  2_init_user.sql  3_init_my_cnf.sh  init.sql


greatsql-init为原版,未进行任何改动:
下附greatsql-init.sh 里面的docker-entrypoint-initdb.d 相关部分命令
if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
(与这里的$1 = mysqlId有关吗?需要改成greatsql吗)
mkdir -p /docker-entrypoint-initdb.d
                ls /docker-entrypoint-initdb.d/ > /dev/null
                for f in /docker-entrypoint-initdb.d/*; do
                        process_init_file "$f" "${mysql[@]}"
done









全部回复(6)
yejr 3 天前
这是GreatSQL的Dockerfile:https://gitee.com/GreatSQL/Great ... GreatSQL/Dockerfile

在这里已经定义了 ENTRYPOINT,所以不能通过 compose 再自定义,可以先使用我们提供的 comopse 模版:https://gitee.com/GreatSQL/Great ... pose/mgr-3nodes.yml

先把基础功能都先跑通体验完,再进行自定义调整。
Jnu2021 前天 09:43
yejr 发表于 2024-11-18 10:44
这是GreatSQL的Dockerfile:https://gitee.com/GreatSQL/Great ... GreatSQL/Dockerfile

在这里已经定义了 ...

就是现在docker-entrypoint-initdb.d里执行的过程在哪里能看到啊?fn -500 greatsql 看不到,error.log也看不到, 是必须要引入automake.sh吗,主要是里面有很多配置不知道怎么定义,所以能不引入最好
Jnu2021 前天 09:43
yejr 发表于 2024-11-18 10:44
这是GreatSQL的Dockerfile:https://gitee.com/GreatSQL/Great ... GreatSQL/Dockerfile

在这里已经定义了 ...

还是有别的log能看到初始化过程中sql文件的初始化过程的啊?
yejr 前天 11:05
Jnu2021 发表于 2024-11-19 09:43
还是有别的log能看到初始化过程中sql文件的初始化过程的啊?

docker logs xx(容器名) 可以查看标准输出日志
或者进入容器查看里面的系统日志、GreatSQL日志

再次强调下,请先用我们提供的标准镜像和docker compose yaml模板把基本功能跑通后,先熟悉基础功能,再进行自定义调整修改,否则是一头雾水。
Jnu2021 前天 11:53
yejr 发表于 2024-11-19 11:05
docker logs xx(容器名) 可以查看标准输出日志
或者进入容器查看里面的系统日志、GreatSQL日志

这个日志我会看,error.log 如下,但是没有[entrypint]开头的日志,mysql是有的

2024-10-31T01:58:47.400269-00:00 1 [Note] [MY-012976] [InnoDB] Percona XtraDB (http://www.percona.com) 8.0.32-23 started; log sequence number 32593066
2024-10-31T01:58:47.401685-00:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-10-31T01:58:47.429647-00:00 1 [Note] [MY-011089] [Server] Data dictionary restarting version '80023'.
2024-10-31T01:58:47.699891-00:00 1 [Note] [MY-012357] [InnoDB] Reading DD tablespace files

docker logs xxx 是只有一行那个invalid

现在greatsql已经启动成功了,基础的命令我都熟悉了,现在的问题是没找到 [entrypint] : greatsql-init.sh 的执行日志,
导致我现在不知道自定义的初始话脚本为什么会部分执行失败?
需要引入automake.sh吗 或者在我不知道的地方有这部分日志?
yejr 前天 12:38
Jnu2021 发表于 2024-11-19 11:53
这个日志我会看,error.log 如下,但是没有[entrypint]开头的日志,mysql是有的

2024-10-31T01:58:47.40 ...

可以自己修改 greatsql-init.sh 脚本,加入日志记录功能,然后重新制作镜像
Jnu2021

3

主题

0

博客

11

贡献

新手上路

Rank: 1

积分
19

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-21 14:23 , Processed in 0.020457 second(s), 15 queries , Redis On.
快速回复 返回顶部 返回列表