Restore mongodb 3.2.x & 3.4.x in replica set tutorial

Sau khi backup db thì việc restore db cũng là 1 việc khá quan trọng, và cũng khá là phức tạp nếu bạn sử dụng kiến trúc replica set.

Bài viết này sử dụng kiến trúc replica set mà mình đã đề cập trong bài viết MongoDB 3.2.x, 3.4.x replica set on ubuntu 16.04 tutorial

Nhắc lại 1 chút về kiến trúc mình thiết lập:

IP Tên miền Kiểu server mongo
23.23.23.1 mongo1.appconus.com primary
23.23.23.2 mongo2.appconus.com secondary
23.23.23.3 mongo3.appconus.com arbitrator

Bây giờ, để restore db, ta có 2 cách: tự động và thủ công.

  • Tự động: dữ liệu sẽ tự động đồng bộ từ server primary sang các server secondary. Phù hợp với cục db cần restore có dung lượng nhỏ, khoảng vài trăm MB đổ lại.
  • Thủ công: ta sẽ phải restore dữ liệu vào primary, sau đó copy dữ liệu ở primary sang các server secondary. Phù hợp với cục db lớn, cỡ 1GB đổ lên.

Restore tự động

1. Tắt mongondb service trên các secondary server

2. Xoá sạch dữ liệu trên các secondary server

Nếu bạn cấu hình theo bài viết trước của mình thì thư mục chứa dữ liệu sẽ là /var/lib/mongodb. Còn không, bạn có thể kiểm tra trong file /var/mongod.conf, mục: dbPath

3. Thao tác ở primary

Ngắt các secondary khỏi replica set

Xoá db cũ

db mình cần restore có tên là db_appconus:

Restore

Mongodb cung cấp lệnh mongorestore để phục vụ việc restore db mà mình đã backup bằng lệnh mongodump.
Cú pháp:

Tham số noIndexRestore để không restore các index, lát chạy nodejs app lên nó sẽ tự đánh index.

db_appconus/ là thư mục chứa các file *.json*.bson của lệnh mongodump.

4. start các secondary server

Trên các secondary:

5. Add secondary vào replica set

Trên primary

Sau khi add, replica set sẽ tiến hành đồng bộ dữ liệu sang các secondary. Các secondary khi đồng bộ sẽ ở trạng thái STARUP_2 sau đó là RECOVERING.

Để kiểm tra, ta connect vào mongo ở secondary:

Mỗi lần show dbs, ta sẽ thấy dung lượng của db_appconus được cập nhật lên.

Restore thủ công

Các bước như sau:

  • Ngắt các secondary khỏi replica set
  • Xoá dữ liệu của các secondary
  • Restore vào primary
  • Nén thư mục dữ liệu của primary lại và copy sang các secondary, sau đó giải nén vào thư mục dữ liệu
  • Chuyển quyền truy cập cho mongodb: sudo chown mongodb:mongodb -R /var/lib/mongodb/
  • Add secondary vào replica set
    Xong.

Tham khảo: https://docs.mongodb.com/manual/tutorial/restore-replica-set-from-backup/

Lập trình và hơn thế nữa

Spread the love
  • 19
  •  
  •  
  •  
  •  
    19
    Shares

Leave a Reply

Be the First to Comment!

Notify of
avatar