Điểm:1

hành vi lạ trong tập lệnh .BAT của Windows 2019

lá cờ cn

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:

  1. 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\*.*"

  2. 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".

  3. 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".

Điểm:1
lá cờ cn

Thực tế, đầu ra gây nhầm lẫn vì nó hiển thị đầu ra của FOR trước tiếng vang của FOR, vì vậy có vẻ như dòng trên nó bị lỗi, nhưng thực tế không phải vậy.

Cách khắc phục rất dễ dàng, chỉ cần tăng gấp đôi% biến của bạn, như vậy...

CHO /D %%p IN ("c:\Program Files\MariaDB 10.3\data\*") DO rmdir "%%p" /s /q

Tôi có thể nói với bạn rằng ngay cả những người viết kịch bản tệp hàng loạt dày dạn kinh nghiệm từ ngày trước cũng sẽ vò đầu bứt tai vì thứ này. Cá nhân tôi đã tự động hóa việc này trong PowerShell vì nó không có sẵn cho tất cả các bản cài đặt Windows ngày nay. Python cũng rất tuyệt khi nó ở đó. :-)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.