Перенос баз данных в оперативную память

Сначала сделайте резервную копию всех баз данных.

Скопируем его в /var/lib/mysql.bak:

sudo cp -pRL /var/lib/mysql /var/lib/mysql.bak

Создайте каталог для RAM-диска.

sudo mkdir /ramdisk

Заранее уточните размер папки с базами данных MySQL/MariaDB командой:

du -hs /var/lib/mysql/

Исходя из полученного размера и учитывая дальнейший рост базы нужно установить соответствующий размер RAM-диска (виртуального диска в оперативной памяти). Я назначил рамдиску размер 4ГБ.Вам решать, сколько места вы хотите, просто убедитесь, что оно может вместить все данные, которые вы будете записывать в базу данных.

Монтируем соответствующий раздел командой:

sudo mount -t tmpfs -o size=4G tmpfs /ramdisk/

Останавливаем MySQL/MariaDB командой:

sudo service mysql stop

или

sudo /etc/init.d/mysql stop

Перемещаем файлы баз данных MySQL/MariaDB в раздел RAM-диска.

sudo mv /var/lib/mysql /ramdisk/mysql

Создаём символическую ссылку на RAM-диск.

sudo ln -s /ramdisk/mysql /var/lib/mysql

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

sudo chown mysql:mysql /ramdisk/mysql

Перезапустите MySQL, чтобы изменения вступили в силу.

sudo service mysql restart

или

sudo /etc/init.d/mysql restart

Восстановление баз данных
Т.к. базы данных сохраняются на RAM-диске, они будут удаляться каждый раз при выключении компьютера.

Вот шаги для его восстановления.

Удалите ранее созданную символическую ссылку на mysql ramdisk.

sudo rm -rf /var/lib/mysql

Скопируйте и восстановите базы данных из резервной копии.

sudo cp -pRL /var/lib/mysql.bak /var/lib/mysql

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

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

#!/bin/bash
# Script for restoring backed up database that was moved to the RAM Disk.
if [ $(uname) = "Linux" ]; then
# Delete detached symlink
[ -L /var/lib/mysql ] && sudo rm -rf /var/lib/mysql
# Restore backups
[ -d /var/lib/mysql.bak ] && sudo cp -pRL /var/lib/mysql.bak /var/lib/mysql
else
echo "Unsupported platform."
fi

Скрипт для переноса базы данных в оперативную память

#!/bin/bash
# Create ramdisk if it doesn't exist.
[ ! -d /ramdisk ] && sudo mkdir /ramdisk
# Mount ramdisk has been created.
[ -d /ramdisk ] && sudo mount -t tmpfs -o size=4G tmpfs /ramdisk/
if [ -d /var/lib/mysql ]; then
# Move the mysql databases to the ramdisk if it exists
sudo mv /var/lib/mysql /ramdisk/mysql
# Create a symbolic link.
sudo ln -s /ramdisk/mysql /var/lib/mysql
# Change ownership to mysql.
[ -d /ramdisk/mysql ] && sudo chown mysql:mysql /ramdisk/mysql
else
echo "No MySQL directory at /var/lib."
fi;
# Restart mysql.
sudo /etc/init.d/mysql restart

Это то, что я выполняю каждый раз, когда перезагружаю сервер.

# Restore the data first.
./mysql-ramdisk-restore.sh
# then move it to the RAM.
./mysql-ramdisk.sh

Обязательно убедитесь, что вы создали резервную копию своих баз данных в /var/lib/mysql.bak перед выполнением этих команд.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *