windows 7 task schedule / mysqldump


0

ฉันสร้างแบตช์ไฟล์เพื่อสร้างดัมพ์ของฐานข้อมูลและบันทึกลงในไฟล์ที่มีวันที่ปัจจุบันเป็นส่วนหนึ่งของชื่อไฟล์ ไฟล์แบตช์ทำงานได้อย่างยอดเยี่ยมและข้อมูลทั้งหมดจะถูกบันทึกอย่างถูกต้อง

ตอนนี้ฉันพยายามตั้งเวลาให้ทำงานสัปดาห์นี้ แต่ฉันพบปัญหา: ถึงแม้ว่างานจะทำงานไฟล์ที่สร้างจะว่างเปล่าราวกับว่ามันไม่ได้ดึงข้อมูลใด ๆ จากฐานข้อมูลระยะไกล ฉันรู้ว่ามันค่อนข้างคลุมเครือ แต่ใครสามารถบอกได้ว่าฉันเริ่มมองหาเหตุผล / วิธีแก้ปัญหาได้ที่ไหน

** แก้ไข **

ถูกต้องความคืบหน้ามากขึ้น - ดูเหมือนว่ามันอาจเป็นปัญหาของพา ธ ที่ฉันได้หยุดชั่วคราวในไฟล์แบทช์และเมื่อทำงานผ่านตัวกำหนดตารางงานมันบอกว่า: 'mysqldump ไม่ใช่โปรแกรมที่รู้จัก' อย่างไรก็ตามเมื่อทำงานผ่านบรรทัดคำสั่งในบัญชีผู้ใช้ของฉันมันทำงานได้ดี; เพียงเพื่อยืนยันว่าฉันได้ตั้งค่าให้ทำงานในบัญชีผู้ใช้เดียวกับที่ฉันได้ทำการทดสอบ

** แก้ไข 2 **

ฉันพบวิธีแก้ปัญหาแล้ว: ฉันต้องอ้างอิงแอปพลิเคชัน mysqldump ตามเส้นทางที่แน่นอน อย่างไรก็ตามฉันยังไม่เข้าใจว่าทำไมมันสามารถหา mysqldump จากเส้นทางเมื่อเรียกใช้โดยตรงจากบรรทัดคำสั่ง แต่ไม่ใช่เมื่ออัตโนมัติผ่านตัวกำหนดเวลางาน

คำตอบ:


1

บางทีเครือข่ายไม่พร้อมใช้งาน คุณสามารถลองตั้งเวลาให้รันทุกๆ 5/10 นาทีและดูว่าคำสั่ง / ตัวแปรนั้นถูกต้องหรือไม่ คุณแน่ใจหรือไม่ว่าสคริปต์ทำงานอย่างถูกต้องเมื่อเรียกใช้โดยรวมและไม่ใช่เพียงคำสั่งทีละรายการ?


ในการแก้ไข 2 ของคุณดูเหมือนว่า mysqldump ไม่มีอยู่ใน PATH ตัวแปรสภาพแวดล้อม ลองเพิ่มมันแล้วลองอีกครั้ง


มันไม่ได้เป็นปัญหาเครือข่ายฉันสามารถเรียกใช้ไฟล์แบตช์ทั้งหมดจากบรรทัดคำสั่งและมันก็ใช้ได้และฉันก็มีปัญหาเดียวกันที่พยายามสำรองจากเซิร์ฟเวอร์ mysql ในพื้นที่ของฉัน
richzilla

ใช่นี่เป็นปัญหามันอยู่ในเส้นทาง ในเส้นทางที่ ive ได้ c:\xampp\mysql\bin` where bin contains all of the mysql binaries. when running the batch file from the command line, i just need to refer to the application name - mysqldump . When running from the task scheduler, it refuses to work unless i provide the batch file with the full path to mysqldump.exe`
richzilla

0

คุณได้ลองใช้ mysqldump (ในตารางงานของคุณ) ในโหมด verbose หรือไม่? (--verbose)

นอกจากนี้ยังอาจดูว่าผู้ใช้งานของคุณกำลังทำงานอยู่ให้แน่ใจว่าผู้ใช้มีสิทธิ์ในการเรียกใช้ mysqldump และสร้างไฟล์ในไดเรกทอรีเป้าหมาย


ผู้ใช้งานกำลังทำงานเหมือนกับโฟลเดอร์ผู้ใช้ไฟล์ทั้งหมดที่เกี่ยวข้องดังนั้นจึงไม่ควรเป็นปัญหาสิทธิ์
richzilla

ฉันพยายามตั้งค่าสถานะ verbose อีกครั้งมันใช้งานได้ดีถ้าฉันเรียกใช้ไฟล์แบตช์จากบรรทัดคำสั่ง แต่ถ้าฉันเรียกใช้งานจากตัวกำหนดเวลางานพรอมต์คำสั่งจะกะพริบขึ้นมาแล้วหายไปทันทีฉันไม่เคยเห็นโอกาส กล่าวว่า
richzilla

0
  1. หากการให้พา ธ สัมบูรณ์แก้ปัญหาของคุณเป็นไปไม่ได้ที่จะสร้างไฟล์เปล่า แต่ไม่มีไฟล์ใดถูกสร้างด้วยบันทึกกำหนดการของ windows แสดงว่างานสำเร็จ

  2. สคริปต์ของคุณอาจทำงานในบรรทัดคำสั่งหากตัวแปรพา ธ เก็บข้อมูลพา ธ ไว้ที่ mysqldump.exe ตรวจสอบโดยให้คำสั่ง "เส้นทาง" กับบรรทัดคำสั่ง

  3. สำหรับการอ้างอิงของคุณที่นี่เป็นไฟล์แบตช์ตัวอย่างที่ฉันใช้เพื่อสำรอง mysql

@echo off
SET DB_USER_ID=[id]  
SET DB_USER_PASS=[password]
SET DATABASE=[database name]
SET EXP_PATH=[backup path]
SET EXP_TMP_PATH=[temp path]
SET FILE_NAME=[backup filename]
For /f "tokens=1-3 delims=- " %%a in ('date /t') do (set today=%%a-%%b-%%c)

del /S /Q %EXP_PATH%
md %EXP_PATH%
md %EXP_TMP_PATH%

C:\Bitnami\redmine-2.5.2-0\mysql\bin\mysqldump.exe -u%DB_USER_ID% -p%DB_USER_PASS% %DATABASE% > %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql
move %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql %EXP_PATH%\%FILE_NAME%_%today%.sql
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.