Help us understand the problem. What is going on with this article?

mysql8で導入されたcloneプラグインについて

cloneプラグインとは

ローカルまたはリモートサーバーから無停止で物理バックアップするツール。このプラグインが導入する前は無停止で物理バックアップする場合は「MySQL Enterprise Backup」などを使用する必要がありました。バックアップするのはinnodbのみが対象になります。

リモートのMySQLサーバーからcloneする手順について記載しています。MySQLのバージョンは8.0.17です。

  • clone先のサーバーのホスト名はmysql_target
  • clone元のサーバーのホスト名はmysql_source

とします

インストール

  1. clone先・元のMySQLサーバー双方にcloneプラグインをインストールします
mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
Query OK, 0 rows affected (0.02 sec)

INFORMATION_SCHEMA.PLUGINSをSELECTして以下のように表示されていればOKです

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| clone       | ACTIVE        |
+-------------+---------------+

ユーザ作成

  • clone元でBACKUP_ADMINを持ったユーザを作成します
mysql> CREATE USER 'source_user'@'mysql_source' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT BACKUP_ADMIN on *.* to 'source_user'@'mysql_source';
Query OK, 0 rows affected (0.01 sec)
  • clone先でCLONE_ADMINを持ったユーザを作成します
mysql> CREATE USER 'target_user'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT CLONE_ADMIN on *.* to 'target_user'@'localhost';
Query OK, 0 rows affected (0.01 sec)
  • clone先でclone_valid_donor_listにclone元の「ホスト:ポート名」を設定します
mysql> SET GLOBAL clone_valid_donor_list = 'mysql_source:3306';
Query OK, 0 rows affected (0.00 sec)

cloneの実行

mysql> CLONE INSTANCE FROM 'source_user'@'mysql_source':3306 IDENTIFIED BY 'password';
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

エラーが表示されていますが、cloneが実行されると再起動が走ります。今回実行した環境がmysqlを直接起動したので再起動が失敗しましたがsystemd経由で起動させると再起動は成功します

再起動させたくない場合は、DATA DIRECTORYで出力先ディレクトリーを指定します

mysql> CLONE INSTANCE FROM 'source_user'@'mysql_source':3306 IDENTIFIED BY 'password' DATA DIRECTORY = '/tmp/mysql_clone';
Query OK, 0 rows affected (1.08 sec)

まとめ

リモートにあるMySQLサーバーをcloneする例を書きましたが、今後のMySQLサーバーのバックアップのデフォルトスタンダードのソリューションになるかもしれないですね。内部的にどうゆう仕組みで動いているのかちょっと興味が湧いてきたのでその辺りも調べて分かったら記事にしたいと思っています。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away