ฉันต้องกู้คืนข้อมูลสำรองจาก Linux MariaDB ไปยัง Windows MariaDB ซึ่งเกตเวย์ PowerBI จะนำเข้าข้อมูล "mariabackup" เป็นเครื่องมือสำรองทางกายภาพของ MariaDB แต่หากต้องการกู้คืนโฟลเดอร์ปลายทาง (%programfiles%\MariaDB 10.3\data\
) ต้องว่างเปล่า
เนื่องจาก rmdir /S /Q "%programfiles%\MariaDB 10.3\data\"
จะลบไดเร็กทอรี "data" (สิ่งที่ฉันไม่ต้องการ !!!) ฉันได้ทำงานเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่ต้องการนี้ในสคริปต์ต่อไปนี้ (uncompress.bat):
rem คลายการบีบอัดข้อมูลสำรองที่ส่งโดยเซิร์ฟเวอร์ linux
rem และนำเข้าไปยัง MariaDB
เรม กิลแบร์โต มาร์ตินส์ - 19/11/2021
rem คลายการบีบอัดข้อมูลสำรอง
rem เส้นทางสำรองคือ "mnt\external01\"
tar -xf c:\users\mariabkp\bkp.tgz -C c:\users\mariabkp\
rem หยุด MariaDB
หยุดสุทธิ mysql
rem เตรียมการสำรองข้อมูลสำหรับการกู้คืน
"C:\Program Files\MariaDB 10.3\bin\mariabackup.exe" --prepare --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem ลบไฟล์ฐานข้อมูล
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 นำเข้าข้อมูลสำรองไปยัง MariaDB
"C:\Program Files\MariaDB 10.3\bin\mariabackup.exe" --move-back --target-dir="c:\users\mariabkp\mnt\external01\backup"\
rem กู้คืนไฟล์ Conf MariaDB
คัดลอก "c:\Users\Administrator\my.ini" "c:\Program Files\MariaDB 10.3\data" /y
rem เริ่ม MariaDB
เริ่มต้นสุทธิ mysql
ฉันทำงานได้ดีจนถึงจุดที่ฉันต้องลบไฟล์เพื่อกู้คืน อย่างที่คุณเห็นข้างหน้า:
Microsoft Windows [เวอร์ชัน 10.0.17763.1935]
(ค) 2018 Microsoft Corporation สงวนลิขสิทธิ์.
C:\Users\Administrator>uncompress.bat
C:\Users\Administrator>rem คลายการบีบอัดข้อมูลสำรองที่ส่งโดยเซิร์ฟเวอร์ linux
C:\Users\Administrator>rem และนำเข้าไปยัง MariaDB
C:\Users\Administrator>rem Gilberto Martins - 19/11/2021
C:\Users\Administrator>rem คลายการบีบอัดข้อมูลสำรอง
C:\Users\Administrator>rem เส้นทางสำรองคือ "mnt\external01\backup"
C:\Users\Administrator>tar -xf c:\users\mariabkp\bkp.tgz -C c:\users\mariabkp\
C:\Users\Administrator>rem หยุด MariaDB
C:\Users\Administrator>net stop mysql
บริการ MySQL กำลังหยุดทำงาน
หยุดบริการ MySQL เรียบร้อยแล้ว
C:\Users\Administrator>rem เตรียมการสำรองข้อมูลสำหรับการกู้คืน
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 อ้างอิงจากเซิร์ฟเวอร์ MariaDB 10.3.31-MariaDB Win64 (AMD64)
[00] 2021-11-22 16:26:29 cd ถึง c:\users\mariabkp\mnt\external01\backup\
[00] 2021-11-22 16:26:29 ขีดจำกัดการเปิดไฟล์ที่ร้องขอ 0 ตั้งค่าเป็น 0
[00] 2021-11-22 16:26:29 เป้าหมายนี้ดูเหมือนจะยังไม่ได้เตรียมการ
[00] 2021-11-22 16:26:29 mariabackup: ใช้การกำหนดค่า InnoDB ต่อไปนี้สำหรับการกู้คืน:
[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 กำลังเริ่มต้นอินสแตนซ์ InnoDB สำหรับการกู้คืน
[00] 2021-11-22 16:26:29 mariabackup: ใช้ 104857600 ไบต์สำหรับบัฟเฟอร์พูล (ตั้งค่าโดยพารามิเตอร์ --use-memory)
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: Mutexes และ rw_locks ใช้ฟังก์ชันที่เชื่อมต่อกันของ Windows
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: ใช้ mutexes เหตุการณ์
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: ตารางที่บีบอัดใช้ zlib 1.2.11
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: จำนวนพูล: 1
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: การใช้คำสั่ง SSE2 crc32
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: กำลังเริ่มต้นบัฟเฟอร์พูล ขนาดรวม = 100M อินสแตนซ์ = 1 ขนาดก้อน = 100M
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: การเริ่มต้นของบัฟเฟอร์พูลเสร็จสมบูรณ์
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: กำลังเริ่มต้นการกู้คืนข้อขัดข้องจากจุดตรวจสอบ LSN=7032026737757
2021-11-22 16:26:29 0 [หมายเหตุ] InnoDB: เริ่มชุดสุดท้ายเพื่อกู้คืน 68 หน้าจากบันทึกการทำซ้ำ
[00] 2021-11-22 16:26:30 ไฟล์ binlog ล่าสุด ตำแหน่ง 0
[00] 2021-11-22 16:26:31 เรียบร้อย OK!
C:\Users\Administrator>rem ลบไฟล์ฐานข้อมูล
C:\Users\Administrator>del /q "C:\Program Files\MariaDB 10.3\data\*.*"
\Program ไม่คาดคิดในขณะนี้
C:\Users\Administrator>FOR /D \Program Files\MariaDB 10.3\data\*") DO rmdir "p" /s /q
C:\Users\Administrator>
คำถามของฉัน:
ทำไมข้อความ \Program ไม่คาดคิดในขณะนี้
เมื่อฉันพยายาม 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
ก็สะท้อนเป็น สำหรับ /D \Program Files\MariaDB 10.3\data\*") DO rmdir "p" /s /q
? ดูเหมือนว่า (แต่ฉันไม่แน่ใจ) อาจเป็นสิ่งที่เกี่ยวข้องกับตัวแปร "%p"
เหตุใดคำสั่งที่เหลือ (นำเข้าข้อมูลสำรอง กู้คืน my.ini และเริ่ม MariaDB) จึงไม่ถูกดำเนินการ
ฉันต้องยอมรับว่าฉันเป็นมือใหม่ใน Windows Scripting และฉันคิดว่าไม่จำเป็นต้องติดตั้ง Python3 แบบเต็มสำหรับสคริปต์เดียวเท่านั้น!
อัปเดต: ฉันพยายาม "ลบไฟล์ฐานข้อมูล" ก่อน "เตรียมการสำรองข้อมูลเพื่อการกู้คืน" แต่ฉันได้ผลลัพธ์เดียวกัน นั่นคือหยุดที่คำสั่ง "สำหรับ"