LINUX.ORG.RU
решено ФорумAdmin

centos7 mariadb перенос базы в другой каталог

 


0

1

закончилось место на основном диске добавил новый стоит задача перенести базу mariadb в новый каталог. Все сделал по статье https://anton.logvinenko.site/ru/blog/perenos-mysql-baz-na-otdelnyiy-jestkiy-...

Все прекрасно стартонуло [root# systemctl status mariadb ● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Вс 2018-06-24 11:38:02 EEST; 37min ago Process: 4964 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) Process: 4930 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) Main PID: 4963 (mysqld_safe) CGroup: /system.slice/mariadb.service ├─4963 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─5136 /usr/libexec/mysqld --basedir=/usr --datadir=/statistic/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pi... июн 24 11:38:02 : Started MariaDB database server.

НО при подключении к базе ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Вопрос что делаю не так п.с если указать путь к сокету то заходит mysql -u root -pMyPassword --socket=/новый путь/mysql/mysql.sock

ПОМОГИТЕ !

Вопрос что делаю не так п.с если указать путь к сокету то заходит mysql -u root -pMyPassword --socket=/новый путь/mysql/mysql.sock

Что значит «/новый путь/mysql/mysql.sock»? Все утилиты настроены на то, что файл сокета находится по пути '/var/lib/mysql/mysql.sock'. Если ты хочешь перенести фалы mysql на отдельный диск, то файловая система этого диска должна быть смонтирована в /var/lib/mysql и соответственно файл сокета будет находиться по старому пути, т.е. в '/var/lib/mysql/mysql.sock'.

В инструкции собственно это и написано.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

решил это так Просто отредактируйте /etc/my.cnf Добавить следующие строки в my.cnf добавляю [client]

socket=/var/lib/mysql/mysql.sock

НО все равно я так и попробую база на новом месте а сокет на старом

dima_ikar
() автор топика
Ответ на: комментарий от dima_ikar

Что значит новое место и старое? Место должно быть одно.

Т.е. изначально у тебя была одна файловая система, один раздел, на котором были системные файлы Linux и файлы базы mysql, в том числе и сокет, допустим это /dev/sda3.

Затем ты подключил диск, допустим /dev/sdb и на нём создал раздел, допустим /dev/sdb1 и на нём файловую систему.

Остановил сервис mysql.

Далее ты смонтировал /dev/sdb1, допустим в /tmp/sdb1, далее скопировал все файлы из /var/lib/mysql в /tmp/sdb1:

cp -ar /var/lib/mysql/* /tmp/sdb1
потом можно удалить файлы из /var/lib/mysql/*

Теперь просто отмонируешь файловую систему из /tmp/sdb1 и монтируешь в /var/lib/mysql.

umount /tmp/sdb1
mount /dev/sdb1 /var/lib/mysql
Всё, файлы базы находятся на другом диске, другой файловой системе, но логически эта файловая система смонтирована в /var/lib/mysql и файлы доступны по прежнему пути, файлы сокекта, даже если они лежат в /var/lib/mysql, а не в /var/run/mysql так же доступны по старому пути, никаких дополнительных настроек делат не нужно!

Теперь просто нужно добавить в /etc/fstab строку с параметрами монтирования /dev/sdb1 в /var/lib/mysql.

Раздел /dev/sdb1 указан в примере, у тебя может быть другой.

Что ты сделал я не знаю. Но перенос части файловой системы linux на отдельный раздел (файловую систему) не должен вызывать проблем, если новая файловая система смонтирована в то место, где находились перемещённые файлы.

Теперь рассказывай что делал ты.

Ну либо переделай как описал я. Ествественно не удаляй базу, оставь копию.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

я не рассказываю и не спрашиваю как смонтировать раздел к примеру база лежала /var/lib/mysql/* стала лежать в /другая папка/mysql/* НО старый путь я убил (вот была ошибка) в my.cnf меняем путь к базе а сокет оставляем на старом месте и все

dima_ikar
() автор топика
Ответ на: комментарий от dima_ikar

НО старый путь я убил (вот была ошибка) в my.cnf меняем путь к базе а сокет оставляем на старом месте и все

Не только в этом ошибка. Ошибка в том, что написал, что делал вот по такой-то инструкции, а по факту, ты сделал совсем не по инструкции, а так, как захотелось твоей левой пятке, пути другие, удалил пути, а потом пришёл на форум и говоришь, что делал по инструкции, в которой всё собственно всё правильно, а у тебя ничего не работает.

Так что либо в следующий раз пиши как ты и что делаешь, а не говори что делал так, а на самом деле нет.

А лучше переделай всё на стандартный путь /var/lib/mysql, тебе нужно лишь смонтировать файловую новую систему в /var/lib/mysql и вернуть прежние настройки.

Просто суть в том, что если ты будешь обновлять систему, ставить обновления пакета mysql или mariadb, то при установке обновления твои изменённые настройки сбросятся на те, что указаны в пакете, т.е. /var/lib/mysql, да и другие пакеты, которые будут работать в связке с mysql тоже будут искать /var/lib/mysql и соответственно файл сокета по стандартному пути.

Так что ещё раз советую переделай всё обратно на /var/lib/mysql.

Ну и когда будешь создавать вопрос на форуме описывай что и как ты делал.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Ну вообще-то достаточно симлинка. Перенесли в другую директорию и сделали симлинк на нее. Очень простая процедура.

anc ★★★★★
()
Ответ на: комментарий от slowpony

Лениво искать, интересно в машке также?

anc ★★★★★
()
Ответ на: комментарий от slowpony

Проверил на тестовой машке на копейке7, все с полными обновлениями, пока работает.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.