Tôi phải khôi phục bản sao lưu từ Linux MariaDB sang Windows MariaDB, nơi cổng PowerBI sẽ nhập dữ liệu của nó. "mariabackup" là công cụ sao lưu vật lý của MariaDB. Nhưng để khôi phục nó, thư mục đích (%chương trình%\MariaDB 10.3\dữ liệu\
) phải trống.
Từ rmdir /S /Q "%programfiles%\MariaDB 10.3\data\
sẽ xóa thư mục "dữ liệu" (thứ tôi không muốn!!!), tôi đã làm việc để tránh hành vi không mong muốn này trong tập lệnh sau (uncompress.bat):
rem Giải nén bản sao lưu được gửi bởi máy chủ linux
rem và nhập nó vào MariaDB
rem Gilberto Martins - 19/11/2021
rem Giải nén bản sao lưu
rem Đường dẫn sao lưu là "mnt\external01\"
tar -xf c:\users\mariabkp\bkp.tgz -C c:\users\mariabkp\
rem Dừng MariaDB
mạng dừng mysql
rem Chuẩn bị sao lưu để phục hồi
"C:\Program Files\MariaDB 10.3\bin\mariabackup.exe" --prepare --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem Xóa các tập tin cơ sở dữ liệu
del /q "C:\Program Files\MariaDB 10.3\data\*.*"
CHO /D %p IN ("c:\Program Files\MariaDB 10.3\data\*") DO rmdir "%p" /s /q
rem Nhập bản sao lưu vào MariaDB
"C:\Tệp chương trình\MariaDB 10.3\bin\mariabackup.exe" --move-back --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem Khôi phục tệp conf MariaDB
sao chép "c:\Users\Administrator\my.ini" "c:\Program Files\MariaDB 10.3\data" /y
khởi động lại MariaDB
khởi động mạng mysql
Tôi làm việc tốt, đến mức tôi phải xóa các tệp để khôi phục, như bạn có thể thấy phía trước:
Microsoft Windows [Phiên bản 10.0.17763.1935]
(c) Tập đoàn Microsoft năm 2018. Đã đăng ký Bản quyền.
C:\Users\Administrator>uncompress.bat
C:\Users\Administrator>rem Giải nén bản sao lưu được gửi bởi máy chủ linux
C:\Users\Administrator>rem và nhập nó vào MariaDB
C:\Users\Administrator>rem Gilberto Martins - 19/11/2021
C:\Users\Administrator>rem Giải nén bản sao lưu
C:\Users\Administrator>rem Đường dẫn sao lưu là "mnt\external01\backup"
C:\Users\Administrator>tar -xf c:\users\mariabkp\bkp.tgz -C c:\users\mariabkp\
C:\Users\Administrator>rem Stop MariaDB
C:\Users\Administrator>net stop mysql
Dịch vụ MySQL đang dừng.
Dịch vụ MySQL đã dừng thành công.
C:\Users\Administrator>rem Chuẩn bị Sao lưu để Khôi phục
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 dựa trên máy chủ MariaDB 10.3.31-MariaDB Win64 (AMD64)
[00] 22-11-2021 16:26:29 cd to c:\users\mariabkp\mnt\external01\backup\
[00] 22-11-2021 16:26:29 yêu cầu giới hạn tệp mở là 0, đặt thành 0
[00] 2021-11-22 16:26:29 Mục tiêu này dường như chưa được chuẩn bị.
[00] 22-11-2021 16:26:29 mariabackup: sử dụng cấu hình InnoDB sau để khôi phục:
[00] 22-11-2021 16:26:29 innodb_data_home_dir = .
[00] 22-11-2021 16:26:29 innodb_data_file_path = ibdata1:12M:autoextend
[00] 22-11-2021 16:26:29 innodb_log_group_home_dir = .
[00] 22-11-2021 16:26:29 Khởi động phiên bản InnoDB để khôi phục.
[00] 22-11-2021 16:26:29 mariabackup: Sử dụng 104857600 byte cho nhóm bộ đệm (được đặt bởi tham số --use-memory)
22-11-2021 16:26:29 0 [Lưu ý] InnoDB: Mutexes và rw_locks sử dụng các chức năng lồng vào nhau của Windows
22-11-2021 16:26:29 0 [Ghi chú] InnoDB: Sử dụng các mutex sự kiện
22-11-2021 16:26:29 0 [Lưu ý] InnoDB: Bảng nén sử dụng zlib 1.2.11
22-11-2021 16:26:29 0 [Ghi chú] InnoDB: Số nhóm: 1
22-11-2021 16:26:29 0 [Lưu ý] InnoDB: Sử dụng hướng dẫn SSE2 crc32
22/11/2021 16:26:29 0 [Lưu ý] InnoDB: Đang khởi tạo nhóm bộ đệm, tổng kích thước = 100M, phiên bản = 1, kích thước khối = 100M
22-11-2021 16:26:29 0 [Ghi chú] InnoDB: Đã hoàn tất quá trình khởi tạo vùng đệm
22-11-2021 16:26:29 0 [Lưu ý] InnoDB: Bắt đầu khôi phục sự cố từ điểm kiểm tra LSN=7032026737757
22-11-2021 16:26:29 0 [Lưu ý] InnoDB: Bắt đầu đợt cuối cùng để khôi phục 68 trang từ nhật ký làm lại.
[00] 2021-11-22 16:26:30 Tệp binlog cuối cùng , vị trí 0
[00] 2021-11-22 16:26:31 hoàn thành OK!
C:\Users\Administrator>rem Xóa tệp cơ sở dữ liệu
C:\Users\Administrator>del /q "C:\Program Files\MariaDB 10.3\data\*.*"
\Program lúc này thật bất ngờ.
C:\Users\Administrator>CHO /D \Program Files\MariaDB 10.3\data\*") LÀM rmdir "p" /s /q
C:\Người dùng\Quản trị viên>
Những câu hỏi của tôi:
Tại sao tin nhắn \Program lúc này thật bất ngờ.
khi tôi cố gắng del /q "C:\Program Files\MariaDB 10.3\data\*.*"
Tại sao hướng dẫn ban đầu CHO /D %p IN ("c:\Program Files\MariaDB 10.3\data\*") DO rmdir "%p" /s /q
được lặp lại như CHO /D \Program Files\MariaDB 10.3\data\*") LÀM rmdir "p" /s /q
? CÓ vẻ như (nhưng tôi không chắc) nó có thể liên quan đến biến "%p".
Tại sao các hướng dẫn còn lại (nhập bản sao lưu, khôi phục my.ini và khởi động MariaDB) không được thực hiện?
Tôi phải thừa nhận, tôi là một tân binh trong Windows Scripting. Và tôi cho rằng không cần thiết phải cài đặt Python3 đầy đủ chỉ cho một tập lệnh!
Cập nhật: Tôi đã cố gắng "Xóa các tệp cơ sở dữ liệu" trước "Chuẩn bị bản sao lưu để khôi phục", nhưng tôi nhận được kết quả tương tự, đó là nó dừng theo hướng dẫn "CHO".