Rumah > Artikel > pangkalan data > Analisis terperinci MySQL bagi pemalam Clone
Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu yang berkaitan dengan klon MySQL 8.0.17 memperkenalkan pemalam Clone, yang boleh digunakan secara tempatan atau dari pelayan MySQL jauh contohnya, saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial mysql
MySQL 8.0 17 memperkenalkan pemalam Clone, yang boleh diklon secara tempatan atau dari contoh pelayan MySQL jauh Data yang diklon ialah petikan fizikal data yang disimpan dalam InnoDB, termasuk skema, jadual, ruang jadual dan metadata kamus data. Operasi pengklonan termasuk pengklonan tempatan dan pengklonan jauh.
Operasi pengklonan tempatan: 🎜>
Untuk menggunakan pemalam Klon untuk melaksanakan operasi pengklonan, anda mesti melakukan Pemasangan dan konfigurasi pemalam terlebih dahulu. Nama pemalam ialah mysql_clone.so, dan terdapat dua cara untuk memasangnya.Kaedah 1:
[mysqld] plugin-load-add=mysql_clone.soSelepas pemasangan, ia boleh boleh dilihat dalam jadual information_schema.plugins atau melalui pemalam rancangan. Klon data tempatanData pengklonan tempatan adalah untuk mengklon direktori data MySQL pada pelayan atau nod yang sama kepada direktori lain Sintaks yang disokong adalah seperti berikut,
install plugin clone soname 'mysql_clone.so';Laksanakan pernyataan di atas, Pengguna yang sepadan perlu mempunyai keizinan BACKUP_ADMIN, dan fail atau ruang jadual yang dibuat oleh pengguna mesti berada dalam direktori data Pada masa yang sama, destinasi pengklonan perlu menentukan laluan mutlak ke direktori mesti wujud, tetapi clone_dir mesti tidak wujud. Demo: Klon data setempat1) Cipta pengguna
CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'2) Cipta direktori
3) Operasi klon
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)
4) Lihat fail klon
[root@node1 ~]# mkdir /mysql/clone/ [root@node1 ~]# chown -R mysql:mysql /mysql/clone/
5) Sahkan, gunakan direktori klon untuk memulakan pangkalan data
mysql> clone local data directory='/mysql/clone/clone_data'; Query OK, 0 rows affected (17.09 sec)
Klon data jauh
[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_002Klon instance pelayan MySQL jauh (penderma) dan pindahkan ke instance MySQL (penerima) yang menjalankan operasi pengklonan Sintaks yang disokong untuk pengklonan data jauh adalah seperti berikut:
[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_datadi mana, pengguna ialah nama pengguna contoh pelayan MySQL penderma; kata laluan ialah kata laluan pengguna; , IPv4 disokong, tetapi IPv6 tidak disokong, tetapi ia boleh menjadi Gunakan alias; ' ialah klausa pilihan yang digunakan untuk menentukan direktori untuk menerima data klon, jika tidak dinyatakan Pilihan ini akan menimpa fail data sedia ada dengan jelas menyatakan sama ada untuk menggunakan sambungan yang disulitkan;
CLONE INSTANCE FROM 'user'@'host':port IDENTIFIED BY 'password' [ DATA DIRECTORY [ = ] 'clone_dir' ] [ REQUIRE [ NO ] SSL ]Untuk melaksanakan operasi pengklonan, pemalam pengklonan mesti diaktifkan pada contoh pelayan MySQL penderma, pengguna klon memerlukan kebenaran BACKUP_ADMIN Pada contoh pelayan penerima, pengguna klon memerlukan kebenaran CLONE_ADMIN termasuk kebenaran BACKUP_ADMIN dan SHUTDOWN.
默认将数据克隆到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视频教程
Atas ialah kandungan terperinci Analisis terperinci MySQL bagi pemalam Clone. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!