Incremental backup mariadb
Tổng quan
Incremental backup là một sang sao lưu dữ liệu tăng dần so với bản backup lần đầu tiên. Trong incremental backup, bản backup đầu tiên sẽ là bản backup đầy đủ. Các bản tiếp theo sẽ chỉ lưu trữ những thay đổi so với bản đầu tiên. Điều này sẽ giúp việc sao lưu nhanh hơn và tiết kiệm bộ nhớ hơn mà vẫn đảm bảo dữ liệu đầy đủ. Đồng thời có thể hỗ trợ việc thực hiện restore được nhiều lần, đối với csdl có lượng dữ liệu lớn, hạn chế downtime cho quá trình backup và restore.
Ở bài này mình sẽ thực hiện increment backup và restore dữ liệu này sang một server khác. Các thông tin cơ bản như sau
- Hệ điều hành: Ubuntu 22.04
- Mariadb
- Server Vmware:
- Server 1: 192.168.126.139
- Server 2: 192.168.126.140
Các bước thực hiện
Cài đặt mariadb
Bước này bạn cần thực hiện ở cả 2 server vmware. Update repo của ubuntu
Thực hiện cài đặt mariadb
Thực hiện cài đặt secure cho mariadb
Nhấn Enter để xác nhận chưa có pass root do là lần cài đặt đầu tiên.
Sau đó bạn nhập password cho user root của mariadb. Ở các mục tiếp theo, bạn chọn yes hết ở tất cả các mục
Khởi động mariadb
sudo systemctl enable mariadb
Cấu hình binary logging
Tiếp theo, ta cần kích hoạt binary logging để có thể thực hiện incremental backup. Mở file cấu hình mariadb
Bỏ comment dòng log_bin và chỉnh sửa như sau:
expire_logs_days = 10
max_binlog_size = 100M
binlog_format = mixed
lưu lại file sau đó restart lại mariadb
Ta kiểm tra thử thư mục lưu binary log
Tạo database và insert dữ liệu
Ta sẽ tạo thử 1 database và insert dữ liệu vào
USE test_db;
CREATE TABLE test_tbl( my_id INT NOT NULL AUTO_INCREMENT, my_field VARCHAR(100) NOT NULL, submission_date DATE, time_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ( my_id ) );
INSERT into test_tbl (my_field) VALUES ('val1');
INSERT into test_tbl (my_field) VALUES ('val2');
INSERT into test_tbl (my_field) VALUES ('val3');
EXIT;
Thực hiện full backup
Tiếp theo, ta sẽ thực hiện backup database vừa tạo ra file sql
Trong đó --flush-logs là option giúp đóng file log binary hiện tại và tạo 1 file binary mới.
Kiểm tra số lượng file log hiện tại
Tiếp theo, ta sẽ thực insert thêm bản ghi cho database
USE test_db;
INSERT INTO test_tbl (my_field) VALUES ('val4');
INSERT INTO test_tbl (my_field) VALUES ('val5');
INSERT INTO test_tbl (my_field) VALUES ('val6');
Exit;
Thực hiện restore sang server khác
Ta sẽ thực hiện làm mới binary log cho incremental backup trước khi gửi sang server khác.
Ta sẽ sử dụng rsync để chuyển file log và file dump sang 1 server mới như sau:
rsync -av /var/log/mysql/mysql-bin.000002 192.168.126.140:/home/huantt
Thực hiện tạo database mới ở server cần restore
EXIT;
Thực hiện restore database từ file sql.
Check thử nội dung data đã restore được
SELECT * FROM test_tbl;
Thực hiện restore database từ file binary log
Tiếp tục check lượng data đã restore được
SELECT * FROM test_tbl;
Như vậy là bạn đã thự hiện xong việc restore database dạng incremental sang 1 server mới thành công.