วิธีสำรองเซิร์ฟเวอร์ Linode ที่ใช้งานอยู่


21

เราต้องการสำรองข้อมูลทุกอย่างบนเซิร์ฟเวอร์ Debian ของเราซึ่งทำงานจากระยะไกลในอีกฝั่งหนึ่งของโลก (โฮสต์โดย Linode) โดยไม่ต้องปิดเครื่อง

ระบบนี้ใช้เชลล์, อีเมล์, XMPP / prosody และเว็บด้วยการตั้งค่า nginx อย่างง่าย
เราต้องการสำรองไฟล์ที่เกี่ยวข้องกับสิ่งเหล่านั้นเพื่อความปลอดภัย ตัวอย่างเช่นผู้ใช้ไฟล์ได้จัดเก็บไว้ในไดเรกทอรีบ้านของพวกเขา

เราไม่จำเป็นต้องคัดลอกไฟล์ติดตั้งที่มีอยู่ทุกไฟล์เดียว / etc; แต่เหตุผลที่เราทำสำรองในตอนแรกก็คือเพื่อให้เราสามารถย้ายมันทั้งหมดไปยังการตั้งค่าใหม่ (Debian เวอร์ชั่นใหม่ยังอยู่ใน Linode)

ฉันเห็นว่า Linode มีบริการสำรองข้อมูล แต่ในระยะยาวเรายังต้องการการสำรองข้อมูลของเราเองที่นี่ในกรณีที่พวกเขาไปหรือสิ่งอื่นที่เกิดขึ้นแปลก

เหตุผลที่คำถามนี้มีอยู่คือเมื่อฉันพยายามทำการสำรองข้อมูลในอดีตฉันได้ทำผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้:

  • ฉันไป "ตกลงฉันจะคัดลอก/และทุกอย่างภายใต้มัน" และจากนั้นก็ติดอยู่ในวงวนไม่สิ้นสุดแปลก ๆ อย่างใดอย่างหนึ่งเพราะไดรฟ์ที่ฉันคัดลอกไปติดตั้งภายใต้ / สื่อ / สำรองข้อมูลและมันก็คัดลอกตัวเองซ้ำ ๆ ปัญหาเฉพาะนั้นไม่สามารถใช้งานได้ที่นี่เนื่องจากเราจะทำการสำรองข้อมูลผ่าน rsync หรือคล้ายกัน] หรือมีปัญหาในการพยายามคัดลอกบางสิ่งที่ "มีชีวิต" ใน / proc หรือ / var หรืออะไรก็ตามเช่นพยายามติดตามบันทึกที่เปลี่ยนแปลงตลอดเวลาหรือ
  • ฉันไปแล้ว "ตกลงฉันจะเอาขั้นต่ำที่เปลือยเปล่าของสิ่งที่เราต้องการ ... อืมมไดเรกทอรีบ้านของทุกคนและไดเรกทอรีเว็บเซิร์ฟเวอร์ของเรา (ทั้งหมดข้างล่าง/var) และขอขัดขวางสำเนา/etcและจดหมายเก่าทั้งหมดภายใต้ / var / vmail "และจากนั้นฉันมักจะวิเคราะห์สิทธิ์การใช้งานไฟล์หรือการประทับเวลา (จะต้องแน่ใจว่าฉันไม่ได้ทำการสำรองไฟล์ยูนิกซ์ไปยังไดรฟ์ FAT ในครั้งนี้) หรือลืมบางสิ่ง (" โอ้, ยิงฉันมีสคริปต์ที่กำหนดเองใน / usr / ท้องถิ่น / ถังขยะที่ฉันไม่เคยเก็บไว้ที่อื่นฉันลืมที่จะรับพวกเขาเดาว่าตอนนี้พวกเขาหายไปแล้ว ")

ดังนั้นการคัดลอก obv ทั้งไดรฟ์ตรงขึ้นนำไปสู่ข้อผิดพลาดและการคัดลอกไดเรกทอรีที่เลือกนำไปสู่ข้อผิดพลาด ฉันต้องการทราบวิธีการทำให้ถูกต้อง

คำถาม Server Fault มีความจำเป็นอะไรสำหรับระบบสำรองข้อมูลที่สมบูรณ์ ครอบคลุมปรัชญาและแนวปฏิบัติที่ดี แต่ฉันกำลังมองหารายละเอียดเฉพาะเหล่านี้ของ:

  • ฉันต้องคัดลอกไดเรกทอรีใดบ้างและฉันต้องแยกออก (เนื่องจากเป็นระบบที่ใช้งานอยู่ในปัจจุบันและบริการ wiki, แชท XMPP, อีเมล - มีข้อความใหม่เข้ามาในขณะที่งานคัดลอกกำลังทำงานอยู่)
  • แอตทริบิวต์ไฟล์ใดเช่นการประทับเวลา & เจ้าของ & กลุ่มฉันต้องนำเสนอและฉันต้องทำอย่างไร ←ฉันคิดว่าฉันสามารถตอบคำถามครึ่งนี้ได้ด้วยตัวเองเช่น…อืม… rsync -HXazฉันคิดว่าเป็นตัวเลือกที่ดีสำหรับเรา -zobv ไม่เกี่ยวข้องจริงๆกับคำถามซึ่งก็คือ "สิ่งที่ฉันรักษา"

คำแนะนำการสำรองข้อมูลที่ฉันเห็นว่าใช้ddงานดูเหมือนว่าจะมีการสันนิษฐานไว้ก่อนว่าไดรฟ์นั้นถูกถอดออกและไม่ได้ใช้งาน แต่ฉันไม่ควรจะยกเว้น "ชีวิต" ไดเรกทอรีเช่น / proc และบางส่วนของไดเรกทอรีย่อยที่อยู่ภายใต้ / var ( แต่บางสิ่งภายใต้ / var ฉันรู้ว่าแน่นอนเราทำจำเป็นที่จะต้องให้) และ / ติด? มีอะไรอีกบ้างที่ฉันต้องคิดในสถานการณ์นี้ จากนั้นฉันเดาว่าฉันสามารถดักฟังมันด้วย rsync และใช้--excludeธงจำนวนมาก

หรือมีความคิดที่ดีกว่าโดยเฉพาะอย่างยิ่ง FOSS ที่เป็นมิตร


ฉันเข้าใจว่าคำถามนี้ดูธรรมดามาก แต่ต้องใช้ระบบประเภทนี้มานานแล้วฉันทำเรื่องนี้ซ้ำแล้วซ้ำอีกและฉันก็ไม่เคยทำผิดวิธีทำถูกต้อง
Sandra


สำหรับสิ่งที่คุ้มค่าcp -r -aจะรักษาแอตทริบิวต์ของไฟล์ให้ได้มากที่สุดเมื่อคัดลอกไฟล์ (ขึ้นอยู่กับระบบไฟล์เป้าหมายที่รองรับ) การ-aตั้งค่าสถานะสั่งcpให้เก็บรักษาแอตทริบิวต์ สำหรับการคัดลอกผ่านเครือข่ายหรือผ่านระบบไฟล์ที่ไม่รองรับคุณสมบัติที่จำเป็นต้องใช้งานtar -cได้เสมอสำหรับฉันแม้ว่าฉันเชื่อว่ามีบางกรณีที่ขอบไม่ครอบคลุมและโดยเฉพาะอย่างยิ่งฉันเชื่อว่าtarโดยค่าเริ่มต้นขึ้นอยู่กับชื่อผู้ใช้ที่ตรงกัน ทั้งสองระบบ ที่กล่าวว่าฉันได้คัดลอกทั้งระบบ Linux (unmount) โดยใช้tarไม่มีปัญหาใด ๆ ที่ชัดเจน
Micheal Johnson

นอกจากนี้ยังมีเหตุผลใดเป็นพิเศษว่าทำไมจึงจำเป็นต้องคัดลอกระบบถ่ายทอดสด
Micheal Johnson

ใช้บริการ snapshot ของ linode หรือไม่
ivanivan

คำตอบ:


15

ดังนั้นคุณต้องการสำรองข้อมูลไดรฟ์ทั้งหมดโดยไม่มีข้อผิดพลาดที่น่ารังเกียจและยังกรอง / proc และโฟลเดอร์ชั่วคราวอื่น ๆ ทั้งหมดหรือไม่

ตัวเลือกคือการเมานต์รูทโฟลเดอร์ไปยังโฟลเดอร์อื่นภายในระบบไฟล์ดังนี้:

$ cd /mnt
$ mkdir drive
$ mount --bind / drive

นี่จะให้ไฟล์ทั้งหมดที่มีอยู่ในไดรฟ์ของคุณซึ่งไม่ถือว่าเป็นการชั่วคราว (เช่นโฟลเดอร์ / proc หรือ / sys)

ตอนนี้คุณมีมุมมองที่สะอาดของโฟลเดอร์รากของคุณคุณก็สามารถคัดลอกไปยังไดรฟ์สำรองของคุณโดยใช้มาตรฐานหรือcp rsyncบางสิ่งบางอย่างตาม:

cp -R /mnt/drive /mnt/backupdrive

วิธีนี้จะช่วยแก้ปัญหาที่คุณกล่าวถึง:

  • คุณไม่ได้รับการสอบถามซ้ำเนื่องจากดิสก์สำรองไม่ได้ติดตั้งอยู่ภายในไดรฟ์ (มุมมอง)
  • คุณไม่พลาดไฟล์สำคัญใด ๆ เพราะคุณใช้ไฟล์เหล่านี้หมด

ดูเพิ่มเติม: man mount (8)


6
ระวังด้วยวิธีนี้คุณสามารถคัดลอกไฟล์ที่กำลังเขียนเช่นฐานข้อมูล ฉันขอแนะนำให้เรียกใช้สคริปต์เพื่อถ่ายโอนฐานข้อมูลในไฟล์แยกต่างหากก่อนที่จะคัดลอกไฟล์ ตัวอย่างเช่นสำหรับ MySQL คุณสามารถใช้ mysqldump
Marco Martinelli

10

ใน Linux ทุกอย่างเป็นไฟล์ เป็นไปได้ผ่าน rsync แต่มีสิ่งที่ต้องระวังที่ยากที่สุดในการหลีกเลี่ยง

คุณควรคิดถึงการเรพลิเคทก่อนโดยเฉพาะกับฐานข้อมูล และนี่เป็นความคิดที่ดีในการตั้งค่าพร็อกซี / โหลดบาลานเซอร์หน้าเซิร์ฟเวอร์หลักของคุณดังนั้นคุณสามารถสลับไปมากับเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์มิเรอร์ระหว่างการเปลี่ยนแปลงได้อย่างง่ายดาย

ในระดับฮาร์ดแวร์สถานการณ์ที่ดีที่สุดคือการมีเซิร์ฟเวอร์เหมือนมิเรอร์ในอีกด้านหนึ่งโดยมีพอร์ตอีเธอร์เน็ตจำนวนเดียวกันเค้าโครง hdd เดียวกันและอื่น ๆ ทุกสิ่งที่แตกต่างแสดงถึงความต้องการการเปลี่ยนแปลงการกำหนดค่าระบบ

เช่นถ้าคุณมีสองพอร์ต eth คุณต้องการตรวจสอบให้แน่ใจว่าการกำหนดค่าเครือข่ายไฟร์วอลล์และอื่น ๆ ตรงกับชื่ออินเตอร์เฟสบนเซิร์ฟเวอร์ทั้งสองและในกรณีที่มันแตกต่างกันคุณต้องเปลี่ยนการกำหนดค่าหลังจาก rsync หรือเปลี่ยนชื่ออุปกรณ์ในวินาที เซิร์ฟเวอร์ (ปลายทาง)

เหมือนกับเค้าโครงพาร์ติชัน คุณควรสร้างพาร์ทิชันเดียวกับบนเซิร์ฟเวอร์หลักของคุณ แต่ถ้าคุณสร้างมันขึ้นมาใหม่คุณจะต้องจบด้วย UUID ที่แตกต่างกันดังนั้นคุณจะต้องเปลี่ยน fstab, grub, mdadm (หาก soft-raid เกี่ยวข้อง) และอื่น ๆ .

แต่ก็มีหลายสิ่งหลายอย่างที่อาจผิดพลาดได้เช่นฐานข้อมูลซึ่งอาจไม่สอดคล้องกันหากไม่หยุดก่อนหน้านี้ (ก่อนที่จะทำ rsync)

กลยุทธ์ที่ดีที่สุดคือเตรียมฮาร์ดแวร์และระบบไฟล์ (พาร์ติชัน) ก่อนเพื่อให้ตรงกับการกำหนดค่าเซิร์ฟเวอร์หลัก จากนั้นติดตั้ง parititons ว่างเปล่าผ่านระบบตัวกลาง (เช่น live CD พร้อม ssh-server ที่ติดตั้งชั่วคราว) คุณสร้างเปล่า / proc, / dev, / sys แล้ว rsync ส่วนที่เหลือเช่น:

rsync -avz -H --delete /etc /bin (...and so on) destserver:/mnt/yourrootfs/

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

คุณอาจลองติดตั้งระบบใหม่ (ด้วยเวอร์ชันเดียวกับที่คุณใช้บนเซิร์ฟเวอร์หลักของคุณ) จากนั้นปิดเครื่องแล้วติดตั้งผ่านระบบอื่นระบบชั่วคราว (เช่น live cd) จากนั้นแทนที่อะไรก็ได้ที่ไม่ใช่ / proc, / sys, / dev และ / boot ด้วย rsync

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


ฐานข้อมูล Re: หากคุณมี abstractions ของระบบไฟล์ที่เหมาะสมในสถานที่ (เช่น LVM) คุณอาจสามารถใช้ snapshot ที่สอดคล้องกันของไดรฟ์โดยไม่ต้องทำการจำลองฐานข้อมูลเต็มรูปแบบ อย่างไรก็ตามสิ่งนี้ต้องการให้ฐานข้อมูลของคุณkill -9ปลอดภัยมิฉะนั้นอาจไม่สามารถกู้คืนได้ ฐานข้อมูลที่ดีควรจัดการกับสถานการณ์นั้น แต่จำนวนผลิตภัณฑ์ที่น่าแปลกใจไม่ได้ (หรือแย่กว่านั้นพวกเขาเกือบจะกู้คืนได้เสมอ แต่ล้มเหลวหนึ่งครั้งในดวงจันทร์สีน้ำเงินเมื่อคุณต้องการให้มันทำงานจริง ๆ ) ดังนั้นในทางปฏิบัติการจำลองแบบอาจน่าเชื่อถือกว่าอยู่ดี
เควิน

5

สิ่งที่คุณต้องการคือการคืนค่า คุณจะต้องทำการทดสอบเป็นประจำ


Linode มีบริการสำรองข้อมูล สแน็ปช็อตสามารถทำได้ตามกำหนดเวลาที่กำหนดไว้ล่วงหน้าที่ จำกัด หรือด้วย API

ข้อได้เปรียบของการสำรองข้อมูลตามสแน็ปช็อตคือมีจุดในเวลาที่ชัดเจนเนื่องจากข้อมูลไม่เปลี่ยนแปลงในขณะที่ทำสำเนา ภาพรวมสามารถคืนค่าไปยังโฮสต์อื่นซึ่งเป็น Linode ใหม่ในกรณีนี้ได้อย่างง่ายดาย


ฉันไม่เห็นอะไรเลยเกี่ยวกับการตรวจสอบให้แน่ใจว่าข้อมูลสำรองเหล่านั้นยังคงใช้งานได้เช่น Linode ล้มละลาย
ทำเครื่องหมาย

ฉันค้นพบเกี่ยวกับบริการสำรองข้อมูลของ Linode ในขณะที่พิมพ์หนึ่งในการแก้ไขคำถามของฉันและฉันได้พูดคุยกับเพื่อนร่วมงานของฉันและเราไปหามัน มันแก้ไขวิกฤติทันทีของเรา แต่เราจะพยายามหาวิธีเก็บข้อมูลในบ้านของเราเองเช่นกัน ดังนั้น + สำหรับการนำขึ้นแสดงว่าพวกเขามีบริการนั้นฉันไม่รู้เมื่อฉันโพสต์ครั้งแรก แต่การกู้คืนมีปัญหาดังต่อไปนี้: หากเซิร์ฟเวอร์ของเราถูกกำหนดค่าผิดพลาดซึ่งเป็นลูกหมากฝรั่งและที่แขวนสายเราไม่จำเป็นต้องเรียกคืนมันไปสู่สถานะที่กำหนดไว้ในลักษณะเดียวกัน เราต้องการข้อมูลที่เราชื่นชอบ
Sandra

ฉันได้เขียนเพิ่มเติมเกี่ยวกับการส่งออกข้อมูลสำรองนี้ไปยังที่เก็บข้อมูลอื่นด้วยหากเหมาะสมกับจุดประสงค์การกู้คืนและโดเมนที่ล้มเหลวของคุณ แต่ฉันก็ทิ้งมันไว้สั้น ๆ แผนความต่อเนื่องทางธุรกิจที่ดีซึ่งการสำรองข้อมูลเป็นเพียงส่วนหนึ่งของการระบุและจัดการกับความเสี่ยงดังกล่าว
John Mahowald

1

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


1

รันระบบของคุณบน ZFS จากนั้นคุณสามารถถ่ายภาพอะตอมได้ทันทีโดยใช้บางสิ่งที่คล้ายกับ:

# zfs snap -r tank@name-of-backup

ที่tankใดก็ตามที่ชื่อ ZFS พูลของคุณ สแนปชอตนี้รับประกันว่าจะเป็นสแนปช็อตแบบทันทีทันเวลาของระบบไฟล์และระบบไฟล์ลูกทั้งหมด

เมื่อคุณสร้าง snapshot คุณสามารถถ่ายโอนไปยังโฮสต์อื่นใช้และzfs sendssh


0

ฉันคิดว่ามันขึ้นอยู่กับสิ่งและที่คุณใช้เซิร์ฟเวอร์ด้วยคำสั่ง linux ภายในเป็นไปไม่ได้คุณต้องเลียนแบบข้อมูลและไลบรารีที่สมบูรณ์ หากคุณรันบน vmware และกำหนดค่าไว้อย่างดีจะให้การโยกย้ายแบบสด มิฉะนั้นคุณต้องใช้เครื่องมือของบุคคลที่สาม หวังว่านี่จะช่วยคุณได้ ข้อมูลอ้างอิงเพิ่มเติมฉันจะสำรองข้อมูลเซิร์ฟเวอร์สดได้อย่างไร

Rsync เป็นคำสั่งที่ดีในการซิงค์ข้อมูลระหว่างเซิร์ฟเวอร์


0

มี 2 ​​วิธีแก้ปัญหาที่คุณไม่จำเป็นต้องพึ่งพา (อีกต่อไป) สำหรับบิตที่ขาดหายไปและขาดไอเท็มหนึ่งรายการออกจากรายการของคุณเนื่องจากรายการตรวจสอบที่ไม่สมบูรณ์หรืออาจเป็นเพราะบางสิ่งที่ร้อนแรงมองข้าม

ประการแรกหากคุณย้ายสิ่งนี้ไปยังแพลตฟอร์มที่มีการควบคุมเพิ่มเติมเกี่ยวกับแพลตฟอร์มฮาร์ดแวร์พื้นฐานคุณสามารถถ่ายภาพสแนปชอตของไฟล์ทั้งหมดในขณะที่เซิร์ฟเวอร์กำลังทำงาน ตัวอย่างเช่นบน AWS คุณสามารถจับภาพดิสก์ EBS และจ่ายเฉพาะส่วนต่างเมื่อคุณทำสแนปชอตอื่นในภายหลัง

ประการที่สองฉันแนะนำให้สคริปต์การตั้งค่าเซิร์ฟเวอร์ที่สมบูรณ์ของคุณด้วยระบบการจัดการการกำหนดค่าเช่น Ansible นี่จะ

  • เอกสารทุกอย่างที่คุณได้กำหนดค่าในการควบคุมแหล่งที่มา

  • ช่วยให้คุณทดสอบการสร้างเซิร์ฟเวอร์ใหม่จากการสำรองข้อมูลหรือโลหะเปลือยเพื่อให้แน่ใจว่าสคริปต์ของคุณทันสมัย

  • อนุญาตให้คุณรันสคริปต์อีกครั้งบนระบบปฏิบัติการที่ใหม่กว่าซึ่งโดยปกติจะมีการเปลี่ยนแปลงเล็กน้อย


1
ปรากฎว่าคุณสามารถทำ snapshots บน Linode ได้เช่นกัน ฉันจะตรวจสอบ Ansible! นั่นเป็นหัวข้อด้านที่ฉันต้องการรู้ แต่มีอะไรทำนองนั้น - และฉันไม่เคยได้ยินเรื่องนี้ [ฉันหมายถึงฉันเคยได้ยินเกี่ยวกับอุปกรณ์สวมบทจากหนังสือ Hainish ที่ยอดเยี่ยม] - เยี่ยมมาก!
Sandra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.