GreatSQL社区

搜索

[已解决] GreatSQL docker compose 启动不了

120 5 2024-12-4 14:33
error.log里的报错如下
2024-12-04T13:34:06.701974+08:00 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2024-12-04T13:34:06.702047+08:00 0 [ERROR] [MY-013236] [Server] The designated data directory /data/GreatSQL/ is unusable. You can remove all files that the server added to it.

我看了一下这个报错就是data/greatsql被占用了,但是cnf是基本是用的原版,而且宿主机没有到容器data/GreatSQL的映射(映射关系里前面的greatsql是宿主机上的文件夹)

docker compose如下
version: '3'
services:
  greatsql:
    image: dptech/greatsql:8.0.36-amd64
    container_name: greatsql
    network_mode: host
    restart: always
    privileged: true
    deploy:
      resources:
        limits:
          memory: 128M
    env_file:
      - ../../data/greatsql/config/greatsql.env
    ports:
      - "3306:3306"  # 将主机的 3306 端口映射到容器的 3306 端口
    volumes:
      - ../../data/greatsql/logs:/var/log
      - ../../data/greatsql/logs/error.log:/error.log
      - ../../data/greatsql/config/my.cnf:/etc/my.cnf
      - ../../data/greatsql/config/my.client.cnf:/etc/my.client.cnf
      - ../../data/greatsql/sql:/opt/sql
      - ../../data/greatsql/sql_update:/opt/sql_update
      - ../../data/greatsql/init:/docker-entrypoint-initdb.d/
      - ../../data/greatsql/sh/greatsql-init.sh:/greatsql-init.sh

cnf如下
[client]
socket    = /data/GreatSQL/mysql.sock

[mysql]
loose-skip-binary-as-hex
prompt = "(\\D)[\\u@GreatSQL][\\d]> "
no-auto-rehash

[mysqld]
user    = mysql
port    = 3306
server_id = 1
basedir = /usr/
datadir    = /data/GreatSQL
socket    = /data/GreatSQL/mysql.sock
pid-file = mysql.pid
character-set-server = UTF8MB4
skip_name_resolve = ON
default_time_zone = "+8:00"
bind_address = "0.0.0.0"
secure_file_priv = /data/GreatSQL
lower_case_table_names = 0
# Logs
log_timestamps = SYSTEM
log_error = error.log
log_error_verbosity = 3
slow_query_log = ON
log_slow_extra = ON
slow_query_log_file = slow.log

全部回复(5)
yejr 2024-12-4 16:28:14
这个报错信息就表示已有文件存在导致初始化失败,需要保证 datadir 一开始是完全空白的,可以试着先把映射关系去掉,或者改成其他路径

另外,请加下社区小助手微信或看下站内私信,有个问卷麻烦填下,感谢
Jnu2021 2024-12-4 17:00:58
yejr 发表于 2024-12-4 16:28
这个报错信息就表示已有文件存在导致初始化失败,需要保证 datadir 一开始是完全空白的,可以试着先把映射 ...

还有个疑问,官方镜像的默认配置cnf里的error.log的位置是在容器的根目录下第一层,怎么启动后就变成了data/GreatSQL下面了?slow.log也是
yejr 2024-12-4 17:59:38
Jnu2021 发表于 2024-12-4 17:00
还有个疑问,官方镜像的默认配置cnf里的error.log的位置是在容器的根目录下第一层,怎么启动后就变成了da ...

GreatSQL的my.cnf中定义如下

  1. datadir    = /data/GreatSQL
  2. log_error = /data/GreatSQL/error.log
  3. slow_query_log_file = /data/GreatSQL/slow.log
复制代码

默认都是在 /data/GreatSQL 目录下的,不太理解你说的根目录下第一层是什么意思呢
Jnu2021 2024-12-4 21:18:31
yejr 发表于 2024-12-4 17:59
GreatSQL的my.cnf中定义如下

默认都是在 /data/GreatSQL 目录下的,不太理解你说的根目录下第一层是什么 ...

官方阿里云镜像里的cnf和你们官网上的都是 log_error = error.log 啊?
KAiTO 2024-12-5 09:57:48
Jnu2021 发表于 2024-12-4 21:18
官方阿里云镜像里的cnf和你们官网上的都是 log_error = error.log 啊?

是的,在docker中的my.cnf 配置都为 log_error = error.log
这里只是指定了文件名为 error.log,那么文件默认会在 datadir 目录下。
详见:
Error Log(错误日志) | GreatSQL用户手册


Jnu2021

10

主题

0

博客

31

贡献

注册会员

Rank: 2

积分
51

助人为乐(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-12-26 19:55 , Processed in 0.026725 second(s), 18 queries , Redis On.
快速回复 返回顶部 返回列表