Автор Тема: [решено] Как перенести файлы баз данных MySQL в другую директорию?  (Прочитано 2838 раз)

Оффлайн Юра Римский

  • Участник
  • *
  • Сообщений: 138
Использую Simply Linux 7.0.5 со стандартным репозиторием P7.

Задача: перенести файлы баз данных MySQL из стандартной директории /var/lib/mysql/
в мою собственную /work/server/databases/mysql/.

Делаю:
1. Копирую файлы баз данных:
cp -pR /var/lib/mysql/db/* /work/server/databases/mysql
2. Ставлю владельца:
chown --verbose --recursive mysql:mysql /work/server/databases/mysql/
3. Редактирую /var/lib/mysql/my.cnf
Было:
chroot=/var/lib/mysql
datadir=/db
Стало:
chroot=/var/lib/mysql
datadir=/../../../work/server/databases/mysql

4 Запускаю: service mysqld start
Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details.
systemctl status mysqld.service
mysqld.service - LSB: Start the MySQL database server
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: failed (Result: resources) since Вт 2016-04-12 17:44:21 MSK; 7s ago
  Process: 1744 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=1/FAILURE)
  Process: 2109 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
 Main PID: 1141
   CGroup: name=systemd:/system/mysqld.service

апр 12 17:44:21 comp.localdomain mysqld[2109]: and the manual section that describes problems on your OS.
апр 12 17:44:21 comp.localdomain mysqld[2109]: Another information source is the MySQL email archive.
апр 12 17:44:21 comp.localdomain mysqld[2109]: Please check all of the above before mailing us!
апр 12 17:44:21 comp.localdomain mysqld[2109]: And if you do mail us, you MUST use the /usr/bin/mysqlbug script!
апр 12 17:44:21 comp.localdomain mysqld[2109]: Adjusting environment for mysqld: [ DONE ]
апр 12 17:44:21 comp.localdomain mysqld[2109]: Starting mysqld service: [ DONE ]
апр 12 17:44:21 comp.localdomain systemd[1]: PID file /var/lib/mysql/mysqld.pid not readable (yet?) after start.
апр 12 17:44:21 comp.localdomain systemd[1]: mysqld.service never wrote its PID file. Failing.
апр 12 17:44:21 comp.localdomain systemd[1]: Failed to start LSB: Start the MySQL database server.
апр 12 17:44:21 comp.localdomain systemd[1]: Unit mysqld.service entered failed state

var/log/mysql:
2016-Apr-12 17:44:21 :: startup
160412 17:44:21 [Note] /usr/sbin/mysqld (mysqld 5.5.43-alt0.M70P.1) starting as process 2424 ...
160412 17:44:21 [Warning] Can't create test file /../../../work/server/databases/mysql/happiness.lower-test
160412 17:44:21 [Warning] Can't create test file /../../../work/server/databases/mysql/happiness.lower-test
160412 17:44:21 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
160412 17:44:21 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
160412 17:44:21 [Note] Server socket created on IP: '0.0.0.0'.
/usr/sbin/mysqld: Can't change dir to '/../../../work/server/databases/mysql/' (Errcode: 2)
160412 17:44:21 [ERROR] Aborting

160412 17:44:21 [Note] /usr/sbin/mysqld: Shutdown complete

2016-Apr-12 17:44:21 :: execution failed
2016-Apr-12 17:44:21 :: shutdown

Владельцем нового пути является пользователь mysql. Не понимаю, в чём проблема.
« Последнее редактирование: 12.04.2016 19:04:26 от Юра Римский »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
PID file /var/lib/mysql/mysqld.pid not readable (yet?) after start. ?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
3. Редактирую /var/lib/mysql/my.cnf
Было:
chroot=/var/lib/mysql
datadir=/db
Стало:
chroot=/var/lib/mysql
datadir=/../../../work/server/databases/mysql
Он на то и chroot, чтобы из него выбраться было трудно. Такой datadir внутри /var/lib/mysql не существует.

Оффлайн Юра Римский

  • Участник
  • *
  • Сообщений: 138
О, получилось. Нужно было закомментировать или удалить chroot и прописать полные пути к файлам и папкам:

Было:
[mysqld]
chroot=/var/lib/mysql
datadir=/db
pid-file=/mysqld.pid
...

Стало:
[mysqld]
#chroot=/var/lib/mysql
datadir=/work/server/databases/mysql/db
pid-file=/var/lib/mysql/mysqld.pid
...

Теперь всё отлично работает. Спасибо.