เปลี่ยนเส้นทางเอาต์พุตของ mysqldump ไปยัง scp


13

ฉันทำงานกับ linux pro เมื่อหลายปีก่อนซึ่งทำเคล็ดลับได้ดี เขาสามารถทำmysqldump แต่เปลี่ยนเส้นทางออกกับการเชื่อมต่อ SCP / SSH มากกว่าการเขียนไปยังดิสก์ พวกเราใช้ความเงียบเล็กน้อยที่ฉันเคยทำงาน แต่ฉันจำไม่ได้ว่าจะทำเช่นนี้อีกต่อไป

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

ฉันหวังว่าจะใช้การใช้เล่ห์เหลี่ยมบรรทัดคำสั่งนี้เพื่อยังคงสามารถสำรองฐานข้อมูลของฉันไปยังเซิร์ฟเวอร์ใหม่เนื่องจากการเขียนดัมพ์ไปยัง diska nd ถ่ายโอนท้องถิ่นมันชัดเจนจากคำถาม

นี่เป็นเคล็ดลับเล็ก ๆ น้อย ๆ ที่เป็นไปได้จริงหรือ? ถ้าเป็นไวยากรณ์คืออะไร?

ฉันได้รับรู้ตั้งแต่เนื่องจากปัญหาระบบไฟล์แบบอ่านอย่างเดียวฉันพบว่าฉันไม่สามารถเชื่อมต่อกับ mysql เพื่อถ่ายโอนข้อมูลได้ แต่ฟีดของคุณกลับมาเยี่ยมมากและหวังว่าจะใช้กับคนอื่นในอนาคต


1
"เจตนาและวัตถุประสงค์"
Ignacio Vazquez-Abrams

คำตอบ:


11

mysqldump dbname | ssh root@remoteserver.com "mysql -D dbname"

ที่ควรใช้ :-)

ตั้งค่าคีย์ระหว่างระบบเช่นกันดังนั้นคุณสามารถทำได้โดยไม่ต้องมีการล็อกอิน / พาส :-)


นี่เป็นสิ่งที่ดีมาก ๆ จริง ๆ แล้วการวาง dump ลงใน mysql บนรีโมตเซิร์ฟเวอร์โดยตรงโดยการโคลนฐานข้อมูลคือคำสั่งเดียว ฉันถูกไหม?
xzyfer

1
คุณได้รับมัน ;-) แน่นอนว่าคุณสามารถกดไฟล์ได้ตลอดเวลา แต่ฉันชอบที่ทิ้งเพราะพวกเขาอนุญาตให้คุณย้อนไปที่การสำรองข้อมูลหากจำเป็น :-) ในเวลาจริงเพียงแค่เปลี่ยนไอพีในไฟล์ปรับแต่งของคุณ ... ผลประโยชน์มหาศาล เราทำสิ่งนี้กับสิ่งที่ linode ของเราตลอดเวลา
Glenn Kelley

ฉันรู้สึกว่าอาจมีปัญหาการบัฟเฟอร์ที่นี่หรือไม่
Phil Hollenback

10
mysqldump ... | ssh ... "cat > out.dmp"

อันนี้ใช้งานได้ดีสำหรับฉัน ฉันตั้งค่าการตรวจสอบกุญแจสาธารณะในแล็ปท็อป Mac OS X ของฉันและรันmysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" สิ่งที่ฉันต้องการ
harperville

2

ฉันชอบคำตอบของ @ GlennKelley แต่ต้องการชี้ประเด็นต่อไปนี้:

เรามีฐานข้อมูลที่ 450GB แต่มีเพียง 500GB ที่จัดสรรไว้บนโฮสต์ เราไม่สามารถส่งออกภายในเครื่องได้ดังนั้นเราจึงส่งออกจากระยะไกล เราตรวจสอบความถูกต้องของเอาต์พุตและมีหลายร้อยอินสแตนซ์ที่เอาต์พุตเสียหายเนื่องจากปัญหาการบัฟเฟอร์ของท่อ

ทางออกที่ดีที่สุดที่นี่คือจากโฮสต์เป้าหมายที่คุณต้องการให้การถ่ายโอนข้อมูลของคุณจบลงทำงานmysqldumpแต่ใช้-hตัวเลือกสำหรับโฮสต์ ชี้โฮสต์เซิร์ฟเวอร์ MySQL >และส่งออกข้อมูลไปใช้

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.