Trebuie să refac o copie de rezervă dintr-un MariaDB Linux într-un MariaDB Windows, unde gateway-ul PowerBI își va importa datele. „mariabackup” este instrumentul de backup fizic al MariaDB. Dar pentru a-l restaura, folderul de destinație (%programfiles%\MariaDB 10.3\data\
) trebuie să fie goală.
De cand rmdir /S /Q "%programfiles%\MariaDB 10.3\data\
va elimina directorul „date” (ceea ce nu vreau!!!), am lucrat pentru a evita acest comportament nedorit în următorul script (uncompress.bat):
rem Decomprimați backup-ul trimis de serverul linux
rem și îl importă în MariaDB
rem Gilberto Martins - 19.11.2021
rem Decomprimați copia de rezervă
rem Calea de rezervă este „mnt\external01\”
tar -xf c:\utilizatori\mariabkp\bkp.tgz -C c:\utilizatori\mariabkp\
rem Stop MariaDB
net stop mysql
rem Pregătiți copia de rezervă pentru restaurare
„C:\Program Files\MariaDB 10.3\bin\mariabackup.exe” --prepare --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem Ștergeți fișierele bazei de date
del /q „C:\Program Files\MariaDB 10.3\data\*.*”
FOR /D %p IN ("c:\Program Files\MariaDB 10.3\data\*") DO rmdir "%p" /s /q
rem Importă backup în MariaDB
„C:\Program Files\MariaDB 10.3\bin\mariabackup.exe” --move-back --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem Restaurați fișierul conf MariaDB
copiați "c:\Users\Administrator\my.ini" "c:\Program Files\MariaDB 10.3\data" /y
rem Porniți MariaDB
net start mysql
Funcționez bine, până în punctul în care trebuie să șterg fișierele pentru restaurare, după cum puteți vedea în continuare:
Microsoft Windows [Versiunea 10.0.17763.1935]
(c) 2018 Microsoft Corporation. Toate drepturile rezervate.
C:\Utilizatori\Administrator>uncompress.bat
C:\Users\Administrator>rem Decomprimați backup-ul trimis de serverul linux
C:\Users\Administrator>rem și îl importă în MariaDB
C:\Users\Administrator>rem Gilberto Martins - 19/11/2021
C:\Users\Administrator>rem Decomprimați copia de rezervă
C:\Users\Administrator>rem Calea de rezervă este „mnt\external01\backup”
C:\Utilizatori\Administrator>tar -xf c:\utilizatori\mariabkp\bkp.tgz -C c:\utilizatori\mariabkp\
C:\Users\Administrator>rem Stop MariaDB
C:\Users\Administrator>net stop mysql
Serviciul MySQL se oprește.
Serviciul MySQL a fost oprit cu succes.
C:\Users\Administrator>rem Pregătiți copia de rezervă pentru restaurare
C:\Users\Administrator>"C:\Program Files\MariaDB 10.3\bin\mariabackup.exe" --prepare --target-dir="c:\users\mariabkp\mnt\external01\backup"\
C:\Program Files\MariaDB 10.3\bin\mariabackup.exe bazat pe serverul MariaDB 10.3.31-MariaDB Win64 (AMD64)
[00] 2021-11-22 16:26:29 cd în c:\users\mariabkp\mnt\external01\backup\
[00] 2021-11-22 16:26:29 Limită de fișiere deschise solicitată 0, setată la 0
[00] 2021-11-22 16:26:29 Această țintă pare să nu fie pregătită încă.
[00] 2021-11-22 16:26:29 mariabackup: folosind următoarea configurație InnoDB pentru recuperare:
[00] 2021-11-22 16:26:29 innodb_data_home_dir = .
[00] 2021-11-22 16:26:29 innodb_data_file_path = ibdata1:12M:autoextend
[00] 2021-11-22 16:26:29 innodb_log_group_home_dir = .
[00] 2021-11-22 16:26:29 Pornirea instanței InnoDB pentru recuperare.
[00] 2021-11-22 16:26:29 mariabackup: se utilizează 104857600 de octeți pentru pool-ul de buffer (setat de parametrul --use-memory)
2021-11-22 16:26:29 0 [Notă] InnoDB: Mutexurile și rw_locks folosesc funcții interblocate Windows
2021-11-22 16:26:29 0 [Notă] InnoDB: Utilizează mutexuri de evenimente
2021-11-22 16:26:29 0 [Notă] InnoDB: Tabelele comprimate folosesc zlib 1.2.11
22-11-2021 16:26:29 0 [Notă] InnoDB: Număr de grupuri: 1
2021-11-22 16:26:29 0 [Notă] InnoDB: Utilizarea instrucțiunilor SSE2 crc32
22-11-2021 16:26:29 0 [Notă] InnoDB: Inițializarea pool-ului de buffer, dimensiune totală = 100 M, instanțe = 1, dimensiunea bucată = 100 M
2021-11-22 16:26:29 0 [Notă] InnoDB: Inițializarea pool-ului de buffer-uri a fost finalizată
2021-11-22 16:26:29 0 [Notă] InnoDB: Începe recuperarea accidentului de la punctul de control LSN=7032026737757
2021-11-22 16:26:29 0 [Notă] InnoDB: Se începe lotul final pentru a recupera 68 de pagini din jurnalul de refacere.
[00] 22-11-2021 16:26:30 Ultimul fișier binlog , poziția 0
[00] 22-11-2021 16:26:31 finalizat OK!
C:\Users\Administrator>rem Ștergeți fișierele bazei de date
C:\Users\Administrator>del /q "C:\Program Files\MariaDB 10.3\data\*.*"
\Programul a fost neașteptat în acest moment.
C:\Utilizatori\Administrator>PENTRU /D\Program Files\MariaDB 10.3\data\*") DO rmdir "p" /s /q
C:\Utilizatori\Administrator>
Intrebarile mele:
De ce mesajul \Programul a fost neașteptat în acest moment.
când încerc del /q „C:\Program Files\MariaDB 10.3\data\*.*”
De ce instrucțiunea originală FOR /D %p IN ("c:\Program Files\MariaDB 10.3\data\*") DO rmdir "%p" /s /q
este ecou ca PENTRU /D \Program Files\MariaDB 10.3\data\*") DO rmdir "p" /s /q
? SE PARE (dar nu sunt sigur) că ar putea fi ceva legat de variabila „%p”.
De ce instrucțiunile rămase (import backup, restaurare my.ini și pornire MariaDB) nu sunt executate?
Trebuie să recunosc, sunt un începător în Windows Scripting. Și consider inutil să instalez Python3 complet pentru un singur script!
Actualizare: Am încercat să „Șterg fișierele bazei de date” înainte de „Pregătirea copiei de rezervă pentru restaurare”, dar am primit același rezultat, adică se oprește la instrucțiunea „PENTRU”.