Thảo luận: Tôi backup 5TB dữ liệu thế nào?

Discussion in 'Thảo Luận Chung' started by xmenvn2510, Jun 26, 2020.

Thread Status:
Not open for further replies.
  1. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Xin chào tất cả anh em!

    Đêm đã khuya, hà nội tuy đẹp nhưng nóng như cái lò tôn. Bất chợt một cơn mưa rào về đêm làm lòng tôi xao xuyến.
    Sau khi vừa giải quyết nỗi buồn (đi ẻ) và chát cùng cu @Nai , chắc cu ấy giờ này đã ngủ rồi.
    Men tôi quyết định lên forum chém gió, tuy nhiên cũng chẳng được mấy mống online.

    Chắc anh em chưa vợ còn đang lang thang tìm tình yêu vẫy gọi.
    Anh em đã vợ giờ chắc cũng đang thăng hoa.
    Anh em thiếu tiền như tôi thì đang cày đêm. Hehe.

    Lòng vòng vậy thôi, giờ xin phép đi vào chủ đề chính. Tôi backup 5TB dữ liệu thế nào?
    Tôi có 5TB dữ liệu: chủ yếu gồm file dạng (hình ảnh, mini clip, some file lung tung apk android), nó đang lưu tại 1 máy chủ chạy chính cũng khá êm.

    Nó cung cấp dữ liệu tĩnh cho các trang web khác của tôi. Nó mà sập hoặc cụ đi, là dàn site theo nó cũng mất.

    Sau nhiều ngày suy nghĩ, tôi quyết định đặt mua 1 máy chủ dự phòng. Backup toàn bộ dữ liệu qua đó. Để tránh điều xấu nhất khi máy chủ lỗi hoặc nặng là hỏng ổ cứng.

    Và quan trọng nhất là nó phải backup tự động chứ? Tất nhiên rồi. Tự động nhé.

    Có 2 cái tên anh em cần nhớ rõ là máy chủ chínhmáy chủ dự phòng nhé. Tránh nhầm lẫn khi đọc tiếp.

    Post lên diễn đàn để thảo luận cùng anh em, biết đâu mọi người có giải pháp còn hay hơn.


    Các bước quan trọng cần xác định như sau:

    1. Đặt mua máy chủ dự phòng với dung lượng ổ đĩa cứng lớn hơn hoặc bằng ổ đĩa máy chủ chính ban đầu. (cái này a em tự hiểu nha)
    2. Clone toàn bộ dữ liệu qua máy chủ dự phòng.
    - Ở bước này mình suy nghĩ 2 vấn đề. Backup realtime hay chỉ backup sau 1 vài giờ.
    Realtime: cơ chế đồng bộ tức thời giữa hai máy chủ, có thể delay 1 vài giây.
    2.1. Backup: master to master. (là kiểu backup dữ liệu mà mọi thay đổi từ hai máy chủ đều được cập nhật như nhau)
    2.2 . Backup : master to slave (là kiểu backup dữ liệu mà mọi thay đổi từ máy chủ ban đầu đều được cập nhật vào máy chủ dự phòng)
    Tôi quyết định chọn cơ chế master to slave và backup sau 1 vài giờ chỉ định theo ý muốn, vì tôi chỉ cần vậy thôi.

    3. Tiến hành chi tiết.
    Mình thường dùng HĐH centos, giờ thì bắt đầu.

    Cài đặt các công cụ cần thiết.
    3.1
    Rsync – Công cụ đồng bộ dữ liệu hiệu quả.
    Rsync được cài đặt dễ dàng với một dòng lệnh:
    Code:
    yum install rsync -y
    3.2
    SSH Keys - Tạo SSH Keys copy dữ liệu giữa 2 máy chủ không cần mật khẩu root. (không cần mật khẩu đăng nhập)
    SSH Keys là một phương thức xác thực đăng nhập với máy chủ qua SSH bằng việc đối chiếu giữa một cặp keys, bao gồm một khóa riêng tư (private key) và khóa công khai (public key) tương ứng. SSH Keys sử dụng giao thức xác thực challenge-response mà trong đó một bên trình bày một câu hỏi – challenge và một bên khác phải cung cấp một câu trả lời hợp lệ – response để được chứng thực.

    Thông thường, bạn đăng nhập VPS thông qua username root và password tự động sinh ra do nhà phát hành cung cấp. Bạn có thể mất quyền truy cập VPS nếu để lộ mật khẩu hay bị dò tìm mật khẩu qua Brute Force Attack. Do đó, việc sử dụng SSH Keys sẽ bảo mật hơn rất nhiều so với phương pháp đăng nhập dùng mật khẩu truyền thống.

    Có thể hiểu, Private Key là chìa khóa còn Public Key là ổ khóa.


    Thực hiện bước này trên cả hai máy chủ.

    Lưu ý: khi được hỏi passphrase, nên nhấn phím Enter để trống, tránh phải nhập thêm mật khẩu một lần nữa khi sử dụng key. Đại khái enter 3 lần.
    Code:
    ssh-keygen -t rsa -b 2048
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): #nơi lưu key
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): #mật khẩu cho private key
    Enter same passphrase again: #xác nhận lại mật khẩu cho private key
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    
    Code:
    # mkdir ~/.ssh/
    # nano ~/.ssh/authorized_keys
    
    Copy toàn bộ nội dung Public key (dạng ssh-rsa AAAA...) chèn thêm phía cuối file. Nhấn Ctrl+O để lưu lại nội dung và Ctrl+X để thoát khỏi editor.

    Bật chế độ đăng nhập bằng SSH Keys: kích hoạt (uncomment) các tham số sau trong SSH Config tại /etc/ssh/sshd_config
    Code:
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    
    Sau đó, khởi động lại SSH Service

    # service sshd restart
    3.3
    Copy public key qua máy chủ dự phòng. Quan trọng nhất là bước này vì chỉ làm 1 lần nhưng cần lưu ý.
    Tại máy chủ chính:
    Code:
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip-máy-chủ-dự-phòng "-p 22"
    
    Bạn chọn yes, gõ chữ yes theo đúng yêu cầu nhé.
    Nhập mật khẩu root của máy chủ dự phòng là xong.

    Chú ý: -p 22 là port ssh thông thường, mình thì lại để port khác để tránh scan Brute Force Attack. Nếu anh em đổi thì thay bằng port đó nhé.

    3.4.
    Cài đặt linux screen.
    Code:
    yum install screen -y
    
    Tại sao phải cài nó?
    Đơn giản vì, Screen Linux là chương trình giúp lập trình viên:

    • Mở nhiều cửa sổ shell từ một terminal command để thực thi nhiều lệnh cùng lúc: chạy lệnh đa nhiệm.
    • Giữ Shell hoạt động kể cả khi ngắt kết nối (mất điện, rớt mạng, hoặc giữ một chương trình chạy trong thời gian dài).
    • Khôi phục lại kết nối nhưng vẫn giữ phiên làm việc của shell từ bất kỳ máy nào.

    3.5
    Copy dữ liệu bắt đầu.
    Mình có thư mục dữ liệu là datamedia (/home/datamedia), giờ mình sẽ copy qua máy chủ dự phòng.
    Tại máy chủ chính.

    Code:
    screen -S name1
    

    Code:
    rsync -avh   /home/datamedia  root@ip-máy-chủ-dự-phòng:/home/  -e "ssh -p 22"  --info=progress2
    
    Nhấn Ctrl + A +D để thoát khỏi màn hình screen, cho nó chạy tự động thôi.
    --info=progress2; Hiển thị chi tiết nội dung đang copy.
    Tìm hiểu chi tiết về rsync, mình sẽ không nói ở đây. Anh em cần thì cùng thảo luận nhé.

    Chà chà, nó bắt đầu chạy, do dữ liệu khá lớn nên khi chạy lần đầu tiên mình mất đến 36h do Ổ cứng HDD, khi sử dụng hai máy chủ ssd thì thời gian chỉ còn 5h. Băng thông máy chủ là không giới hạn nên cứ thoải mái.

    Quá trình copy nhanh hay chậm phụ thuộc vào nhiều yếu tố, cổng mạng, ổ đĩa SSD hay HDD, CPU và RAM nhàn rỗi. Hoàn thành backup.
    Mình muốn backup định kỳ 1h/1 lần và chỉ cập nhật file mới thì như sau.
    Code:
    screen -S name1
    
    Code:
    while true; do rsync --ignore-existing -avh   /home/datamedia  root@ip-máy-chủ-dự-phòng:/home/  -e "ssh -p 22"  --info=progress2; sleep 3600; done
    

    Nhấn Ctrl + A +D để thoát khỏi màn hình screen. Nó sẽ tự động backup khi có dữ liệu mới sau 3600s = 1h.

    Cập nhật dữ liệu mới thì nhanh hơn rất nhiều so với lúc copy dữ liệu lần đầu tiên, thường chỉ mất 15p - 20p, nó sẽ sleep và sau 3600s lại tiếp tục.

    Bạn có thể thay đổi giá trị này tùy thích, để 1s cũng được.

    Bài viết trên sử dụng khá nhiều kiến thức nếu bạn mới tìm hiểu về linux, các từ khóa cần tìm hiểu trên google tham khảo cho bạn, hướng dẫn về rsync, hướng dẫn về screen linux, SSH Keys là gì, copy dữ liệu giữa hai máy chủ không cần mật khẩu....

    Bài viết xin được kết thúc. Xin mời anh em thảo luận và chém gió.

    Bài viết trên thuộc bản quyền cafemmo. Anh em copy đi đâu thì nhớ nhé.

    Chúc anh em nhiều điều tốt lành.
     
    nhngviet, congloi, CSGO and 15 others like this.
  2. Leo

    Leo Tân Thủ Thôn

    Em gà mờ chỉ ngồi đọc trên mạng hướng dẫn nên cũng mò ra cách làm y như bác :D cũng dùng rsync để tự động backup sang con khác sau 1 giờ, có đọc cái master to master mà không biết làm :D
     
    xmenvn2510 likes this.
  3. Trí Mén

    Trí Mén Moderator Staff Member

    Em crawl = c# trên win rồi rsync lên centos đây
     
    xmenvn2510 likes this.
  4. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Nó không khó nhưng lí do e cần master to master là gì.
     
  5. Leo

    Leo Tân Thủ Thôn

    Em dùng load balance (dịch vụ ngoài, ko phải em tự cài đặt), em add 2 cái vps vào nhưng khổ cái là khi đăng nhập quản trị thì không biết đang ở trong cái nào, nó tự động chuyển đến 1 trong 2 cái, thế nên cần cái master to master để sửa nội dung ở đâu bên kia cũng update liền đó bác
     
  6. money

    money Hương Chủ

    Khúc dạo đầu viết như ký sự check hàng ấy nhỉ. Chắc cũng là đồng dzâm Thiên Địa cả.
     
    xmenvn2510 likes this.
  7. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Thớt hay, đã update vô sitemap cho ae theo dõi :v
     
    xmenvn2510 likes this.
  8. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Keke. A chỉ được cái nói đúng.
     
  9. Nai

    Nai MiddleMan Staff Member

    EM cũng dùng cách như anh mà sao backup máy chục GB nó cũng bấy nhiêu đó thời gian nhỉ.? Hay là do chủ yếu là lệnh screen,
    Chắc hôm sau em viết ký sự "Tôi đã di chuyển vài chục website spam vài tháng 1 lần như thế nào?" quá
     
  10. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Lệnh screen nó không giúp nhanh em à, nó chỉ là ẩn để mình làm việc khác. Giống như e làm việc với nhiều tab của trình duyệt đó.
    Quá trình copy nhanh hay chậm phụ thuộc vào nhiều yếu tố, cổng mạng, ổ đĩa SSD hay HDD, CPU và RAM nhàn rỗi.

    Lệnh rsync của em thế nào? Cho a xem nhé! Hehe.{big_smile}
     
  11. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    E có thể thêm localtion, qui định nếu đăng nhập thì chỉ chuyển đến 1 trong 2 cái vps thuộc hệ thống load balance.
     
  12. Nai

    Nai MiddleMan Staff Member

    Dạ, ý em là lệnh screen giúp em chia ra nhiều thư mục, data để backup 1 lần, thay vì làm lần lượt. Kiểu multi thread đó anh
     
  13. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Uh. Nhiều lúc e nói , a khó hiểu quá.
     
  14. Nai

    Nai MiddleMan Staff Member

    Tại em nói chưa rõ mà, he he. Mà có phải screen anh làm như vậy ko mà nó nhanh vậy anh
     
  15. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    à. A nói bên trên rồi đó.
     
    Nai likes this.
  16. congloi

    congloi Sơ Nhập Giang Hồ

    em cũng làm giống bác có điều bước cuối em cho chạy crojob 1h 1 lần chứ ko chạy sleep trên terminate
     
    xmenvn2510 likes this.
  17. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Cron cũng dc e ah. Dùng screen thì e có thể xem kết quả trực tiếp và theo dõi dễ hơn.
     
    congloi likes this.
  18. Phan Thị

    Phan Thị Bang Chúng

    Làm sao để copy key nếu máy chủ backup cũng dùng ssh key nhỉ

    Code:
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip-máy-chủ-dự-phòng "-p 22"
    
     
    Last edited: Oct 21, 2021
  19. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Cứ làm như bình thường. Có lỗi gì chụp ảnh lại nhé.
     
  20. Phan Thị

    Phan Thị Bang Chúng

    Làm sao để copy key nếu máy chủ backup cũng dùng ssh key nhỉ. Mình gõ thiếu.
     
Thread Status:
Not open for further replies.