ubuntu 上的 MariaDB 10.1.13 值得信赖:没有其他数据目录可能

Posted

技术标签:

【中文标题】ubuntu 上的 MariaDB 10.1.13 值得信赖:没有其他数据目录可能【英文标题】:MariaDB 10.1.13 on ubuntu trusty: no other datadir possible 【发布时间】:2016-07-18 06:12:36 【问题描述】:

在 Ubuntu Trusty Server 64 位上:

我的 MariaDB 10.1 使用了不同的数据目录

datadir=/mnt/SRVDATA/var/lib/mysql

昨天我收到了更新 10.1.13-MariaDB-1~trusty 来自

deb http://mirror.netcologne.de/mariadb/repo/10.1/ubuntu trusty main

而且 MariaDB 不会再启动了。

我重命名了 /etc/mysql、/usr/lib/mysql 和 /var/lib/mysql 并重新安装了 MariaDB 服务器和客户端。 我进行了 dpkg-reconfigure 并在 /var/lib/mysql 中获得了一个新的原始数据库。 有了它,我可以启动 MariaDB。

我使用所有权限再次将 /var/lib/mysql 复制到 /mnt/SRVDATA/var/lib/mysql,我将 my.cnf 更改为将 datadir 指向 /mnt/SRVDATA/var/lib/mysql 但 MariaDB 不会开始吧。

Apparmor 已关闭,其配置文件已拆除。

系统日志中的错误:

Mar 30 09:58:47 hg-bioinfo mysqld: 
Mar 30 09:58:47 hg-bioinfo mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
Mar 30 10:08:04 hg-bioinfo mysqld_safe: Starting mysqld daemon with databases from /mnt/SRVDATA/var/lib/mysql
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] /usr/sbin/mysqld (mysqld 10.1.13-MariaDB-1~trusty) starting as process 30831 ...
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Using mutexes to ref count buffer pool pages
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: The InnoDB memory heap is disabled
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Memory barrier is not used
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Compressed tables use zlib 1.2.8
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Using Linux native AIO
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Using SSE crc32 instructions
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Initializing buffer pool, size = 256.0M
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Completed initialization of buffer pool
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [Note] InnoDB: Highest supported file format is Barracuda.
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [ERROR] InnoDB: Tried to read 512 bytes at offset 512. Was only able to read 0.
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 7fe86f43d7c0  InnoDB: Operating system error number 22 in a file operation.
Mar 30 10:08:04 hg-bioinfo mysqld: InnoDB: Error number 22 means 'Invalid argument'.
Mar 30 10:08:04 hg-bioinfo mysqld: InnoDB: Some operating system error numbers are described at
Mar 30 10:08:04 hg-bioinfo mysqld: InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html
Mar 30 10:08:04 hg-bioinfo mysqld:  InnoDB: Operation read to file /home/buildbot/buildbot/build/mariadb-10.1.13/storage/xtradb/os/os0file.cc and at line 3158
Mar 30 10:08:04 hg-bioinfo mysqld: 2016-03-30 10:08:04 140636275857344 [ERROR] InnoDB: File (unknown): 'read' returned OS error 222. Cannot continue operation
Mar 30 10:08:04 hg-bioinfo mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
Mar 30 10:09:05 hg-bioinfo /etc/init.d/mysql[31401]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Mar 30 10:09:05 hg-bioinfo /etc/init.d/mysql[31401]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
Mar 30 10:09:05 hg-bioinfo /etc/init.d/mysql[31401]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")'
Mar 30 10:09:05 hg-bioinfo /etc/init.d/mysql[31401]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

非常感谢任何提示!

最好的问候

【问题讨论】:

【参考方案1】:

在#maria 的 FreeNode 上与 Montywi 进行了愉快的交谈后发现,这是 10.1.13 版本中引入的一个新错误。

它与配置有关:

innodb_flush_method=O_DIRECT

与块大小 512 的文件系统上的 datadir 结合使用(我的是在 RAID 上)

目前的解决方法是:

innodb_flush_method=O_DSYNC

这个错误现在正在修复中,很快就会在 10.1.14 版本中提供,所以 Montywi。

谢谢大家!

【讨论】:

以上是关于ubuntu 上的 MariaDB 10.1.13 值得信赖:没有其他数据目录可能的主要内容,如果未能解决你的问题,请参考以下文章

更换MariaDB数据库

如何使用 phpmyadmin 中 10.1.13-MariaDB 中的过程使用 where 子句获取一行

多台主机上的 Docker(Windows 和 Ubuntu)

如何在Ubuntu 14.04 LTS上安装MariaDB

Install Mariadb in Ubuntu 16.04 LTS

ubuntu mysql(mariadb)