Перенести папку на другой диск centos 7

Обновлено: 06.07.2024

Объём базы данных увеличивается, и со временем она исчерпывает пространство файловой системы. Кроме того, если ввод и вывод находится на одном разделе с остальной частью операционной системы, возможные конфликты доступа к устройствам ввода/вывода. RAID, сетевые блочные хранилища и другие устройства предоставляют избыточность данных и другие полезные функции. Если вы хотите добавить больше места и оптимизировать производительность, а также воспользоваться другими функциями хранения, это руководство поможет вам переместить каталог данных MySQL.

Требования

  • Сервер CentOS 7 (рекомендации по настройке сервера можно найти здесь).
  • Пользователь с доступом к sudo.
  • Предварительно установленный сервер MySQL (инструкции можно найти здесь).

В данном руководстве показано, как переместить данные в блочное хранилище, смонтированное в /mnt/volume-nyc1-01. Это поможет вам переместить каталог данных в новое место независимо от того, какое хранилище вы используете.

1: Перемещение каталога данных MySQL

Чтобы подготовиться к перемещению каталога данных MySQL, нужно уточнить его текущее местонахождение. Для этого откройте интерактивную сессию MySQL и укажите учётные данные администратора.

В командной строке MySQL запросите каталог данных:

Этот вывод подтверждает, что в данном случае MySQL использует каталог данных по умолчанию, /var/lib/mysql/. Этот каталог и нужно переместить. Чтобы закрыть командную строку MySQL, введите:

Чтобы обеспечить целостность данных, отключите MySQL, прежде чем вносить изменения в каталог данных:

sudo systemctl stop mysqld

Утилита systemctl не отображает результаты команд управления сервисами. Чтобы убедиться в том, что сервер MySQL отключен, используйте следующую команду:

sudo systemctl status mysqld

Последняя строка вывода должна сообщать:

. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Теперь, когда сервер MySQL не работает, скопируйте текущий каталог данных в новое место с помощью rsync. Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод.

Примечание: Убедитесь, что в названии каталога нет конечной косой черты (который система может добавить, если вы используете автодополнение). Если такой слеш есть, rsync будет сбрасывать содержимое каталога в точку монтирования, а не в каталог.

sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

После выполнения rsync переименуйте текущую папку, добавив расширение .bak. Оставьте расширение до тех пор, пока не убедитесь, что данные перемещены успешно. Это поможет не спутать файлы.

sudo mv /var/lib/mysql /var/lib/mysql.bak

2: Настройка нового каталога данных

MySQL предлагает несколько способов отмены значений конфигурации. По умолчанию каталог datadir настраивается в файле /etc/mysql/mysql.conf.d/mysqld.cnf. Откройте этот файл:

sudo vi /etc/my.cnf

Найдите строку datadir= и укажите в ней путь к новому каталогу данных. Также нужно указать путь к сокету. В данном случае настройки будут выглядеть так:

[mysqld] . . .
datadir=/mnt/volume-nyc1-01/mysql
socket=/mnt/volume-nyc1-01/mysql/mysql.sock
. . .

После этого нужно добавить настройки клиента mysql. Вставьте в конец файла следующие строки:

[client] port=3306
socket=/mnt/volume-nyc1-01/mysql/mysql.sock

Нажмите Escape и :wq!, чтобы закрыть и сохранить файл.

3: Запуск MySQL

Теперь нужно запустить MySQL и проверить, работают ли новые настройки:

sudo systemctl start mysqld
sudo systemctl status mysqld

Чтобы убедиться, что новый каталог данных работает, запустите командную строку MySQL:

Снова запросите каталог данных:

Теперь нужно убедиться в том, что база данных полностью функциональна. После проверки целостности данных вы можете удалить резервную копию каталога данных:

sudo rm -Rf /var/lib/mysql.bak

Заключение

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

В этом руководстве мы объясним, как использовать команду mv для перемещения файлов и каталогов.

Как использовать команду mv

Команда mv (сокращение от move) используется для переименования и перемещения файлов и каталогов из одного места в другое. Синтаксис команды mv следующий:

SOURCE может быть одним или несколькими файлами или каталогами, а DESTINATION может быть одним файлом или каталогом.

  • Когда в качестве SOURCE задано несколько файлов или каталогов, DESTINATION должен быть каталогом. В этом случае файлы SOURCE перемещаются в целевой каталог.
  • Если вы укажете один файл как SOURCE , а целью DESTINATION является существующий каталог, то файл будет перемещен в указанный каталог.
  • Если вы укажете один файл в качестве SOURCE и один файл в качестве цели DESTINATION вы переименуете файл .
  • Если SOURCE является каталогом, а DESTINATION не существует, SOURCE будет переименован в DESTINATION . В противном случае, если DESTINATION существует, он будет перемещен в каталог DESTINATION .

Например, чтобы переместить файл file1 из текущего рабочего каталога в каталог /tmp вы должны запустить:

Чтобы переименовать файл, вам необходимо указать имя файла назначения:

Синтаксис перемещения каталогов такой же, как и при перемещении файлов. В следующем примере, если каталог dir2 существует, команда переместит dir1 внутрь dir2 . Если dir2 не существует, dir1 будет переименован в dir2 :

Перемещение нескольких файлов и каталогов

Чтобы переместить несколько файлов и каталогов, укажите файлы, которые вы хотите переместить, в качестве источника. Например, чтобы переместить файлы file1 и file2 в каталог dir1 , введите:

Команда mv также позволяет использовать сопоставление с образцом. Например, чтобы переместить все файлы pdf из текущего каталога в каталог

/Documents , вы должны использовать:

Параметры команды mv

Команда mv принимает несколько параметров, которые влияют на поведение команды по умолчанию.

Если mv является псевдонимом, вывод будет выглядеть примерно так:

Если указаны конфликтующие варианты, последний имеет приоритет.

Запрашивать перед перезаписью

По умолчанию, если целевой файл существует, он будет перезаписан. Чтобы запросить подтверждение, используйте параметр -i :

Чтобы перезаписать файл типа y или Y

Принудительная перезапись

Если вы попытаетесь перезаписать файл, доступный только для чтения, команда mv спросит вас, хотите ли вы перезаписать файл:

Чтобы не получать подсказки, используйте параметры -f :

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

Не перезаписывать существующие файлы

Параметр -n указывает mv никогда не перезаписывать существующие файлы:

Если существует file1 приведенная выше команда ничего не сделает. В противном случае он переместит файл в каталог /tmp .

Резервное копирование файлов

Если целевой файл существует, вы можете создать его резервную копию, используя параметр -b :

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

Используйте команду ls, чтобы убедиться, что резервная копия была создана:

Подробный вывод

Выводы

Команда mv используется для перемещения и переименования файлов и каталогов.

Для получения дополнительных сведений о команде mv страницу руководства или введите в терминале man mv .

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Favorite

Добавить в избранное

Главное меню » Базы данных » База данных MySQL » Как переместить каталог данных MySQL на новое место в CentOS и Ubuntu

(1 оценок, среднее: 5,00 из 5)

Как переместить каталог данных MySQL на новое место в CentOS и Ubuntu

П о умолчанию база данных MySQL будет создана в каталоге /var/lib/mysql.

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

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

Чтобы изменить каталог MySQL, вы должны выполнить следующие три шага:

  1. Переместить файлы базы данных MySQL из /var/lib/mysql на другой раздел
  2. Изменить файл my.cnf на новый путь каталога
  3. Обновление параметров безопасности, чтобы отразить изменение каталога: На CentOS или RedHat, изменить настройки SELinux. В Ubuntu или Debian, изменить настройки AppArmor.

Это руководство объясняет подробности о том, как выполнить вышеуказанные три шага, чтобы переместить данные MySQL в другую папку.

Сделайте резервную копию текущей MySQL

Перед тем, как сделать что-нибудь, остановите базу данных MySQL и сделайте полную резервную копию базы данных.

По умолчанию в MySQL база данных будет в каталоге /var/lib/mysql. Скопируйте этот каталог MySQL в другое место в качестве резервного копирования.

Или, если вы предпочитаете, вы можете использовать mysqldump чтобы сделать резервную копию БД MySQL.

Перемещение MySQL каталога данных в другой раздел

В этом примере, мой корневой раздел /dev/sda1, который не имеет много места для каталога /var/lib/mysql по умолчанию. Но, у меня есть раздел /data на диске /dev/sdb1, который имеет много места.

Таким образом, я перемещу базу данных MySQL из раздела /в раздел /data.

Создайте следующий каталог и переместите данные из каталога /var/lib в /data/var/lib, как показано ниже.

Несколько моментов, для рассмотрения следующих вопросов:

  • Вы также можете переместить каталог MySQL в каталог /data/var/lib, а также создать символическую ссылку из /var/lib, указывающей на /data/var/lib. Но, в данном конкретном случае, я предпочитаю, простой перенос каталога без символической ссылки, чтобы избежать путаницы.
  • Если возможно, попробуйте использовать команду move, чтобы переместить каталог (вместо копии). При выполнении копии, контекст SELinux будут потерян, и вы должны вручную установить ее позже (как описано ниже). Но, когда вы перемещаете, соответствующий SELinux контекст для MySQL хранятся, и вам не придется беспокоиться об изменении его.

Измените файл my.cnf и запустите MySQL

В файле /etc/my.cnf, вам необходимо изменить параметр datadir и параметр socket, указать на новый каталог, как показано ниже.

И, наконец, перезапустите базу данных MySQL.

Если у вас параметр tmpdir уже определен в файле my.cnf, измените каталог для него тоже:

Контекст SELinux для MySQL

Как вы видите здесь, mysqld_db_t является SELinux тип контекста.

После перемещения каталога в новое место, вы должны увидеть точную SELinux в качестве предварительного шага.

Примечание: Если вы сделали копию каталога (вместо переноса), вы заметите, что он изменился. В этом случае, изменение контекста SELinux, как описано ниже.

Кроме того, вы увидите следующее в файле mysqld.log, когда базу данных MySQL не удастся запустить.

Установка SELinux для MySQL на CentOS / RedHat (Вариант 1)

С помощью команды chcon, вы можете изменить тип контекста SELinux в новом каталоге, как показано ниже.

В приведенной выше команде:

  • chcon это команда для изменения контекста SELinux
  • Опция -R будет рекурсивно изменить контекст для данного каталога и в вспомогательном каталоге.
  • Опция -t используется для указания типа контекста SELinux, который должен быть установлен. В этом примере, мы устанавливаем его тип mysqld_db_t.
  • /data является каталог, на котором будет выполняться эта команда.

Примечание: Начало изменения контекста из каталога верхнего уровня /data (а не из каталога MySQL), который будет включать в себя каталог MySQL и все подкаталоги и файлы.

Установка SELinux для MySQL на CentOS / RedHat (Вариант 2)

С помощью команды restorecon, вы можете восстановить контекст SELinux к нужному типу. Но, в этом случае, вы должны сообщить SELinux, что является правильным контекстом путем добавления типа mysqld_db_t к карте контекста SELinux.

Чтобы добавить тип SELinux в контексте карты, используйте команду semanage. Установите пакет policycoreutils-python, который содержит команду semanage.

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

В приведенной выше команде, мы добавляем mysqld_db_t к контекстной карте для каталога /data и всех подкаталогов и файлов в нем.

И, наконец, используйте команду restorecon, которая восстановит соответствующий контекст SELinux в новый каталог /data.

Убедитесь в том, что новый каталог /data переместился и подпапки mysql имеют корректный контекст SELinux.

Примечание: Вы можете также использовать опцию -e вместе fcontext. Это сделает метку контекста для /data и его подкаталогов в качестве контекста /var/lib/mysql.

AppArmor для установки MySQL на Ubuntu / Debian

После перемещения каталога данных MySQL на новое место, если вы не выполните следующие действия, на Ubuntu, вы получите эту ошибку при запуске базы данных:

Изменение файла usr.sbin.mysqld, как показано ниже, и добавьте следующие две строки. Не забудьте запятую в конце строки, которая требуется.

Затем выполните следующую команду для повторной обработки нового конфигурационного файла AppArmor для MySQL, и перезапустите AppArmor.

Примечание: В качестве альтернативы, вы можете также добавить псевдоним в файле псевдонима AppArmor, как показано ниже. Опять же, не забудьте запятую в конце этого псевдонима.

Параметр сокета клиента MySQL

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

Если это произойдет, передайте параметр -socket клиенту MySQL, и укажите его в файле mysql.sock, который находится в новом каталоге.

Как переместить каталог данных MySQL на новое место в CentOS и Ubuntu

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Перенести пространство из / home, установленного по умолчанию в CentOS7, в корневой каталог /

hot3.jpg

Стандарты набора персонала Unicorn Enterprise Heavy для Python-инженеров 2019 >>>

1. Основные концепции

Cent0S 7 включает LVM2 (Диспетчер логических томов) по умолчанию и делит жесткий диск машины на две области sda1 и sda2. Раздел sda1 используется в качестве системного диска / загрузочного монтирования с небольшим объемом пространства; sda2 используется как физический том и полностью как группа логических томов VG (группа томов) centos, создайте три логических тома LV (логический том) root, home и swap в этой группе логических томов centos, которые монтируются в корневой каталог / и / home и swap соответственно. Файловая система XFS установлена ​​на двух разделах sda1 и sda2. Как файловая система по умолчанию RedHat, файловая система XFS также имеет свои соображения, став основной файловой системой после ext3 и ext4.

Взаимосвязь между несколькими концепциями: M физических жестких дисков HD или разделы на физических жестких дисках формируются вместе как группа логических томов VG и пул хранения, N логических томов LV создаются в группе томов VG, а файловые системы создаются в логическом томе LV. Например, xfs. Физические жесткие диски / разделы и логические тома имеют наименьшую базовую единицу адресации. Размер CentOS7 по умолчанию - 4 МБ. Оба они соответствуют друг другу, как ссылки или ссылки на переменные, но отношения между ними не всегда одинаковы, поскольку физический жесткий диск может измениться. Логический том настраивается автоматически. При создании групп томов и логических томов, как и при создании разделов, информация о томе VGDA (область дескриптора группы томов) записывается в начало диска для идентификации. Преимущество логического тома заключается в том, что он защищает базовую физическую поддержку, его можно свободно расширять и изменять, не беспокоясь об ограничениях физического пространства жесткого диска или раздела, и не будет никаких проблем, таких как резервное копирование / расширение раздела и переформатирование жесткого диска для увеличения размера раздела.


HD / partition - через pvcreate-> PV - через vgcreate (vgchange) / vgextend -> VG - через lvcreate / lvextend -> LV - через mkfs -> FS - через xfs_growfs и т. Д. -> df Диск вступает в силу

Но ключевым моментом является то, что / home занимает слишком много места, когда CentOS 7 установлен по умолчанию, а корневой каталог намного меньше (всего 50 ГБ).OpenStackУстановка и хранение находятся в корневом каталоге. Загрузка нескольких изображений может исчерпать пространство вашего корневого каталога. В отличие от других файловых систем, таких как ext3, ext4 или reiserfs, есть команды (resize2fs, resize_reiserfs), которые напрямую поддерживают уменьшение размера файловой системы., Установленный по умолчанию xfs поддерживает увеличение расширения, но не поддерживает сокращение пространства.!

2. Обзор шагов

Итак, следующие шаги примерно: (Прямой вход пользователя root в систему, этот компьютер или ssh root в прошлом, если вы используете текущий обычный пользователь, столкнетесь с ненужными проблемами)

1. Создайте резервную копию файлов / home / user, если там ничего нет, игнорируйте этот шаг (почему вам нужно удалить этот / home и напрямую использовать root? Или оставить его, имеет смысл существовать, кроме того, не используйте просто root в производственной среде)

2. umount / home uninstall и lvremove удалить домашний логический том, освободить его пространство, vgdisplay просмотреть доступное пространство в группе томов

3. lvcreate создает новый домашний том, а mkfs создает на нем файловую систему xfs (выделить и смонтировать в / home - нет необходимости изменять / etc / fstab, просто перезапустите) скопируйте предыдущее содержимое.

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

4. Освободите предыдущий домашний логический том и выделите оставшееся пространство после нового домашнего тома, lvextend выделяет его корневому тому и используйте команду xfs_growfs для расширения пространства своей файловой системы.

Читайте также: