MySQL 8.4 : クローン機能を利用する2025/01/31 |
クローン機能を使用した MySQL データのバックアップです。 |
|
[1] | デフォルトではクローンプラグインは有効になっていないため、有効にしておきます。 |
[root@www ~]#
vi /etc/my.cnf.d/mysql-server.cnf # [mysqld] セクション内に追記 [mysqld] ..... .....
plugin-load=mysql_clone.so
bind-address=0.0.0.0
[root@www ~]#
systemctl restart mysqld
# プラグイン確認 [root@www ~]# mysql -e "select plugin_name, plugin_status, plugin_type from information_schema.plugins where plugin_name = 'clone';" Enter password: +-------------+---------------+-------------+ | plugin_name | plugin_status | plugin_type | +-------------+---------------+-------------+ | clone | ACTIVE | CLONE | +-------------+---------------+-------------+ |
[2] | ローカルホスト上の任意のディレクトリにクローンを取得します。 |
# クローンを取得するディレクトリを任意のパスに作成 [root@www ~]# mkdir /var/lib/mysql-backup [root@www ~]# chown mysql:mysql /var/lib/mysql-backup # クローン取得を実行 # 指定する取得先ディレクトリがすでに存在しているとエラーとなるため # 存在しないディレクトリ名を指定する [root@www ~]# mysql -e "clone local data directory = '/var/lib/mysql-backup/backup01/';"
ll /var/lib/mysql-backup/backup01 total 70660 drwxr-x---. 2 mysql mysql 89 Jan 31 11:07 '#clone' -rw-r-----. 1 mysql mysql 4022 Jan 31 11:07 ib_buffer_pool -rw-r-----. 1 mysql mysql 12582912 Jan 31 11:07 ibdata1 drwxr-x---. 2 mysql mysql 23 Jan 31 11:07 '#innodb_redo' drwxr-x---. 2 mysql mysql 6 Jan 31 11:07 mysql -rw-r-----. 1 mysql mysql 26214400 Jan 31 11:07 mysql.ibd drwxr-x---. 2 mysql mysql 28 Jan 31 11:07 sys drwxr-x---. 2 mysql mysql 28 Jan 31 11:07 test_database -rw-r-----. 1 mysql mysql 16777216 Jan 31 11:07 undo_001 -rw-r-----. 1 mysql mysql 16777216 Jan 31 11:07 undo_002 |
[3] | [CLONE INSTANCE FROM] 句を使用して、リモートホスト間で直接データコピーすることも可能です。 公式ドキュメントでは、コピー元を ドナー (Donor)、コピー先を レシピエント (Recipient) と表記してあります。 |
# ドナー上でクローン用のユーザーを作成して [BACKUP_ADMIN] 権限付与 [root@www ~]# mysql mysql> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.09 sec) mysql> grant BACKUP_ADMIN on *.* to 'clone_user'@'%'; Query OK, 0 rows affected (0.10 sec) # レシピエント上でクローン用のユーザーを作成して [CLONE_ADMIN] 権限付与 [root@node01 ~]# mysql mysql> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.11 sec) mysql> grant CLONE_ADMIN on *.* to 'clone_user'@'%'; Query OK, 0 rows affected (0.04 sec) # レシピエント上でクローン実行 # 事前に [set global clone_valid_donor_list = (ドナーの IP アドレス:ポート)] をセット # データはデフォルトの [/var/lib/mysql] 配下にコピーされる mysql> set global clone_valid_donor_list = '10.0.0.31:3306'; Query OK, 0 rows affected (0.00 sec) mysql> clone instance from clone_user@10.0.0.31:3306 identified by 'password'; Query OK, 0 rows affected (0.57 sec) # クローン状況確認 # [Completed] であればコピー完了 mysql> select STATE from performance_schema.clone_status; +-----------+ | STATE | +-----------+ | Completed | +-----------+ 1 row in set (0.00 sec) # データコピー先ディレクトリを指定する場合は [data directory = '***'] を付与する # コピー先ディレクトリを変更する場合 [2] に記載の通り、事前にディレクトリの作成や適切な権限の設定が必要 mysql> clone instance from clone_user@10.0.0.30:3306 identified by 'password' data directory = '/home/mysql_backup/backup01/'; |
Sponsored Link |
|