MariaDB не запускается с общим ресурсом CIFS в качестве datadir

У меня довольно специфическая проблема с MariaDB на Ubuntu Server 18.04 при использовании общего ресурса CIFS в качестве каталога данных.

Настройка представляет собой файловый сервер, расположенный по адресу 192.168.4.10, и мой сервер базы данных MariaDB по адресу 192.168.4.8. Теперь я хочу хранить "горячие данные" сервера базы данных на моем файловом сервере. Для этого я создал на своем файловом сервере общий ресурс SMB/CIFS, который сервер базы данных должен использовать для хранения своих данных (по умолчанию расположен в/var/lib/mysql) на файловом сервере (задача была предоставлена ​​для использования нашим лектором, поэтому, пожалуйста, не обсуждайте, если такая установка имеет смысл для производственной базы данных).

Я использую AutoFS для монтирования общего ресурса CIFS. Конфиги выглядят так

/etc/auto.master

[...]
/var/autofs/net        /etc/auto.db-slave --timeout 300 --mode 0777

/etc/auto.db-slave

db-slave        -fstype=cifs,username=smbmysql,password=***,rw,vers=3.0,uid=mysql,gid=mysql,forceuid,forcegid,dir_mode=0777,file_mode=0777,hard,intr,noperm        ://192.168.4.10/db_slave

Я также создал (мягкую) символическую ссылку из /var/lib/mysql -> /var/autofs/net/db-slave

Акция работает нормально, я могу cd в папку, и когда я переключаюсь на пользователя mysql с sudo -su mysql Я также могу редактировать / создавать / удалять файлы и каталоги, и изменения правильно отражаются на моем файловом сервере.

Однако, когда я снова пытаюсь запустить службу MariaDB с помощью sudo systemctl start mariadb он не запускается, и файл журнала выглядит так:

Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] /usr/sbin/mysqld (mysqld 10.4.10-MariaDB-1:10.4.10+maria~bionic-log) starting as process 1291 ...
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Using Linux native AIO
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Uses event mutexes
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Number of pools: 1
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Using SSE2 crc32 instructions
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Completed initialization of buffer pool
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] InnoDB: Cannot read first page of './ibdata1' I/O error
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] InnoDB: Plugin initialization aborted with error I/O error
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] InnoDB: Starting shutdown...
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] Plugin 'InnoDB' init function returned error.
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] Unknown/unsupported storage engine: InnoDB
Dec 11 11:01:12 vmpsateam04-08 mysqld[1291]: 2019-12-11 11:01:12 0 [ERROR] Aborting

Как видите, проблема заключается в том, что движок InnoDB не может читать ./ibdata1. Однако с файлом все в порядке, поскольку, когда я отключаю общий ресурс и копирую все файлы обратно с моего файлового сервера на/var/lib/mysql Служба MariaDB запускается нормально.

Как видите, я перепробовал все параметры маски доступа, которые смог найти в моей конфигурации AutoFS (поэтому есть все эти параметры режима, uid, gid и т.д.), но пока безрезультатно.

EDIT3: я сделал то, что предложил @danblack, и запустил strace -fe trace=%desc -o /tmp/mysqld.strace /usr/sbin/mysqldкак пользователь mysql. Вы можете найти полный файл на WeTransfer, надеюсь, кто-нибудь сможет во всем разобраться.

Критический фрагмент трассировки:

1625  openat(AT_FDCWD, "./ibdata1", O_RDWR|O_CLOEXEC) = 7
1625  fcntl(7, F_SETFL, O_RDONLY|O_DIRECT) = 0
1625  fcntl(7, F_SETLK, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = 0
1625  fstat(7, {st_mode=S_IFREG|0777, st_size=79691776, ...}) = 0
1625  pread64(7, 0x56003fa78000, 65536, 0) = -1 EINVAL (Invalid argument)

0 ответов

Другие вопросы по тегам