Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Изменение директории баз MySQL

Практика



Большинству ИТ специалистов известен сервер БД MySQL. Большинство его использует. И все хорошо, если хватает места на жестком диске в разделе /var для хранения баз данных этого сервера и если администратора это место устраивает. Однако случаются моменты, когда необходимо изменить место расположения баз: не стало хватать места в этом разделе и купили второй жесткий диск, изначально так было задумано (например, системный диск небольшого размера), просто неудобно и т.д.

В этом топике я расскажу как изменить расположение директории нахождения БД сервера MySQL для некоторых ОС.


FreeBSD

Вариант 1.

Останавливаем MySQL:

# /usr/local/etc/rc.d/mysql-server stop

Редактируем файл /etc/rc.conf и вносим в него строчки:

mysql_datadir="/dir1/dir2"

Создаем нужную директорию и копируем в нее все, что лежит в директории по-умолчанию (/var/db/mysql):

# cd /dir1
# mkdir dir2
# cp -R /var/db/mysql/ /dir1/dir2
# chown -R mysql:mysql /dir1/dir2

Запускаем MySQL:

# /usr/local/etc/rc.d/mysql-server start

Все, MySQL берет данные из нужной нам директории.


Вариант 2.

Останавливаем MySQL:

# /usr/local/etc/mysql-server stop

Создаем нужную директорию, переносим все наши базы туда, удаляем директорию по-умолчанию и создаем сим-линк:

# cd /dir1
# mkdir dir2
# cd /var/db
# cp -R /var/db/mysql/ /dir1/dir2
# rm -r /var/db/mysql
# ln -s /dir1/dir2 /var/db/mysql
# chown -R mysql:mysql /dir1/dir2

Запускаем сервер обратно:

# /usr/local/etc/rc.d/mysql-server start

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


Debian (не Ubuntu!)

Вариант 1.

Останавливаем MySQL сервер.

# /etc/init.d/mysql stop

Редактируем файл /etc/mysql/my.cnf, создаем необходимую папку и копируем в нее текущие базы.

# cd /etc/mysql
# nano my.cnf
// меняем значение пути к БД - строчка datadir=
// например, на /dir1/dir2

# cd /dir1
# mkdir dir2
# cp -R /var/lib/mysql/ /dir1/dir2
# chown -R mysql:mysql /dir1/dir2

Старую директорию можно удалить после успешного старта сервера.

И запускаем сервер обратно.

# /etc/init.d/mysql start


Вариант 2.

Вариант 2 для Debian подобен варианту 2 для FreeBSD.

Останавливаем MySQL:

# /etc/init.d/mysql stop

Создаем нужную директорию, переносим все наши базы туда, удаляем директорию по-умолчанию и создаем сим-линк:

# cd /dir1
# mkdir dir2
# cd /var/lib
# cp -R /var/lib/mysql/ /dir1/dir2
# rm -r /var/lib/mysql
# ln -s /dir1/dir2 /var/lib/mysql
# chown -R mysql:mysql /dir1/dir2

Запускаем сервер обратно:

# /etc/init.d/mysql start

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


Ubuntu (-Server)

Варианты один в один как в Debian, но с дополнением.

Т.к. Ubuntu использует систему Apparmor, то ни первый, ни второй вариант сходу не прокатят - MySQL просто не стартанет. Поэтому, после проделывания необходимых действий по удобному для Вас варианту, до запуска MySQL сервера, нам необходимо внести записи в Apparmor.

Для этого отредактируйте файл /etc/apparmor.d/usr.sbin.mysqld

Вот так он должен примерно выглядить. Обратите внимание на добавленные строчки касательно директорий /dir1/dir2:

# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>

/usr/sbin/mysqld { 
#include <abstractions/base> 
#include <abstractions/nameservice> 
#include <abstractions/user-tmp> 
#include <abstractions/mysql> 
#include <abstractions/winbind>
  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,
  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/my.cnf r,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /dir1/dir2/ r,
  /dir1/dir2/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid w,
  /var/run/mysqld/mysqld.sock w,
  /sys/devices/system/cpu/ r,
}

Перезапускаем apparmor:

# /etc/init.d/apparmor restart

После редактирования этого файла уже можно запускать MySQL сервер.


CentOS/RedHat

Останавливаем MySQL:

# /etc/init.d/mysqld stop

Копируем текущие базы:

# cd /var/lib
# cp -R mysql /dir1/dir2
# chown -R mysql:mysql /dir1/dir2

Изменяем файл /etc/my.cnf

В этом файле находим опцию datadir и меняем ее на необходимый путь:

datadir = /dir1/dir2

Запускаем MySQL:

# /etc/init.d/mysqld start


Все, директория баз данных изменена.

 

Актуально для: MySQL на Debian (Lenny, Squeeze), Ubuntu, CentOS/RHEL, FreeBSD

создано: 2017-05-09
обновлено: 2021-03-13
132680



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

MySql (Maria DB)

Термины: MySql (Maria DB)