Перемещение MySQL датадира на машину разработчика - PullRequest
0 голосов
/ 01 апреля 2020

Операционная система: Ubuntu 18.04
MySQL версия: версия 8.0.19 для Linux на x86_64 (MySQL Сервер совместной работы - GPL)

Моя система настроена так, что Ubuntu работает на 128 ГБ SSD, с отдельным 1 ТБ SSD для хранения. Эта система является двойной загрузкой с Windows 10 Pro и Ubuntu 18.04. Накопитель отформатирован в NTFS.

Я бы хотел переместить каталог данных MySQL на накопитель, потому что диск моей ОС недостаточно велик. Я следовал учебному пособию по этому URL: https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16-04

Я получил «Шаг 4 - Перезапуск MySQL» в учебном пособии. До этого момента я следовал за всем до Т, без пропущенных запятых, косой черты и т. Д. c. Все сделано точно так, как описано (я проверял, чтобы убедиться, что это верно много раз)

Когда я ввожу команду терминала

sudo systemctl start mysql

, я получаю следующий вывод

Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

После этого вывода я ввожу следующую команду в терминал

systemctl status mysql.service

и получаю следующий вывод

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2020-03-31 22:36:46 CDT; 38s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 7368 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 7316 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 7368 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"
    Error: 13 (Permission denied)

Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.436713Z 0 [Warning] [MY-010091] [Server] Can't create test file /media/user/storage/mysql_datadir/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.436796Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 7368
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.439912Z 0 [Warning] [MY-010091] [Server] Can't create test file /media/user/storage/mysql_datadir/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.439923Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /media/user/storage/mysql_datadir/mysql/ is case insensitive
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.439961Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/media/user/storage/mysql_datadir/mysql/' (OS errno: 13 - Permission denied)
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.440049Z 0 [ERROR] [MY-010119] [Server] Aborting
Mar 31 22:36:46 user-desktop mysqld[7368]: 2020-04-01T03:36:46.440146Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
Mar 31 22:36:46 user-desktop systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Mar 31 22:36:46 user-desktop systemd[1]: mysql.service: Failed with result 'exit-code'.
Mar 31 22:36:46 user-desktop systemd[1]: Failed to start MySQL Community Server.

Видя, что это была ошибка прав доступа (которая должна иметь избегать использования тегов -av при копировании исходного каталога на новый диск) Я ввел следующую команду, чтобы открыть права доступа ко всему диску.

sudo chmod a+rwx /media/user/storage/

для проверки разрешений, которые я ввожу

ls -ls /media/user/storage/mysql_datadir

с выводом

total 12
12 drwxrwxrwx 1 root root 12288 Mar 31 02:45 mysql

Я также убедился, что полный путь к файлу для нового каталога данных строчные, чтобы избежать конфликта между двумя файловыми системами.

Я все еще не могу запустить MySQL. Буду признателен за любую помощь. Заранее спасибо.

Редактировать:

namei -mo /media/user/storage/mysql_datadir


f: /media/user/storage/mysql_datadir
 drwxr-xr-x root root /
 drwxr-xr-x root root media
 drwxr-x--- root root user
 drwxrwxrwx root root storage
 drwxrwxrwx root root mysql_datadir

1 Ответ

1 голос
/ 01 апреля 2020

Судя по вашему сообщению, у вас возникают проблемы с правами доступа, и владелец "каталога данных" всегда должен быть mysql.

ОСТАНОВИТЬ службу mysql, если она работает.

Рассмотрим пример ниже: my.cnf выглядит:

#
# Original path change to avoid space issue on server
#
datadir=/var/lib/mysql

Теперь вы измените этот datadir в вашем файле my.cnf следующим образом:

#
# Original path change to avoid space issue on server
#
#datadir=/var/lib/mysql
datadir=/media/user/storage/mysql_datadir

После этого проверьте разрешение:

cd / media / user / storage / mysql_datadir

ls -al

вывод:

drwxr-x - x 40 mysql mysql 4096 27 марта 00:01 mysql

Если это не вывод, выполните следующую команду:

chmod -Rf 0751 / media / user / storage / mysql_datadir

chown - Rf mysql: mysql / media / user / storage / mysql_datadir

Наконец НАЧНИТЕ свой сервис mysql сейчас.

...