이 기사에서는 주로 복제와 관련된 문제를 소개하는 mysql에 대한 관련 지식을 제공합니다. MySQL 8.0.17에서는 로컬 또는 원격 MySQL 서버 인스턴스에서 복제할 수 있는 복제 플러그인을 소개합니다. 모두가 도움이 됩니다.
추천 학습: mysql 튜토리얼
MySQL 8.0.17에는 로컬 또는 원격 MySQL 서버 인스턴스에서 복제할 수 있는 복제 플러그인이 도입되었습니다. 복제된 데이터는 InnoDB에 저장됩니다. 스키마, 테이블, 테이블스페이스 및 데이터 사전 메타데이터를 포함한 데이터의 물리적 스냅샷입니다. 복제 작업에는 로컬 복제와 원격 복제가 포함됩니다.
로컬 복제 작업: 플러그인을 먼저 설치하고 구성해야 합니다. 플러그인 이름은 mysql_clone.so이며, 설치하는 방법은 두 가지가 있다.
방법 1:
MySQL 데이터베이스 플러그인은 기본적으로 시스템 변수plugin_dir에 해당하는 디렉터리에 배치됩니다. MySQL 서버가 시작될 때 플러그인을 로드하려면 --plugin-load-add 옵션을 사용하세요. 이 방법을 사용하려면 매번 서버를 시작해야 합니다. my.cnf 파일에서 구성할 수 있는 해당 옵션을 지정해야 합니다. 즉:[mysqld] plugin-load-add=mysql_clone.so
install plugin clone soname 'mysql_clone.so';
CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'
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)
[root@node1 ~]# mkdir /mysql/clone/ [root@node1 ~]# chown -R mysql:mysql /mysql/clone/
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_002
[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_data
CLONE INSTANCE FROM 'user'@'host':port IDENTIFIED BY 'password' [ DATA DIRECTORY [ = ] 'clone_dir' ] [ REQUIRE [ NO ] SSL ]
password는 사용자의 비밀번호입니다.
host는 기증자 MySQL 서버 인스턴스의 호스트 이름 주소입니다. IPv6는 지원되지 않습니다.
默认将数据克隆到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视频教程
위 내용은 Clone 플러그인의 MySQL 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!