Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL, das hauptsächlich Probleme im Zusammenhang mit dem Klonen von MySQL 8.0.17 vorstellt, das lokal oder von einer Remote-MySQL-Serverinstanz aus geklont werden kann Für Dich ist jeder hilfreich.
Empfohlenes Lernen: MySQL-Tutorial
MySQL 8.0.17 führt das Clone-Plug-in ein, das lokal oder von einer Remote-MySQL-Serverinstanz geklont werden kann Geklonte Daten werden in InnoDB gespeichert. Eine physische Momentaufnahme der Daten, einschließlich Schemata, Tabellen, Tablespaces und Datenwörterbuch-Metadaten. Zu den Klonvorgängen gehören lokales Klonen und Remote-Klonen.
Lokaler Klonvorgang: Das Plug-in muss zuerst installiert und konfiguriert werden. Der Name des Plug-Ins lautet mysql_clone.so und es gibt zwei Möglichkeiten, es zu installieren.
Methode 1:
Das MySQL-Datenbank-Plug-in wird standardmäßig im Verzeichnis abgelegt, das der Systemvariablen „plugin_dir“ entspricht. Verwenden Sie die Option --plugin-load-add, um das Plug-in zu laden, wenn der MySQL-Server startet Bei dieser Methode muss der Server jedes Mal gestartet werden. Sie müssen die entsprechenden Optionen angeben, die in der Datei my.cnf konfiguriert werden können, nämlich:[mysqld] plugin-load-add=mysql_clone.so
install plugin clone soname 'mysql_clone.so';
CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'Um die obige Anweisung auszuführen, muss der entsprechende Benutzer über BACKUP_ADMIN verfügen Berechtigungen und die vom Benutzer erstellte Datei oder Der Tablespace muss sich im Datenverzeichnis befinden. Gleichzeitig muss der absolute Pfad zum Ziel des Klons angegeben werden. Der vollständige Pfad zum Verzeichnis muss jedoch vorhanden sein existieren. Demonstration: Lokale Daten klonen1) Benutzer erstellen
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) Verzeichnis erstellen
[root@node1 ~]# mkdir /mysql/clone/ [root@node1 ~]# chown -R mysql:mysql /mysql/clone/3) Klonvorgang
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) Überprüfen Sie, ob Sie das geklonte Verzeichnis verwenden, um die Datenbank zu starten
[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_dataRemote-Daten klonenKlonen Sie die Remote-MySQL-Serverinstanz (Spender) und übertragen Sie sie an die MySQL-Instanz (Empfänger), die den Klonvorgang durchführt. Die unterstützte Syntax zum Klonen von Remote-Daten lautet wie folgt:
CLONE INSTANCE FROM 'user'@'host':port IDENTIFIED BY 'password' [ DATA DIRECTORY [ = ] 'clone_dir' ] [ REQUIRE [ NO ] SSL ]Wo,
Passwort ist das Passwort des Benutzers;
Host ist die Hostnamen-Adresse der Spender-MySQL-Serverinstanz, aber IPv6 wird nicht unterstützt Aliase können verwendet werden;
默认将数据克隆到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视频教程
Das obige ist der detaillierte Inhalt vonDetaillierte MySQL-Analyse des Klon-Plug-Ins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!