ClusterControlの一元化されたバックアップ管理機能は、MariaDBが提供する標準のmysqldump、Percona Xtrabackupバックアップ、およびMariabackupをサポートします。それぞれのメソッドに対して選択されたコマンドライン引数は、ほとんどのデータベースワークロードに最適であり、MySQLバックアップのベストプラクティスに準拠していると確信しています。私たちは、DBAやシステム管理者と協力して、長年にわたって受け取ったすべてのフィードバックに基づいています。ただし、状況によっては構成が不十分な場合があります。それぞれのバックアップ方法を使用して、環境に合わせてカスタマイズすることもできます。この投稿では、これを行う方法を紹介します。
mysqldump
ClusterControl UIからバックアップを実行するには、ClusterControl-> SelectCluster->Backupセクションに移動します。ここで、生成されたバックアップを確認し、新しいバックアップを作成またはスケジュールできます。
ClusterControl UIから、バックアップを取るためのいくつかの異なるオプションがあります。データベースごとに1つのダンプファイルを作成し、部分バックアップを有効にして、バックアップをノードまたはClusterControlサーバーに保存できます。バックアップディレクトリとサブディレクトリを指定することも、クラウドアップロード機能を使用してバックアップをクラウド(AWS、Google Cloud、Azure)に自動的にアーカイブすることもできます。
また、圧縮を使用し、バックアップを暗号化し、保存期間を指定することもできます。
デフォルトでは、ClusterControlでは、バックアップを実行するために4つの異なるダンプタイプから選択できます。
- スキーマとデータ:データベースのスキーマとデータ
- スキーマのみ:データベーススキーマ
- データのみ:データベースデータ
- MySQL Dbのみ:MySQLシステムデータベース
5つのデータベースがあり、それらすべてをバックアップすることを選択したとします。 mysqldumpメソッドを使用してバックアップを実行するときにClusterControlが実行する内容は次のとおりです(読みやすくするためにコマンドはバックスラッシュでトリミングされています):
- スキームとデータ
$ /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'.
- スキーマのみ
$ /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'.
- データのみ
$ /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'.
- MySQLDBのみ
$ /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'.
MySQLノードがバイナリログを生成している場合、上記のコマンドにパラメータmaster-data =2が含まれ、1つの追加のダンプタイプが利用可能になります:
- 完全な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'.
上記のコマンドラインから、各mysqldumpコマンドで、ClusterControlがMySQL構成ファイルを--defaults-file引数に含めていることがわかります。これにより、mysqldumpプロセスはmysqldumpディレクティブの内容を読み取ることができます。デフォルトでは、ClusterControlは、次のように、/ etc / my.cnf.d /secrets-backup.cnfの別のファイルとmy.cnfのmax_allowed_packetにバックアップユーザーの資格情報を構成します。
$ my.cnf
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
$ secrets-backup.cnf
[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE
これの利点は、mysqldumpにいくつかの追加オプションを含めることができることです。残念ながら、-defaults-file引数は、最上位の引数としてのみ指定できます。後者のコマンドライン引数は、表示される順序に基づいて、[mysqldump]ディレクティブの下でmy.cnf内に構成されているものよりも優先されることに注意してください。たとえば、my.cnf内にskip-comments =0を追加し、mysqldumpコマンドの最後に--skip-comments(または--skip-comments =1)がある場合、前者は無視され、後者が使用されます。
それでも、他のmysqldumpバックアップオプションを使用して、バックアップのカスタマイズの一部として使用できます。たとえば、ignore-tableパラメータ(「database.table」形式)を使用して、バックアップしたくないテーブルを除外できます。次の行をMySQL構成ファイルに追加します。
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1
構成が完了すると、ClusterControlから新しいmysqldumpジョブをトリガーするだけで、これらのテーブルがmysqldumpによってスキップされます。 MySQLを再起動する必要はありません。
詳細については、mysqldumpのドキュメントを確認してください。
Percona Xtrabackup
ClusterControlは、選択したオプションに応じてXtrabackupを実行します。フルまたはインクリメンタルにすることができ、ClusterControlUIからいくつかの変数を選択できます。次のことを考慮してください:
このステップでは、前にmysqldumpセクションで説明したいくつかの変数を選択してから、次のことを行うことができます。
バックアップ中の非同期ノード、Xtrabackup ParallelCopyThreadsなどの詳細を指定できます。
上記のオプションに基づくと、完全なXtrabackupコマンドは次のようになります。
$ 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.
最初のコマンド「ulimit-n256000」は、Percona Xtrabackupが膨大な数のファイル記述子にアクセスするのに十分な特権を持っていることを確認することです(データベースに多くのテーブルが含まれている場合)。 --defaults-file =/ etc / mysql / my.cnfに注意してください。これはmysqldumpに似ており、innobackupexは次のディレクティブと変数でMySQL構成の内容を読み取ります。
[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]
Percona Xtrabackupのバックアップオプションをカスタマイズする場合は、[xtrabackup]ディレクティブのすぐ下に追加できます。たとえば、バックアップの作成時にXtrabackupでバイナリログの位置を出力する場合は、次のように追加できます。
[xtrabackup]
user=backupuser
password=[random password]
slave-info=1
xtrabackupジョブをトリガーすると、xtrabackup_slave_infoファイルと呼ばれるファイルが含まれます。 MySQLを再起動する必要はありません。
動作の詳細については、Perconaのドキュメントを確認してください。
Mariabackup
Mariabackupは、MariaDB10.1圧縮と保存データ暗号化のサポートが追加されたPerconaXtraBackupのフォークです。 MariaDB10.1.23以降に含まれています。
バックアップ方法は、完全または増分にすることができ、圧縮、Xtrabackup並列コピースレッド、暗号化など、PerconaXtraBackupと同じ変数を選択できます。
Mariabackupコマンドは次のようになります:
$ /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はPerconaXtraBackupに基づいているため、Perconaと同じ情報を使用してバックアップを実行します。デフォルトでは、ClusterControlはmy.cnfファイルに次の行を追加します。
[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0
そして、secrets-backup.cnfファイルのクレデンシャル:
[xtrabackup]
user=backupuser
password=[random password]
変数を追加する場合は、[xtrabackup]セクションに追加できます。
追加するパラメーターの詳細については、MariaDBのドキュメントを確認してください。
いずれの場合も、ClusterControlUIの[バックアップ]セクションからバックアップを確認できます。
これにより、MySQLバックアップをより適切に構成できるようになることを願っています。ClusterControlは当社のWebサイトからダウンロードできます(無料です)。