Hace pocos días instalé una Raspberry Pi 3 con Ubuntu 20.04 LTS, como sabemos, debe ser instalada en una memoria microSD para que arranque el sistema operativo. Como en mi caso requiero tener MySQL jalando, me parece que era mucha carga para estar en la microSD así que moví los datos a un disco duro SSD, además de los logs y el sitio web (nginx). Añadí pues un disco SSD por USB y lo monté en /mnt/d2 pero puede ser cualquier partición diferente del mismo disco duro o de otro.
Añadir nuevo disco
Lo primero es que conecté el nuevo disco duro (un SSD) y para verificar como lo veía la máquina:
ls -al /dev/sd* # me muestra algo como /dev/sda /dev/sda1
Si no apareciera sda1 probablemente no esté con partición y formateado el disco, aquí un ejemplo y si tuviese /dev/sda como disco usb
sudo fdisk /dev/sda # borrar particiones (pulsar d, y eliminar las que haya , normalmente 1), pulsar n p enter, exit sudo mkfs -t ext4 /dev/sda1
Luego lo montamos
sudo mkdir /mnt/d2 sudo mount /dev/sda1 /mnt/d2
Mover MySQL (datos)
Ahora supongamos que queremos mover los datos de MySQL que normalmente están en /var/lib/mysql
sudo /etc/init.d/mysql stop rsync -rulvtWa /var/lib/mysql /mnt/d2
Y necesitamos hacer algunos cambios, en /etc/mysql/mysql.conf.d/mysqld.cnf buscar y cambiar la línea que empieza datadir por datadir = /mnt/d2/mysql (en mi caso), luego añadir permisos para apparmor, en /etc/apparmor.d/usr.sbin.mysqld añadir las siguientes líneas
/mnt/d2/mysql/ r, /mnt/d2/mysql/** rwk, /mnt/d2/log/mysql.err rw, /mnt/d2/log/mysql.log rw, /mnt/d2/log/mysql/ r, /mnt/d2/log/mysql/** rw, # leemos los valores sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld # reiniciamos MySQL sudo /etc/init.d/mysql restart
Eso debería bastar. En mi caso además moví /var/log a /mnt/d2/log
cd /var/ rsync -rulvtWa /var/log /mnt/d2 mv log old.log ln -s /mnt/d2/log/ ./
Por último, añadir la entrada en /etc/fstab del disco duro para que cargue al inicio:
/dev/sda1 /mnt/d2 ext4 defaults 0 2
Eso fue todo. El servidor web si no almacena directo en /var/www/html por default (recomiendo encarecidamente que no), se puden hacer ligas simbólicas para que almacenen en algún directorio del nuevo disco en /mnt/d2/. O de plano mover el root de nginx hacia este disco nuevo. Ahora la Raspberry tiene un mejor rendimiento ya que los logs, base de datos y scripts (php) están corriendo y almacenando en un disco SSD en lugar de la microSD.
ps. la imagen la vi en este post (que igual te indica como instalar MySQL).
https://panchito-kardashian.tar.mx/media/2021/02/raspberry-pi-mysql.jpg