Как перенести базу данных MySQL на другой диск на Raspberry Pi
По мере роста ваших баз данных MySQL на Raspberry Pi вы можете столкнуться с нехваткой места на microSD карте. Перенос данных на внешний диск (HDD или SSD) через USB или внутренний SSD через PCIe (на Raspberry Pi 5) — это отличное решение для увеличения производительности и доступного пространства. Это руководство покажет вам, как безопасно переместить каталог данных MySQL на внешний накопитель с минимальным временем простоя.
Как перенести базу данных MySQL на другой диск на Raspberry Pi
Описание/Введение: По мере роста ваших баз данных MySQL на Raspberry Pi вы можете столкнуться с нехваткой места на microSD карте. Перенос данных на внешний диск (HDD или SSD) через USB или внутренний SSD через PCIe (на Raspberry Pi 5) — это отличное решение для увеличения производительности и доступного пространства. Это руководство покажет вам, как безопасно переместить каталог данных MySQL на внешний накопитель с минимальным временем простоя.
В этом руководстве мы покажем вам, как перенести каталог данных MySQL на внешний диск на вашем Raspberry Pi.
Это полезно, если у вас заканчивается место на microSD карте или вы хотите повысить производительность, используя более быстрый SSD.
Мы проведем вас через процесс подготовки диска, остановки MySQL, перемещения данных и изменения конфигурации.
Оборудование
- Raspberry Pi (любая модель)
- Внешний USB-накопитель (HDD/SSD) или SSD через PCIe (для Pi 5)
- Блок питания достаточной мощности для питания накопителя
Подготовка нового диска
-
Первым шагом является подключение и форматирование вашего внешнего диска.
Подключите ваш внешний диск к Raspberry Pi. Определите имя устройства с помощью команды:
1
sudo lsblk
Обычно это
/dev/sda1
или/dev/sdb1
для USB-накопителей. - Создайте файловую систему на диске (если он новый или требует очистки). ВНИМАНИЕ: Это уничтожит все данные на диске!
1
sudo mkfs.ext4 /dev/sda1
- Создайте точку монтирования для нового диска. Мы создадим ее в
/mnt
, что является стандартным местом для временных монтирований.1
sudo mkdir /mnt/mysql_data
- Смонтируйте диск в созданную директорию:
1
sudo mount /dev/sda1 /mnt/mysql_data
Определение текущего местоположения данных MySQL
-
Прежде чем перемещать данные, нам нужно узнать, где они currently хранятся.
Мы можем проверить это, войдя в консоль MySQL и выполнив следующую команду:
1
sudo mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
-
Вы должны увидеть вывод, похожий на этот:
1 2 3 4 5
+---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+
Это стандартное расположение данных MySQL в Raspberry Pi OS.
Остановка MySQL и копирование данных
- Теперь нам нужно остановить службу MySQL, чтобы гарантировать целостность данных при копировании.
1
sudo systemctl stop mysql
-
Давайте скопируем все данные из старого местоположения в новое на внешнем диске.
Используем
rsync
для сохранения прав доступа и владельца файлов:1
sudo rsync -av /var/lib/mysql/ /mnt/mysql_data/
- После завершения копирования мы переименуем старую директорию (на всякий случай) и создадим новую пустую:
1 2
sudo mv /var/lib/mysql /var/lib/mysql.backup sudo mkdir /var/lib/mysql
Настройка автоматического монтирования диска
-
Чтобы диск монтировался автоматически при каждой загрузке, нам нужно добавить запись в
/etc/fstab
.Сначала узнаем UUID вашего диска, который более надежен, чем имя устройства:
1
sudo blkid
-
Найдите строку, соответствующую вашему диску (
/dev/sda1
), и скопируйте значение UUID.Откройте файл fstab для редактирования:
1
sudo nano /etc/fstab
-
Добавьте следующую строку в конец файла, заменив
YOUR_UUID
на фактический UUID:1
UUID=YOUR_UUID /var/lib/mysql ext4 defaults,noatime 0 2
(Примечание: Мы монтируем диск прямо в
/var/lib/mysql
, куда MySQL ожидает найти данные.)
Настройка прав доступа и запуск MySQL
-
Теперь нам нужно убедиться, что у пользователя
mysql
есть правильные права доступа к новой директории.Установите правильного владельца для смонтированного диска:
1
sudo chown -R mysql:mysql /var/lib/mysql
- Также установите правильные разрешения:
1
sudo chmod -R 755 /var/lib/mysql
-
Теперь мы можем перемонтировать наш диск в правильное расположение.
Сначала размонтируем временную точку монтирования:
1
sudo umount /mnt/mysql_data
- Теперь смонтируем все файловые системы из fstab, включая нашу новую:
1
sudo mount -a
- Проверим, что диск смонтирован правильно:
1
df -h /var/lib/mysql
Вы должны увидеть, что
/var/lib/mysql
теперь находится на вашем внешнем диске. - Наконец, мы можем запустить MySQL:
1
sudo systemctl start mysql
Проверка успешности переноса
-
Давайте проверим, что MySQL работает правильно с новым местоположением данных.
Проверим статус службы:
1
sudo systemctl status mysql
- Войдем в MySQL и проверим местоположение данных:
1
sudo mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
- Проверим, что наши базы данных доступны:
1
sudo mysql -u root -p -e "SHOW DATABASES;"
- Если все работает правильно, вы можете удалить старую резервную копию через несколько дней:
1
sudo rm -rf /var/lib/mysql.backup
Устранение распространенных проблем
- Если MySQL не запускается: Проверьте права доступа к директории
/var/lib/mysql
и убедитесь, что диск смонтирован. - Проблемы с производительностью: Убедитесь, что вы используете внешний SSD для лучшей скорости, а не медленный HDD.
- Недостаточно прав: Убедитесь, что владельцем всех файлов в
/var/lib/mysql
является пользовательmysql:mysql
.
На этом этапе вы успешно перенесли ваши базы данных MySQL на внешний диск! Теперь у вас есть больше места для роста ваших данных, и вы можете наслаждаться улучшенной производительностью, если используете SSD.