Hallo Wouter en anderen,

Op 28-09-2021 om 12:24 schreef Wouter Verhelst:
On Thu, Sep 23, 2021 at 04:21:30PM +0200, Geert Stappers wrote:
On Thu, Sep 23, 2021 at 12:27:59PM +0200, Paul van der Vlis wrote:
Hallo,

Ik wil MariaDB kopieren van Ubuntu naar Debian.
De versie op Debian is nieuwer, maar niet veel.

Wat ik wou doen is aan beide kanten MariaDB uitzetten, en dan /var/lib/mysql
synchroniseren. Dan op de nieuwe machine MariaDB weer aanzetten. Bij de
informatie aan het eind van dit bericht is dat nog niet gebeurd, daar heb ik
de ib_logfile* bestanden verwijderd en dan start het wel weer, maar goed is
het niet.
Ik kwam ook een melding tegen dat inloggen als root niet lukt voor de
update, terwijl het paswoord in /root/.my.cnf staat en inloggen als root
vanaf de commandline lukt.

Ja, ik weet het, een dump maken en weer inlezen is beter. Maar in dit geval
lastig (grote database, disks erg vol).

Tips zijn welkom.

Doen wat je al wist: een dump maken en weer inlezen.

En voor het diskruimte probleem: leen even "parkeerruimte".

Of gewoon live dumpen:

root@nieuwe-machine:~# ssh root@oude-machine mysqldump --all-databases | mysql

Dat werkt gewoon, in mijn ervaring, en je hebt geen temporary storage
nodig.

Leuk commando.

Een punt was dat ik de omgeving niet heel goed kende. Ik wou liever MySQL sluiten zodat er echt geen wijzigingen meer kwamen, en bij mysqldump moet de database aan staan. Verder had het allemaal haast, er stond een machine op omvallen, en de data kopieren was getest.

Daarom toch met rysnc /var/lib/mysql gekopieerd, en daarna dit:
/usr/bin/mysql_upgrade -ppassword

Dit ging allemaal prima, het draait ook prima. Maar misschien toch goed om nog te gaan dumpen en in te lezen in een schoon systeem. Ik denk aan zoiets:

cp -a /var/lib/mysql /root/mysql/lib/  # ter backup
cp -a /etc/mysql /root/mysql/etc/      # ter backup
mysqldump --all-databases > /root/dump.sql
systemctl stop mariadb
systemctl purge mariadb-server-10.5
rm -r /var/lib/mysql /etc/mysql        # voor de zekerheid
apt install mariadb-server             # installeer schoon
mysql < /root/dump.sql                 # dump terugzetten

Nu moet ik zeggen dat ik normaal altijd elke database naar een apart bestand backup, bovenstaande --all-databases gebruik ik nooit. Verder drop ik een database eerst, en dan create ik hem opnieuw voordat ik de backup inlees. De rechten laat ik dan normaal zoals ze waren.

Ik neem aan dat het bijvoorbeeld de bestaande mysql database overschrijft, en dat daarin alle rechten staan.

Heeft dumpen en inlezen in een schoon systeem eigenlijk wel zin?

Groeten,
Paul

--
Paul van der Vlis Linux systeembeheer Groningen
https://www.vandervlis.nl/

Antwoord per e-mail aan