Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tùy chỉnh bản sao lưu MySQL &MariaDB của bạn với ClusterControl

Tính năng quản lý sao lưu tập trung của ClusterControl hỗ trợ mysqldump tiêu chuẩn, sao lưu Percona Xtrabackup và Mariabackup do MariaDB cung cấp. Chúng tôi tin rằng các đối số dòng lệnh đã chọn cho các phương pháp tương ứng là tối ưu cho hầu hết các khối lượng công việc cơ sở dữ liệu và tuân thủ các phương pháp hay nhất về sao lưu MySQL. Chúng tôi dựa trên tất cả các phản hồi mà chúng tôi đã nhận được trong nhiều năm, khi làm việc với DBA và sysadmins. Tuy nhiên, cấu hình có thể không đủ trong một số trường hợp. Bạn vẫn có thể muốn tùy chỉnh nó cho phù hợp với môi trường của mình bằng cách sử dụng phương pháp sao lưu tương ứng. Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn cách thực hiện việc này.

mysqldump

Để thực hiện sao lưu từ ClusterControl UI, bạn vào phần ClusterControl -> Chọn Cluster -> Backup. Tại đây, bạn có thể xem các bản sao lưu đã tạo và bạn có thể tạo hoặc lên lịch cho một bản sao lưu mới.

Từ giao diện người dùng ClusterControl, chúng tôi có một số tùy chọn khác nhau để sao lưu. Chúng ta có thể tạo một tệp kết xuất cho mỗi cơ sở dữ liệu, cho phép sao lưu một phần, lưu trữ bản sao lưu trên nút hoặc trên máy chủ ClusterControl; chúng tôi có thể chỉ định thư mục sao lưu và thư mục con hoặc chúng tôi có thể tự động lưu trữ bản sao lưu lên đám mây (AWS, Google Cloud hoặc Azure) bằng cách sử dụng tính năng tải lên đám mây.

Ngoài ra, chúng tôi có thể sử dụng tính năng nén, mã hóa bản sao lưu của mình và chỉ định khoảng thời gian lưu giữ.

Theo mặc định, ClusterControl cho phép chúng ta chọn giữa 4 kiểu kết xuất khác nhau để thực hiện sao lưu:

  • Lược đồ và dữ liệu:Lược đồ và dữ liệu cơ sở dữ liệu
  • Chỉ lược đồ:Lược đồ cơ sở dữ liệu
  • Chỉ dữ liệu:Dữ liệu cơ sở dữ liệu
  • Chỉ MySQL Db:Cơ sở dữ liệu hệ thống MySQL

Giả sử chúng tôi có 5 cơ sở dữ liệu và chúng tôi đã chọn sao lưu tất cả chúng. Đây là những gì ClusterControl sẽ thực thi khi thực hiện sao lưu bằng phương thức mysqldump (các lệnh được cắt bằng dấu gạch chéo ngược để dễ đọc):

  • Lược đồ và Dữ liệu
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-1/mysqldump_2018-11-06_203010_schemaanddata.sql.gz'.
  • Chỉ lược đồ
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-data \
    --add-drop-table \
    --triggers \
    --routines \
    --events \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    |gzip -6 -c > /root/backups/BACKUP-2/mysqldump_2018-11-06_210040_schemaonly.sql.gz'.
  • Chỉ dữ liệu
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-create-info \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-triggers \
    --skip-add-locks \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-3/mysqldump_2018-11-06_210445_dataonly.sql.gz'.
  • Chỉ MySQL DB
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-add-locks \
    --set-gtid-purged=OFF mysql \
    |gzip -6 -c > /root/backups/BACKUP-5/mysqldump_2018-11-06_211135_mysqldbonly.sql.gz'.

Nếu nút MySQL của chúng tôi đang tạo nhật ký nhị phân, chúng tôi sẽ có tham số master-data =2 được bao gồm trong các lệnh ở trên và có sẵn 1 loại kết xuất bổ sung:

  • Hoàn thành tương thích với PITR
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --master-data=1 \
    --single-transaction \
    --skip-lock-tables \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --all-databases \
    |gzip -6 -c > /root/backups/BACKUP-6/mysqldump_2018-11-06_211451_complete.sql.gz'.

Từ các dòng lệnh trên, chúng ta có thể thấy rằng trên mỗi lệnh mysqldump, ClusterControl bao gồm tệp cấu hình MySQL vào đối số --defaults-file của nó. Bằng cách có điều này, quá trình mysqldump có thể đọc nội dung của chỉ thị mysqldump. Theo mặc định, ClusterControl định cấu hình thông tin đăng nhập người dùng sao lưu trong một tệp riêng biệt trong /etc/my.cnf.d/secrets-backup.cnf và max_allowed_packet trong my.cnf, tương tự như sau:

$ my.cnf

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8

$ secret-backup.cnf

[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE

Ưu điểm của điều này là chúng tôi có thể bao gồm một số tùy chọn bổ sung cho mysqldump. Thật không may, đối số --defaults-file chỉ có thể được chỉ định làm đối số quan trọng nhất. Hãy chú ý rằng các đối số dòng lệnh sau được ưu tiên hơn những gì đã được cấu hình bên trong my.cnf theo chỉ thị [mysqldump] dựa trên thứ tự chúng xuất hiện. Ví dụ:nếu chúng ta thêm bỏ qua-nhận xét =0 bên trong my.cnf, trong khi ở cuối lệnh mysqldump, có --skip-nhận xét (hoặc --skip-nhận xét =1), thì lệnh trước sẽ bị bỏ qua và cái sau sẽ được sử dụng.

Tuy nhiên, chúng tôi vẫn có thể sử dụng nó như một phần của tùy chỉnh sao lưu của mình bằng cách sử dụng các tùy chọn sao lưu mysqldump khác. Ví dụ:chúng tôi có thể loại trừ các bảng mà chúng tôi không muốn sao lưu bằng cách sử dụng tham số bảng bỏ qua (với định dạng “database.table”). Thêm các dòng sau vào tệp cấu hình MySQL:

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1

Sau khi được định cấu hình, chúng tôi có thể kích hoạt một công việc mysqldump mới từ ClusterControl và chúng tôi sẽ bỏ qua các bảng đó bởi mysqldump. Không cần khởi động lại MySQL.

Bạn có thể kiểm tra tài liệu mysqldump để biết thêm thông tin.

Percona Xtrabackup

ClusterControl thực thi Xtrabackup tùy thuộc vào các tùy chọn bạn đã chọn. Nó có thể đầy đủ hoặc tăng dần và bạn có thể chọn một số biến từ giao diện người dùng ClusterControl. Hãy xem xét những điều sau:

Trong bước này, bạn có thể chọn một số biến mà chúng tôi đã đề cập trước đó trong phần mysqldump, sau đó:

Chúng tôi có thể chỉ định một số chi tiết như nút giải mã trong quá trình sao lưu, Chủ đề sao chép song song Xtrabackup và hơn thế nữa.

Dựa trên các tùy chọn trên, lệnh Xtrabackup hoàn chỉnh sẽ là:

$ ulimit -n 256000 && LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf  --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - | socat - TCP4:192.168.100.110:9999 ) 2>&1.

Lệnh đầu tiên “ulimit -n 256000” là để đảm bảo rằng Percona Xtrabackup có đủ đặc quyền để truy cập một số lượng lớn các bộ mô tả tệp (trong trường hợp cơ sở dữ liệu chứa nhiều bảng). Hãy lưu ý đến --defaults-file =/ etc / mysql / my.cnf, tương tự như mysqldump, trong đó innobackupex đọc nội dung của cấu hình MySQL trên các chỉ thị và biến sau:

[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]

Nếu bạn muốn tùy chỉnh các tùy chọn sao lưu cho Percona Xtrabackup, bạn có thể thêm chúng trực tiếp trong chỉ thị [xtrabackup]. Ví dụ:giả sử chúng tôi muốn Xtrabackup in vị trí nhật ký nhị phân khi sao lưu được thực hiện, chúng tôi có thể thêm một cái gì đó như sau:

[xtrabackup]
user=backupuser
password=[random password]
slave-info=1

Kích hoạt công việc xtrabackup sau đó sẽ bao gồm một tệp có tên là tệp xtrabackup_slave_info. Không cần khởi động lại MySQL.

Bạn có thể kiểm tra tài liệu Percona để biết thêm thông tin về cách nó hoạt động.

Mariabackup

Mariabackup là một nhánh của Percona XtraBackup với hỗ trợ thêm cho nén MariaDB 10.1 và mã hóa dữ liệu lúc nghỉ. Nó được bao gồm với MariaDB 10.1.23 trở lên.

Phương thức sao lưu có thể đầy đủ hoặc tăng dần và bạn có thể chọn các biến tương tự mà bạn có cho Percona XtraBackup, như Nén, Xtrabackup Sao chép song song Chủ đề hoặc Mã hóa.

Lệnh Mariabackup sẽ là:

$ /usr/bin/mariabackup \
--defaults-file=/etc/my.cnf \
--backup \
--galera-info \
--parallel 1 \
--stream=xbstream \
--no-timestamp \
| gzip -6 - > /root/backups/BACKUP-8/backup-full-2018-11-07_015807.xbstream.gz ) 2>&1.

Mariabackup dựa trên Percona XtraBackup, vì vậy nó sử dụng thông tin giống như Percona để thực hiện sao lưu. Theo mặc định, ClusterControl thêm các dòng sau vào tệp my.cnf:

[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0

Và thông tin đăng nhập trong tệp secret-backup.cnf:

[xtrabackup]
user=backupuser
password=[random password]

Nếu bạn muốn thêm một số biến, bạn có thể thêm nó vào phần [xtrabackup].

Bạn có thể kiểm tra tài liệu MariaDB để biết thêm thông tin về việc thêm thông số nào.

Trong mỗi trường hợp, bạn có thể kiểm tra các bản sao lưu của mình từ phần Backup trên ClusterControl UI:

Chúng tôi hy vọng điều này sẽ giúp bạn định cấu hình tốt hơn các bản sao lưu MySQL của mình - bạn có thể tải xuống ClusterControl từ trang web của chúng tôi (miễn phí).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench là gì?

  2. MySQL ERROR 1045 (28000):Quyền truy cập bị từ chối đối với người dùng 'bill' @ 'localhost' (sử dụng mật khẩu:CÓ)

  3. JSON_SEARCH () - Tìm đường dẫn đến chuỗi trong tài liệu JSON trong MySQL

  4. Làm cách nào để khởi tạo cơ sở dữ liệu MySQL với lược đồ trong vùng chứa Docker?

  5. MySQL:Làm cách nào để tham gia cùng một bảng nhiều lần?