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 InnoDB, XtraDB и 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-242. 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)

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/backupTrướ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/backupKhô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/backupTù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
.
Nguồn: www.habr.com
