Tạo bản sao lưu MySQL bằng tiện ích XtraBackup

Percona XtraSao lưu là một tiện ích để sao lưu cơ sở dữ liệu nóng MySQL.

Khi tạo bản sao lưu dữ liệu, không có bảng nào bị khóa và hệ thống của bạn tiếp tục hoạt động mà không có bất kỳ hạn chế nào.

XtraBackup 2.4 có thể tạo bản sao lưu của bảng InnoDBXtraDB и MyISAM trên máy chủ MySQL 5.11, 5.5, 5.6 và 5.7, và cả trên máy chủ percona cho MySQL с XtraDB.

Để làm việc với MySQL 8.x nên sử dụng phiên bản XtraBackup 8.x. Bài viết này sẽ chỉ nói về XtraBackup 2.4.

Ưu điểm chính XtraSao lưu Tiện ích này phù hợp để tạo bản sao lưu dự phòng cho các hệ thống có tải trọng cao. may chủcũng như đối với các hệ thống có số lượng giao dịch thấp.

Nếu tổng kích thước cơ sở dữ liệu MySQL của bạn lớn (hàng chục gigabyte), thì tiện ích tiêu chuẩn mysqldump sẽ không cho phép bạn nhanh chóng tạo bản sao lưu và việc khôi phục kết xuất sẽ mất rất nhiều thời gian.

Cài đặt

Cài đặt XtraSao lưu từ kho lưu trữ apt Percona.

Hoàn thành lệnh sau:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. Sau khi cài đặt, chạy lệnh xtrabackup -v. Vì vậy, điều quan trọng là phải đảm bảo rằng tiện ích này hoạt động chính xác trên máy chủ. Kết quả là, một cái gì đó như thế này sẽ được hiển thị trên màn hình:

xtrabackup: nhận diện các tham số máy chủ: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect - innodbflushlogattrxcommit=0xtrabackup phiên bản 2.4.20 dựa trên máy chủ MySQL 5.7.26 Linux (x8664) (mã phiên bản: c8b4056)

Tạo bản sao lưu MySQL bằng tiện ích XtraBackup

Quyền truy cập, quyền và đặc quyền 

XtraBackup sẽ có thể:

  • Kết nối với máy chủ MySQL của bạn.

  • Có quyền truy cập vào thư mục thư mục dữ liệu

  • Khi tạo bản sao lưu, có quyền ghi vào tham số đã chỉ định mục tiêu-dir mục lục.

datadir là gì?

thư mục dữ liệu là thư mục nơi máy chủ cơ sở dữ liệu MySQL Nơi lưu trữ dữ liệu. Tất cả các cơ sở dữ liệu, tất cả các bảng đều nằm ở đó. Trong hầu hết các bản phân phối. Linux Theo mặc định, thư mục này là / var / lib / mysql.

Thư mục target-dir là gì?

mục tiêu-dir - Đây là thư mục sẽ lưu bản backup.

Người dùng cơ sở dữ liệu cần có các quyền truy cập sau vào các bảng và cơ sở dữ liệu để được sao lưu:

  • BẢNG TẢI LẠI và KHÓA

  • KHÁCH HÀNG SAO CHÉP

  • TẠO KHÔNG GIAN BẢNG

  • QUY TRÌNH

  • SUPER

  • TẠO NÊN

  • CHÈN

  • CHỌN

Cấu hình 

Cấu hình XtraSao lưu được thực hiện bằng cách sử dụng các tùy chọn hoạt động giống như các tùy chọn MySQL tiêu chuẩn.

Điều này có nghĩa là gì?

Các tham số cấu hình có thể được chỉ định trên dòng lệnh hoặc trong tệp cấu hình DBMS, ví dụ như trong /etc/my.cnf.

Tiện ích XtraBackup đọc phân vùng sau khi khởi chạy [Mysqld] и [xtrabackup] từ các tập tin cấu hình MySQL. Điều này được thực hiện để tiện ích có thể sử dụng các cài đặt trong DBMS của bạn mà không cần phải chỉ định các tham số theo cách thủ công trong mỗi lần sao lưu.

Ví dụ, giá trị thư mục dữ liệu và một số thông số InnoDB Chúng tôi nhận được XtraBackup từ cấu hình DBMS của bạn.

Nếu để XtraBackup hoạt động bạn muốn ghi đè các thông số có trong phần [Mysqld], sau đó chỉ cần chỉ định chúng trong tệp cấu hình ở phần [xtrabackup]. Vì chúng sẽ được đọc sau nên mức độ ưu tiên của chúng sẽ cao hơn.

Bạn không cần phải thêm bất kỳ tham số nào vào my.cnf. Tất cả các tham số cần thiết có thể được chỉ định trên dòng lệnh. Thông thường thứ duy nhất có thể được đặt thuận tiện trong phần [xtrabackup] của bạn my.cnf là một tham số target_dir, theo mặc định chỉ định thư mục nơi các bản sao lưu sẽ được đặt. Nhưng đây là tùy chọn.

Ví dụ về chỉ định đường dẫn đến thư mục có bản sao lưu trong my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Tập lệnh sao lưu

Bạn có thể sử dụng tập lệnh sau để tạo bản sao lưu:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

Điều gì xảy ra trong quá trình thực thi tập lệnh?

Trước hết, chúng tôi xóa (xóa) thư mục mà chúng tôi sẽ lưu bản sao lưu:

rm -rf /mysql/backup.

Sau đó, sử dụng tiện ích XtraSao lưu tạo một bản sao lưu và lưu nó vào /mysql/sao lưu/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Trước đây, chúng tôi đã tạo một người dùng trong MySQL xtrabackup với những đặc quyền cần thiết. Sử dụng tham số target-dir chúng tôi chỉ định thư mục nơi lưu bản sao lưu.

Một điểm quan trọng!

Lưu ý dòng kịch bản:

xtrabackup --prepare --target-dir=/mysql/backup

Dữ liệu danh mục /mysql/sao lưu không nhất quán cho đến khi chúng được nấu chín. 

Thực tế là những thay đổi có thể xảy ra trong khi sao chép tập tin. Hoạt động xtrabackup --prepare --target-dir=/mysql/backup làm cho dữ liệu sao lưu hoàn toàn nhất quán theo thời gian.

Bạn có thể thực hiện thao tác chuẩn bị dữ liệu trên bất kỳ máy nào. Không cần phải thực hiện việc này trên máy chủ nơi đặt DBMS nguồn. Bạn có thể sao chép bản sao lưu vào máy chủ đích và chuẩn bị nó ở đó.

Điều cuối cùng chúng tôi làm là tạo một kho lưu trữ để đặt bản sao lưu của mình:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Khôi phục bản sao lưu 

Trước khi bạn có thể khôi phục bản sao lưu vào máy chủ mục tiêu, dữ liệu phải trải qua giai đoạn chuẩn bị. Xem ở trên để biết cách thực hiện việc này.

Quá trình khôi phục dữ liệu rất đơn giản. Bạn cần trích xuất bản sao lưu từ kho lưu trữ và thay thế dữ liệu trong thư mục dữ liệu.

Làm cách nào để thay thế dữ liệu trong datadir?

Hãy xem xét hai lựa chọn.

Tùy chọn 1

Sử dụng tiện ích XtraSao lưu. Bạn cần chỉ định một tùy chọn --sao chép lại

Lệnh dưới đây sẽ chuyển bản sao lưu sang thư mục dữ liệu máy chủ mục tiêu:

xtrabackup --copy-back --target-dir=/mysql/backup

Tùy chọn 2

Bạn có thể làm khác đi, làm mà không cần tiện ích XtraSao lưu.

Tất cả những gì bạn cần làm là sao chép bản sao lưu vào thư mục dữ liệu. Bạn có thể làm điều này với cp hoặc rsync.

Điều quan trọng là phải hiểu rằng quy trình khôi phục bản sao lưu chỉ đơn giản là thay thế nội dung của thư mục thư mục dữ liệu.

Trước khi bắt đầu khôi phục bản sao lưu trên máy chủ mục tiêu, bạn phải:

  • Dừng máy chủ MySQL.

  • Thư mục trống thư mục dữ liệu hoặc di chuyển nội dung của nó đến một vị trí khác. Mục lục thư mục dữ liệu phải trống rỗng.

Sau khi hoàn thành việc truyền dữ liệu tới thư mục dữ liệu Máy chủ MySQL có thể được khởi động.

Tài liệu được sử dụng

tài liệu chính thức percona XtraSao lưu.

Nguồn: www.habr.com

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster