MySQL 8.0 : クローン機能を利用する2024/09/03 |
クローン機能を使用した MySQL データのバックアップです。 |
|
[1] | デフォルトではクローンプラグインは有効になっていないため、有効にしておきます。 |
root@dlp:~ #
vi /usr/local/etc/mysql/my.cnf # [mysqld] 内に追記 [mysqld] ..... .....
plugin-load=mysql_clone.so
# 13行目 : 他ホスト間でクローンする場合はリスンする範囲を変更
bind-address = 0.0.0.0
root@dlp:~ #
service mysql-server restart # プラグイン確認 root@dlp:~ # 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@dlp:~ # mkdir /home/mysql_backup root@dlp:~ # chown mysql:mysql /home/mysql_backup # クローン取得を実行 # 指定する取得先ディレクトリがすでに存在しているとエラーとなるため # 存在しないディレクトリ名を指定する root@dlp:~ # mysql -e "clone local data directory = '/home/mysql_backup/backup01/';"
ls -l /home/mysql_backup/backup01 total 3469 drwxr-x--- 2 mysql mysql 6 Sep 3 12:58 #clone drwxr-x--- 2 mysql mysql 3 Sep 3 12:58 #innodb_redo -rw-r----- 1 mysql mysql 5815 Sep 3 12:58 ib_buffer_pool -rw-r----- 1 mysql mysql 134217728 Sep 3 12:58 ibdata1 drwxr-x--- 2 mysql mysql 2 Sep 3 12:58 mysql -rw-r----- 1 mysql mysql 27262976 Sep 3 12:58 mysql.ibd drwxr-x--- 2 mysql mysql 3 Sep 3 12:58 sys drwxr-x--- 2 mysql mysql 3 Sep 3 12:58 test_database -rw-r----- 1 mysql mysql 16777216 Sep 3 12:58 undo_001 -rw-r----- 1 mysql mysql 16777216 Sep 3 12:58 undo_002 |
[3] | [CLONE INSTANCE FROM] 句を使用して、リモートホスト間で直接データコピーすることも可能です。 公式ドキュメントでは、コピー元を ドナー (Donor)、コピー先を レシピエント (Recipient) と表記してあります。 |
# ドナー上でクローン用のユーザーを作成して [BACKUP_ADMIN] 権限付与 root@dlp:~ # mysql root@localhost [(none)]> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.09 sec) root@localhost [(none)]> grant BACKUP_ADMIN on *.* to 'clone_user'@'%'; Query OK, 0 rows affected (0.10 sec) # レシピエント上でクローン用のユーザーを作成して [CLONE_ADMIN] 権限付与 root@node01:~ # mysql root@localhost [(none)]> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.11 sec) root@localhost [(none)]> 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] 配下にコピーされる root@localhost [(none)]> set global clone_valid_donor_list = '10.0.0.30:3306'; Query OK, 0 rows affected (0.00 sec) root@localhost [(none)]> clone instance from clone_user@10.0.0.30:3306 identified by 'password'; Query OK, 0 rows affected (0.36 sec) # クローン状況確認 # [Completed] であればコピー完了 root@localhost [(none)]> select STATE from performance_schema.clone_status; +-----------+ | STATE | +-----------+ | Completed | +-----------+ 1 row in set (0.00 sec) # データコピー先ディレクトリを指定する場合は [data directory = '***'] を付与する # コピー先ディレクトリを変更する場合 [2] に記載の通り、事前にディレクトリの作成や適切な権限の設定が必要 root@localhost [(none)]> clone instance from clone_user@10.0.0.30:3306 identified by 'password' data directory = '/home/mysql_backup/backup01/'; |
Sponsored Link |