Làm cách nào để sao lưu máy chủ Linode đang chạy?


21

Chúng tôi muốn sao lưu mọi thứ trên máy chủ Debian của chúng tôi đang chạy từ xa ở phía bên kia của thế giới (được lưu trữ bởi Linode) mà không cần tắt nó.

Hệ thống này đang chạy shell, email, XMPP / prosence và web, với một vài thiết lập nginx đơn giản.
Chúng tôi muốn sao lưu các tập tin liên quan đến những điều đó để được an toàn. Ví dụ, các tập tin người dùng đã lưu trữ trong thư mục nhà của họ.

Chúng tôi không cần phải sao chép chính xác thiết lập hiện tại wrt mỗi tệp / etc; thay vào đó, lý do chúng tôi thậm chí thực hiện sao lưu ở vị trí đầu tiên là vì vậy chúng tôi có thể chuyển tất cả sang thiết lập mới (phiên bản Debian mới hơn vẫn còn trên Linode).

Tôi thấy rằng Linode cung cấp một dịch vụ sao lưu. Nhưng về lâu dài, chúng ta cũng cần các bản sao lưu của riêng mình, ở đây, trong trường hợp chúng bị hỏng hoặc có điều gì đó kỳ lạ xảy ra.

Lý do câu hỏi này tồn tại là khi tôi đã thử tạo bản sao lưu trong quá khứ, tôi đã tiếp tục mắc một trong hai lỗi sau:

  • Tôi đã đi "OK, tôi sẽ chỉ sao chép /và mọi thứ bên dưới nó" và sau đó bị mắc kẹt trong một vòng lặp vô hạn kỳ lạ vì ổ đĩa mà tôi đã sao chép được gắn vào / media / backup và nó đang sao chép chính nó [obv vấn đề cụ thể đó không áp dụng được ở đây vì chúng tôi sẽ sao lưu qua rsync hoặc tương tự] hoặc nó đã bị mắc kẹt khi cố gắng sao chép một số nội dung "còn sống" trong / Proc hoặc / var hoặc bất cứ điều gì, như cố gắng theo kịp các nhật ký luôn thay đổi, hoặc là
  • Tôi đã đi "OK, tôi sẽ chỉ lấy tối thiểu những gì chúng tôi cần, hmm, thư mục nhà của mọi người và thư mục máy chủ web của chúng tôi (tất cả đều ở dưới /var) và hãy lấy một bản sao /etcvà tất cả các thư cũ trong / var / vmail "và sau đó tôi đã vô tình làm hỏng các quyền hoặc dấu thời gian của tệp (sẽ đảm bảo rằng tôi không sao lưu các tệp unix vào ổ đĩa FAT) hoặc quên một cái gì đó (" oh, bắn đi, tôi có một số tập lệnh tùy chỉnh trong / usr / local / bin mà tôi không bao giờ lưu trữ ở bất cứ nơi nào khác, tôi đã quên lấy chúng, đoán chúng đã biến mất ngay bây giờ ").

Vì vậy, obv sao chép toàn bộ ổ đĩa thẳng lên dẫn đến cạm bẫy và sao chép thư mục có chọn lọc dẫn đến cạm bẫy. Tôi muốn biết làm thế nào để làm điều đó đúng.

Câu hỏi về lỗi máy chủ Điều gì cần thiết cho một hệ thống sao lưu hoàn chỉnh? bao gồm triết lý và thực hành tốt, nhưng tôi đang tìm kiếm những chi tiết cụ thể hơn về:

  • Mà thư mục sao tôi cần phải sao chép và đó làm tôi loại trừ (cho rằng đó là một hệ thống hiện đang chạy & và phục vụ lên một wiki, XMPP chat, email - với những thông điệp mới đến trong khi công việc sao chép đang chạy)
  • Những thuộc tính tệp nào như tem thời gian & chủ sở hữu & nhóm tôi cần phải trình bày và làm cách nào để làm điều đó? ← Tôi nghĩ rằng tôi có thể tự trả lời một nửa câu hỏi này bằng một cái gì đó giống như kiểu um um rsync -HXaz. Các -zobv không thực sự liên quan đến câu hỏi "tôi phải giữ gìn"

Rất nhiều lời khuyên sao lưu mà tôi thấy, như sử dụng dd, dường như giả định rằng ổ đĩa không được đếm và không sử dụng. Nhưng tôi không phải loại trừ "sống" thư mục như / proc và một số các thư mục con trong / var (tuy nhiên, một số công cụ dưới / var Tôi biết chúng tôi chắc chắn làm cần thiết phải giữ) và / gắn kết? Còn điều gì khác mà tôi cần phải suy nghĩ trong tình huống này? Sau đó, tôi đoán rằng tôi có thể đánh hơi nó bằng rsync và sử dụng một loạt các --excludecờ.

Hoặc có những ý tưởng tốt hơn, đặc biệt là những người thân thiện với FOSS?


Tôi nhận được rằng câu hỏi này dường như rất cơ bản nhưng đã chạy loại hệ thống một thời gian dài như vậy tôi đã sai lầm này lên một lần nữa và một lần nữa và tôi không bao giờ thực sự grokked làm thế nào để làm điều đó đúng
Sandra


Đối với giá trị của nó, cp -r -asẽ bảo tồn càng nhiều thuộc tính tệp càng tốt khi sao chép tệp (dựa trên những gì hệ thống tệp đích hỗ trợ). Các -alá cờ chỉ thị cpđể duy trì các thuộc tính. Để sao chép qua mạng hoặc qua hệ thống tệp không hỗ trợ các thuộc tính bắt buộc, tôi tar -cluôn làm việc cho tôi mặc dù tôi tin rằng có một số trường hợp cạnh mà nó không bao gồm và đặc biệt tôi tin tarlà mặc định phụ thuộc vào tên người dùng phù hợp với cả hai hệ thống. Điều đó nói rằng, tôi đã sao chép toàn bộ hệ thống Linux (chưa từng có) bằng cách sử dụng tarmà không có bất kỳ vấn đề rõ ràng nào.
Micheal Johnson

Ngoài ra có bất kỳ lý do cụ thể tại sao cần phải sao chép hệ thống trực tiếp?
Micheal Johnson

Sử dụng dịch vụ chụp nhanh của linode?
ivanivan

Câu trả lời:


15

Vì vậy, bạn muốn sao lưu tất cả các ổ đĩa của bạn mà không có tất cả những lỗi khó chịu và cũng lọc ra tất cả / Proc và các thư mục tạm thời khác?

Một tùy chọn là gắn thư mục gốc vào thư mục khác trong hệ thống tệp, như thế này:

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

Điều này sẽ cung cấp cho bạn tất cả các tệp có trên ổ đĩa của bạn không được coi là tạm thời (như các thư mục / Proc hoặc / sys).

Bây giờ bạn đã có một cái nhìn rõ ràng về thư mục gốc của mình, bạn có thể sao chép nó vào ổ đĩa sao lưu của mình bằng cách sử dụng tiêu chuẩn cphoặc rsync. Một cái gì đó dọc theo dòng:

cp -R /mnt/drive /mnt/backupdrive

Điều này giải quyết cả hai vấn đề nêu của bạn:

  • Bạn không nhận được đệ quy, vì đĩa sao lưu không được gắn trong ổ đĩa (quan điểm)
  • bạn không bỏ lỡ bất kỳ tập tin quan trọng, bởi vì bạn đang dùng tất cả chúng

Xem thêm: man mount (8)


6
Xem ra, với giải pháp này, bạn có thể sao chép các tệp đang được viết, chẳng hạn như cơ sở dữ liệu. Tôi khuyên bạn nên chạy một tập lệnh để kết xuất cơ sở dữ liệu trong một tệp riêng trước khi sao chép các tệp. Ví dụ với MySQL, bạn có thể sử dụng mysqldump.
Marco Martinelli

10

Trong Linux mọi thứ đều là một tập tin. Có thể thông qua rsync, nhưng có một số điều cần chú ý, đó là (tốt nhất) khó có thể đi lại được.

Bạn nên nghĩ về việc nhân rộng trước, đặc biệt là đối với cơ sở dữ liệu. Ngoài ra, đây là một ý tưởng tốt để thiết lập bộ cân bằng proxy / tải trước máy chủ chính của bạn, vì vậy bạn có thể dễ dàng chuyển đổi qua lại với các máy chủ chính và máy chủ nhân bản của mình trong quá trình chuyển đổi.

Ở cấp độ phần cứng, tình huống tốt nhất sẽ là có máy chủ giống như gương ở một mặt khác, với cùng số cổng ethernet, cùng bố cục hdd, v.v. Tất cả mọi thứ khác nhau đều ngụ ý sự cần thiết phải thay đổi cấu hình hệ thống.

tức là nếu bạn có hai cổng eth, bạn muốn đảm bảo rằng cấu hình mạng, tường lửa, v.v ... khớp với tên giao diện trên cả hai máy chủ và trong trường hợp nó khác nhau, bạn cần thay đổi cấu hình sau rsync hoặc thay đổi tên thiết bị trên giây (đích) máy chủ.

Tương tự với bố cục phân vùng. Bạn nên tạo các phân vùng giống như trên máy chủ chính của mình, nhưng nếu bạn tạo chúng từ đầu, bạn sẽ kết thúc bằng các UUID khác nhau, vì vậy bạn sẽ cần thay đổi fstab, grub, mdadm (nếu có liên quan đến đột kích mềm), v.v. .

Nhưng, cũng có nhiều thứ có thể sai, như cơ sở dữ liệu, có thể không nhất quán nếu không được dừng trước đó (trước khi thực hiện rsync).

Chiến lược tốt nhất sẽ là trước tiên chuẩn bị phần cứng và hệ thống tập tin (phân vùng) - để phù hợp với cấu hình của máy chủ chính. Sau đó gắn paritit trống qua hệ thống trung gian (như CD trực tiếp với ssh-server được cài đặt tạm thời). Bạn tạo trống / Proc, / dev, / sys và sau đó rsync phần còn lại, như vậy:

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

Sau đó, bạn cần cài đặt grub trên thiết bị và làm việc với cấu hình, để làm cho nó có khả năng khởi động, thay đổi cấu hình mạng, fstab và các thứ khác được đề cập trước đó.

Bạn cũng có thể thử cài đặt hệ thống mới (với cùng phiên bản bạn đang sử dụng trên máy chủ chính của mình), sau đó tắt nguồn, gắn kết với hệ thống khác, tạm thời (như cd trực tiếp), sau đó thay thế mọi thứ khác ngoài / Proc, / sys, / dev và / boot với rsync.

Nhưng đó chỉ là ý tưởng chung. Mọi thứ có thể phức tạp tùy thuộc vào những gì bạn thực sự có trên máy chủ này, thiết lập cấu hình, mạng và phần cứng của bạn là gì. Và vào cuối ngày, điều này có thể thực sự khó khăn hoặc không thể thực hiện được nếu không có thời gian chết đáng chú ý.


Cơ sở dữ liệu lại: Nếu bạn có các bản tóm tắt hệ thống tập tin thích hợp (ví dụ LVM), bạn có thể chụp ảnh ổ đĩa một cách nhất quán mà không cần sao chép DB đầy đủ. Tuy nhiên, điều này đòi hỏi cơ sở dữ liệu của bạn kill -9an toàn hoặc nếu không nó có thể không phục hồi được. Một cơ sở dữ liệu tốt sẽ xử lý tình huống đó, nhưng một số lượng đáng kinh ngạc các sản phẩm không (hoặc tệ hơn, chúng hầu như luôn phục hồi, nhưng thất bại một lần trong một mặt trăng xanh khi bạn thực sự cần chúng hoạt động). Vì vậy, trong thực tế, nhân rộng có lẽ đáng tin cậy hơn dù sao.
Kevin

5

Những gì bạn thực sự muốn là khôi phục. Dù bạn làm gì, bạn phải khôi phục kiểm tra nó thường xuyên.


Linode có một dịch vụ sao lưu. Ảnh chụp nhanh có thể được thực hiện theo lịch trình được xác định trước hạn chế hoặc với API.

Một lợi thế của sao lưu dựa trên ảnh chụp nhanh là chúng cung cấp một thời điểm sắc nét, vì dữ liệu không thay đổi trong khi bản sao được tạo. Ảnh chụp nhanh cũng có thể dễ dàng được khôi phục vào một máy chủ khác, Linode mới trong trường hợp này.


Tôi không thấy gì về việc đảm bảo các bản sao lưu đó vẫn hoạt động nếu, vd. Linode bị phá sản.
Đánh dấu

Tôi đã tìm hiểu về dịch vụ sao lưu của Linode trong khi gõ một trong những chỉnh sửa cho câu hỏi của tôi và tôi đã nói chuyện với đồng nghiệp của mình và chúng tôi đã thực hiện nó. Nó đã giải quyết cuộc khủng hoảng trước mắt của chúng tôi nhưng chúng tôi sẽ cố gắng tìm cách lưu trữ dữ liệu tại nhà riêng của chúng tôi. Vì vậy, vì đã đưa ra rằng họ có dịch vụ đó, tôi đã không biết khi tôi đăng lần đầu tiên. Nhưng phục hồi có vấn đề sau: Nếu máy chủ của chúng tôi bị định cấu hình sai, một quả bóng nhai kẹo cao su và dây treo, chúng tôi không nhất thiết muốn khôi phục nó về chính xác trạng thái bị định cấu hình sai. Chúng tôi muốn dữ liệu yêu thích của chúng tôi mặc dù.
Sandra

Tôi đã viết thêm về việc xuất bản sao lưu này sang bộ lưu trữ khác nếu nó phù hợp với các mục tiêu và mục tiêu điểm khôi phục của bạn. Nhưng tôi rời đó ra là ngắn gọn. Một kế hoạch kinh doanh liên tục tốt, trong đó các bản sao lưu chỉ là một phần của, xác định và xử lý các rủi ro đó.
John Mahowald

1

Tôi đang sử dụng BackupPC cho máy chủ riêng ảo nhỏ của mình, điều này hoạt động khá tốt. BackupPC có thể sử dụng rsync dưới mui xe và hỗ trợ sao lưu đầy đủ và gia tăng. Có một cái nhìn vào nó và xem liệu nó sẽ bao gồm các yêu cầu của bạn.


1

Chạy hệ thống của bạn trên ZFS. Sau đó, bạn có thể chụp ảnh tức thời, nguyên tử bằng cách sử dụng một cái gì đó giống như:

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

nơi mà nhóm tankZFS của bạn được đặt tên. Ảnh chụp nhanh này được đảm bảo là ảnh chụp nhanh tức thời theo thời gian của hệ thống tệp và tất cả các hệ thống tệp con của nó.

Khi bạn đã tạo ảnh chụp nhanh, bạn có thể chuyển nó sang một máy chủ khác bằng cách sử dụng zfs sendssh.


0

Theo ý kiến ​​của tôi Nó phụ thuộc vào những gì và nơi bạn chạy máy chủ với lệnh linux nội bộ, điều đó là không thể, bạn phải bắt chước / ống dữ liệu và thư viện hoàn chỉnh. Nếu bạn chạy trên vmware và cấu hình tốt, nó cung cấp di chuyển trực tiếp. Hoặc nếu không, bạn phải sử dụng các công cụ của bên thứ ba. Hy vọng điều này sẽ giúp bạn. Một số tài liệu tham khảo khác Làm cách nào để tạo bản sao lưu của máy chủ trực tiếp?

Rsync là lệnh tốt để đồng bộ dữ liệu giữa các máy chủ.


0

Có 2 giải pháp khả dụng, trong đó bạn không cần phải phụ thuộc (nữa) vào các bit bị thiếu cũng như thiếu một mục trong danh sách của bạn do danh sách kiểm tra không đầy đủ hoặc có thể vì chỉ một cái gì đó nóng bị bỏ qua.

Đầu tiên, nếu bạn di chuyển cái này lên một nền tảng có thêm quyền kiểm soát đối với nền tảng phần cứng cơ bản, bạn có thể chụp ảnh đĩa của tất cả các tệp trong khi máy chủ đang chạy. Ví dụ: trên AWS, bạn có thể chụp nhanh một đĩa EBS và thậm chí chỉ trả tiền cho những khác biệt khi bạn thực hiện một ảnh chụp nhanh khác sau đó.

Thứ hai, tôi khuyên bạn nên lập kịch bản thiết lập máy chủ hoàn chỉnh của mình bằng hệ thống quản lý cấu hình, chẳng hạn như Ansible. Điều này sẽ

  • ghi lại mọi thứ bạn đã cấu hình trong kiểm soát nguồn

  • cho phép bạn kiểm tra tạo lại máy chủ từ bản sao lưu hoặc kim loại trần để đảm bảo các tập lệnh của bạn được cập nhật

  • cho phép bạn chạy lại tập lệnh trên một hệ điều hành mới hơn, thường là với những thay đổi khá nhỏ.


1
Hóa ra bạn cũng có thể chụp ảnh nhanh trên Linode. Tôi sẽ kiểm tra Ansible! Đó là một chủ đề phụ cho những gì ban đầu tôi muốn biết, nhưng một cái gì đó giống như đó và tôi chưa bao giờ nghe về nó [Ý tôi là, tôi đã nghe nói về thiết bị hư cấu từ những cuốn sách tuyệt vời của Hainish].
Sandra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.