Sao lưu và phục hồi dữ liệu trong MariaDB Server 10.4.x

30/12/2020

Sao lưu và khôi phục dữ liệu là vấn đề rất quan trọng khi quản trị cơ sở dữ liệu (CSDL), đảm bảo cho dữ liệu không bị mất mát và nếu có sự cố xảy ra thì có thể khôi phục lại trạng thái của CSDL trước khi xảy ra sự cố. Bài viết này hướng dẫn bạn sao lưu và phục hồi cơ sở dữ liệu MariaDB trên máy chủ CentOS 7.

Mục lục

1. Mô hình

2. Chuẩn bị

3. Backup – Sao lưu dữ liệu

4. Sử dụng SCP để chuyển file/folder giữa các hệ thống

5. Khôi phục dữ liệu được backup qua SSH

1. Mô hình

2. Chuẩn bị

  • 2 máy ảo CentOS 7 cài MariaDB 10.4.x, có kết nối Internet.
  • Tài khoản có thể đăng nhập vào hệ thống và có quyền sudo. Hướng dẫn dưới đây sử dụng tài khoản root.
  • Yêu cầu tối thiểu đối với các thông số trên Server:

3. Backup – Sao lưu dữ liệu

SSH vào MariaDB Server backup bằng root user

ssh [email protected]

Cú pháp:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql

username – tên người dùng có quyền sao lưu cơ sở dữ liệu
databasename – tên cơ sở dữ liệu cần sao lưu
filename – tên của bản sao dữ liệu
-$(date +%F) mốc thời gian sao lưu dữ liệu

Ví dụ 1: Tạo bản sao lưu của toàn bộ hệ thống quản lý cơ sở dữ liệu

mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p 

Ví dụ 2: Sao lưu một sơ sở dữ liệu cụ thể. Thay test bằng tên cơ sở dữ liệu bạn muốn sao lưu.

mysqldump -u root -p test --single-transaction --quick --lock-tables=false > test-backup-$(date +%F).sql

Ví dụ 3: Sao lưu một bảng duy nhất từ một cơ sở dữ liệu. Thay test bằng tên cơ sở dữ liệu chứa bảng, thay sinhvien bằng tên bảng bạn muốn sao lưu.

mysqldump -u root -p --single-transaction --quick --lock-tables=false test sinhvien > test-sinhvien-$(date +%F).sql

Phân tích các tùy chọn lệnh được sử dụng ở trên:

--single-transaction – đưa ra câu lệnh BEGIN SQL trước khi vào máy chủ
--quick – Đọc các bảng lớn theo cách không yêu cầu có đủ RAM để phù hợp với toàn bộ bảng trong bộ nhớ.
--lock-tables=false – Không khóa bảng cho phiên sao lưu.

4. Sử dụng SCP để chuyển file/folder giữa các hệ thống

SCP là viết tắt của Secure Copy là một ứng dụng sử dụng giao thức SSH thường dùng để sao chép dữ liệu từ máy linux này sang máy linux khác.

Cài đặt SCP trên Centos 7(Thực hiện trên cả 2 server)

Thường thì SCP được cài đặt sẵn trên linux, nếu chưa có sử dụng lệnh dưới để cài:

yum install scp -y
Lệnh cơ bản
  • Cú pháp:
scp source_file username@destination_host:/destination_folder

Ví dụ 1: Trên server backup chuyển file test-backup-2019-08-10.sql đến server restore

scp test-backup-2019-08-10.sql [email protected]:/root/testscp

Kiểm tra trên server restore đã nhận được file backup chưa

ls -lah

Output:

-rw-r--r--.  1 root root 2.1K Aug  3 03:32 testscp

Ví dụ 2: Chuyển nhiều file cùng lúc:

Trên server restore, tạo 1 folder chứa các file backup được chuyển đến

 mkdir test 

Trên server backup, thực hiện sao chép 2 file test-backup-2019-08-10.sqltest-sinhvien-2019-08-10.sql sang folder test vừa tạo trên server restore:

scp test-backup-2019-08-10.sql test-sinhvien-2019-08-10.sql  [email protected]:/root/test

Kiểm tra server restore đã nhận được file backup chưa

ls -lah

Output:

drwxr-xr-x.  3 root root  113 Aug  3 02:34 test
  • Chuyển cả một thư mục, sử dụng tham số -r
scp -r /var/lib [email protected]:/root/test
  • Từ server backup lấy dữ liệu trên server restore về:
 scp user@hostname:/dir_backup [dir_save] 

Ví dụ: Lấy file /root/test/test-backup-2019-08-10.sql trên server restore về và lưu lại trong file /var/testrestore

scp [email protected]:/root/test/test-backup-2019-08-10.sql /var/testrestore 

5. Khôi phục dữ liệu được backup qua SSH

Câu lệnh:

mysql -u user -p -h host database_name < backupfile.sql

user – tên tài khoản bạn dùng để khôi phục dữ liệu
host – phần hostname của tài khoản(%, localhost, IP)
database_name – tên cơ cở dữ liệu bạn muốn khôi phục vào
backupfile.sql – file dữ liệu đã sao lưu bạn dùng để khôi phục.

Ví dụ: Trên server restore khôi phục CSDL có trong test-backup-2019-08-10.sql vào CSDL test

mysql -u root -p -h localhost test < /root/test/test-backup-2019-08-10.sql

hoặc

mysql -u root -p
create database test;
source /root/test/test-backup-2019-08-10.sql;

Tham khảo các bài viết khác

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Hướng dẫn cài đặt Wireguard trên CentOS 7

Tổng quan WireGuard là giải pháp VPN miễn phí, mã nguồn mở được phát triển nhằm thấy thế giải...
30/12/2020

Script #1 : File Integrity Monitor (FIM) – Giám sát sự thay đổi của file trên Linux

Khi sử dụng một máy chủ, ta cần theo dõi tính toàn vẹn của file. Khi file bị thay đổi ta cần...
30/12/2020

Hướng dẫn add host để checkmk giám sát

Sau khi cài đặt xong check_mk thì tất nhiên chúng ta sẽ phải thêm host vào để chúng ta giám sát chúng....
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Dịch Vụ Xây Dựng Hệ Thống Peering Với Internet Exchange (IXP)
04/04/2025

Dịch Vụ Triển Khai VPN Site-to-Site & Remote Access
04/04/2025

Dịch Vụ Thiết Lập Hệ Thống Tường Lửa (Firewall)
04/04/2025

Dịch Vụ Triển Khai Hệ Thống Ảo Hóa & Cloud
04/04/2025

Dịch Vụ Triển Khai Hệ Thống Ceph
04/04/2025