Maison >base de données >tutoriel mysql >Analyse détaillée MySQL du plug-in Clone
Cet article vous apporte des connaissances pertinentes sur mysql, qui présente principalement des problèmes liés au clonage. MySQL 8.0.17 introduit le plug-in Clone, qui peut être cloné localement ou à partir d'une instance de serveur MySQL distant. pour vous. Tout le monde est utile.
Apprentissage recommandé : Tutoriel mysql
MySQL 8.0.17 introduit le plug-in Clone, qui peut être cloné localement ou à partir d'une instance de serveur MySQL distant. les données clonées sont stockées dans InnoDB. Un instantané physique des données, y compris les schémas, les tables, les espaces de table et les métadonnées du dictionnaire de données. Les opérations de clonage comprennent le clonage local et le clonage à distance.
Opération de clonage local : Le plug-in doit d'abord être installé et configuré. Le nom du plug-in est mysql_clone.so et il existe deux manières de l'installer.
Méthode 1 :
Le plug-in de base de données MySQL est placé par défaut dans le répertoire correspondant à la variable système plugin_dir. Utilisez l'option --plugin-load-add pour charger le plug-in au démarrage du serveur MySQL, mais. cette méthode nécessite de démarrer le serveur à chaque fois. Vous devez spécifier les options correspondantes, configurables dans le fichier my.cnf, à savoir :[mysqld] plugin-load-add=mysql_clone.so
install plugin clone soname 'mysql_clone.so';
CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'Pour exécuter l'instruction ci-dessus, l'utilisateur correspondant doit disposer de BACKUP_ADMIN. autorisations, et le fichier créé par l'utilisateur ou Le tablespace doit être dans le répertoire de données. En même temps, le chemin absolu doit être spécifié pour la destination du clone. Le chemin complet vers le répertoire doit exister, mais clone_dir ne doit pas exister. exister. Démo : cloner des données locales1) Créer un utilisateur
mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.25 | +-----------+ 1 row in set (0.00 sec) mysql> create user clone_admin identified by 'Cl0neTest'; Query OK, 0 rows affected (0.02 sec) mysql> grant backup_admin on *.* to clone_admin; Query OK, 0 rows affected (0.10 sec)2) Créer un répertoire
[root@node1 ~]# mkdir /mysql/clone/ [root@node1 ~]# chown -R mysql:mysql /mysql/clone/3) Opération de clonage
mysql> clone local data directory='/mysql/clone/clone_data'; Query OK, 0 rows affected (17.09 sec)
[root@node1 ~]# ll /mysql/clone/clone_data/ total 6348816 drwxr-x---. 2 mysql mysql 89 Nov 28 11:26 #clone -rw-r-----. 1 mysql mysql 9231 Nov 28 11:26 ib_buffer_pool -rw-r-----. 1 mysql mysql 4294967296 Nov 28 11:26 ibdata1 -rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile0 -rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile1 drwxr-x---. 2 mysql mysql 6 Nov 28 11:26 mysql -rw-r-----. 1 mysql mysql 25165824 Nov 28 11:26 mysql.ibd drwxr-x---. 2 mysql mysql 4096 Nov 28 11:26 sakila drwxr-x---. 2 mysql mysql 28 Nov 28 11:26 sys -rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_001 -rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_0025) Vérifier, utiliser le répertoire cloné pour démarrer la base de données
[root@node1 ~]# service mysql.server stop Shutting down MySQL.... SUCCESS! [root@node1 ~]# mysqld_safe --datadir=/mysql/clone/clone_data/ --lower-case-table-names=1 --user=mysql 2021-11-28T03:47:11.012900Z mysqld_safe Logging to '/mysql/clone/clone_data/node1.com.cn.err'. 2021-11-28T03:47:11.036181Z mysqld_safe Starting mysqld daemon with databases from /mysql/clone/clone_dataCloner les données distantesClonez l'instance du serveur MySQL distant (donateur) et transférez-la vers l'instance MySQL (destinataire) qui effectue l'opération de clonage. La syntaxe prise en charge pour le clonage des données distantes est la suivante :
CLONE INSTANCE FROM 'user'@'host':port IDENTIFIED BY 'password' [ DATA DIRECTORY [ = ] 'clone_dir' ] [ REQUIRE [ NO ] SSL ]Parmi elles,
password est le mot de passe de l'utilisateur ;
host est l'adresse du nom d'hôte de l'instance de serveur MySQL donatrice. Actuellement, IPv4 est pris en charge, mais IPv6 n'est pas pris en charge. mais des alias peuvent être utilisés ;
默认将数据克隆到recipient端的数据目录,并使用donor的数据进行覆盖,然后进行自动重启recipient端的MySQL服务器实例
1)登录到donor MySQL服务器实例,创建用户并安装插件(若安装可忽略)
mysql> create user 'donor_clone_user' identified by 'donor_clone_user'; Query OK, 0 rows affected (0.02 sec) mysql> grant backup_admin on *.* to donor_clone_user; Query OK, 0 rows affected (0.01 sec)
2)登录到recipient MySQL服务器实例,创建账户并安装插件,并设置clone_valid_donor_list
mysql> create user recipient_clone_user identified by 'recipient_clone_user'; Query OK, 0 rows affected (0.04 sec) mysql> grant clone_admin,backup_admin on *.* to recipient_clone_user; Query OK, 0 rows affected (0.01 sec) mysql> install plugin clone soname 'mysql_clone.so'; Query OK, 0 rows affected (0.01 sec) mysql> set global clone_valid_donor_list='192.168.56.53:3306'; Query OK, 0 rows affected (0.00 sec)
3)登录到recipient MySQL服务器实例,使用 recipient_clone_user用户或root用户执行克隆操作,操作完成后会自动重启
mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user'; Query OK, 0 rows affected (51.08 sec)
注:将donor的数据克隆到recipient端默认会覆盖其数据文件,也可以指定一个目录进行克隆,如下:
mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user' data directory='/mysql/clone/clone_data'; Query OK, 0 rows affected (51.17 sec)
使用新目录启动MySQL服务器实例:
[root@node2 clone]# mysqld --lower-case-table-names=1 --datadir=/mysql/clone/clone_data/ --user=mysql &
推荐学习:mysql视频教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!