Dato il mio ultimo post a riguardo della corruzione di alcuni file database e del blocco del servizio mariadb sto facendo alcune prove di backup e restore ecc.
Sto provando il comando mariabackup, l idea di usare questo piuttosto che mysqldump è che se il servizio non parte non riesco neppure a ripristinare un file .sql fatto con mysqldump.
Da quello che ho capito mariabackup fa invece una copia della cartella data.
Ho eseguite le 3 istruzioni che ho troato cercando in rete:
backup:
mariabackup --backup --target-dir="C:\backup" --user yourUserId --password yourUserPassword
restore:
mariabackup --prepare --target-dir="C:\backup"
mariabackup --copy-back --target-dir="C:\backup" --datadir="C:\Program Files\MariaDB 10.3\data" --user yourUserId --password yourUserPassword
per quanto riguarda il backup mi crea i file;
per quanto riguarda il comando prepare fa qualcosa, non mi da errori,
ma quando esegui il comando copyback, al di la che mi da errore che la cartella data non è vuota, ok la svuoto 8salvandomi il file my.ini), eseguo il comando e comuque non va a buon fine, mi ritorna errore:
mariabackup based on MariaDB server 10.7.3-MariaDB Win64 (AMD64)
mariabackup: Can't create file 'D:\MariaDB\data\.\ibdata1' (errno: 22 "Invalid argument")
[01] 2022-09-13 14:35:27 error: cannot open the destination stream for ibdata1
[01] 2022-09-13 14:35:27 Error: copy_file() failed.
provando su un altro pc invece non mi da errore ma quando avvio il servizio mariadb si inchioda restituendo errore 1067, percui di fatto io non sono riuscito a recuperare nulla, cosa sbaglio?
Gia che ci sono volevo poi chiedere un altra cosa:
ho una tabella che occupa 1 giga con 3 milioni di record, se cancello 2 milioni di record, vedo che la tabella continua comunque ad occupare 1 giga.
Il data file nella cartella data occupa sempre la stessa dimensione.
ma se creo un dump con mysqldump, droppo la tabella recupero la tabella con mysql la tabella (giustamente) occupa circa un terzo della dimensione.
Non ce un modo per shrinkarla in automatico?, ho provato col comando flush table ma non mi pare faccia nulla.
grazie nuovamente.