• ADADADADAD

    MySQL的Clone插件怎么用[ mysql数据库 ]

    mysql数据库 时间:2024-11-25 14:55:11

    作者:文/会员上传

    简介:

    克隆插件简介MySQL 8.0.17引入了Clone插件,可以进行本地或从远程MySQL服务器实例进行克隆,克隆的数据是存储在InnoDB中的数据的物理快照,包括schemas、tables、tablespaces和数

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    克隆插件简介

    MySQL 8.0.17引入了Clone插件,可以进行本地或从远程MySQL服务器实例进行克隆,克隆的数据是存储在InnoDB中的数据的物理快照,包括schemas、tables、tablespaces和数据字典元数据。克隆操作包括本地克隆和远程克隆。

    本地克隆操作:远程克隆操作:

    安装克隆插件

    使用Clone插件进行克隆操作,必须先进行插件的安装和配置。插件的名称是mysql_clone.so,安装有两种方法。

    方法1:

    MySQL数据库的插件默认放在系统变量plugin_dir对应的目录中,在MySQL服务器启动时使用--plugin-load-add选项加载该插件即可,但该方法需每次启动服务器都需要指定对应的选项,可以将其配置到my.cnf文件中,即:

    [mysqld]plugin-load-add=mysql_clone.so
    方法2:

    运行时加载该插件,使用INSTALL PLUGIN进行安装,并将插件注册到mysql.plugin系统表中:

    installpluginclonesoname'mysql_clone.so';

    安装后,可在information_schema.plugins表或通过show plugins查看。

    克隆本地数据

    本地克隆数据是将MySQL数据目录克隆相同服务器或节点到另一个目录 支持的语法如下,

    CLONELOCALDATADIRECTORY[=]'/path/to/clone_dir'

    执行上述语句,对应的用户需要有BACKUP_ADMIN权限,而且用户创建的文件或表空间必须在数据目录中,同时,克隆的目的地需指定绝对路径,目录完整路径必须存在,但clone_dir必须不存在。

    演示:克隆本地数据

    1)创建用户

    mysql>selectversion();+-----------+|version()|+-----------+|8.0.25|+-----------+1rowinset(0.00sec)mysql>createuserclone_adminidentifiedby'Cl0neTest';QueryOK,0rowsaffected(0.02sec)mysql>grantbackup_adminon*.*toclone_admin;QueryOK,0rowsaffected(0.10sec)

    2)创建目录

    [root@node1~]#mkdir/mysql/clone/[root@node1~]#chown-Rmysql:mysql/mysql/clone/

    3)克隆操作

    mysql>clonelocaldatadirectory='/mysql/clone/clone_data';QueryOK,0rowsaffected(17.09sec)

    4)查看克隆后的文件

    [root@node1~]#ll/mysql/clone/clone_data/total6348816drwxr-x---.2mysqlmysql89Nov2811:26#clone-rw-r-----.1mysqlmysql9231Nov2811:26ib_buffer_pool-rw-r-----.1mysqlmysql4294967296Nov2811:26ibdata1-rw-r-----.1mysqlmysql1073741824Nov2811:26ib_logfile0-rw-r-----.1mysqlmysql1073741824Nov2811:26ib_logfile1drwxr-x---.2mysqlmysql6Nov2811:26mysql-rw-r-----.1mysqlmysql25165824Nov2811:26mysql.ibddrwxr-x---.2mysqlmysql4096Nov2811:26sakiladrwxr-x---.2mysqlmysql28Nov2811:26sys-rw-r-----.1mysqlmysql16777216Nov2811:26undo_001-rw-r-----.1mysqlmysql16777216Nov2811:26undo_002

    5)验证,使用克隆的目录启动数据库

    [root@node1~]#servicemysql.serverstopShuttingdownMySQL....SUCCESS![root@node1~]#mysqld_safe--datadir=/mysql/clone/clone_data/--lower-case-table-names=1--user=mysql2021-11-28T03:47:11.012900Zmysqld_safeLoggingto'/mysql/clone/clone_data/node1.com.cn.err'.2021-11-28T03:47:11.036181Zmysqld_safeStartingmysqlddaemonwithdatabasesfrom/mysql/clone/clone_data
    克隆远程数据

    克隆远程MySQL服务器实例(donor)并将其传输至执行克隆操作的MySQL实例(recipient),支持的克隆远程数据的语法如下:

    CLONEINSTANCEFROM'user'@'host':portIDENTIFIEDBY'password'[DATADIRECTORY[=]'clone_dir'][REQUIRE[NO]SSL]

    其中,

      user 是donor MySQL服务器实例的用户名;

      password是user的密码;

      host是donor MySQL服务器实例的hostname地址,目前支持IPv4,不支持IPv6,但可使用别名;

      port是donor MySQL服务器实例的端口号;

      DATA DIRECTORY [ = ] 'clone_dir'是可选的子句用于指定接收克隆数据的目录,不指定该选项会覆盖已存在的数据文件,指定该选项可将克隆数据传输至该目录;

      REQUIRE [ NO ] SSL显式指定是否使用加密连接;

      执行克隆操作,克隆插件必须在donor和recipient MySQL服务器实例激活,在donor服务器实例,克隆用户需要BACKUP_ADMIN权限,在recipient服务器实例,克隆用户需要CLONE_ADMIN权限,CLONE_ADMIN权限包括BACKUP_ADMIN和SHUTDOWN权限。

      执行CLONE INSTANCE语句需满足下面的先决条件:

        donor和recipient必须有相同的MySQL服务器版本,克隆插件在8.0.17版本后支持;

        donor和recipient必须运行在相同的操作系统和平台;

        克隆数据,recipient必须有足够的磁盘空间;

        InnoDB需要在数据目录外面创建表空间,可通过INFORMATION_SCHEMA.FILES查看;

        克隆插件必须在donor和recipient激活,可通过SHOW PLUGINS查看;

        donor和recipient必须有相同的MySQL服务器字符集和排序规则;

        donor和recipient需要有相同的innodb_page_size和innodb_data_file_path设置;

        若克隆加密或页压缩的数据,donor和recipient必须有相同的文件系统块大小;

        若克隆加密的数据,需要安全的连接;

        recipient上的clone_valid_donor_list设置必须包括donor MySQL服务器实例的主机地址;

        一次只能有一个克隆操作,克隆期间不能有其他克隆操作,可通过clone_status查看;

        克隆插件以1MB数据包和元数据的形式传输数据,在donor和recipient MySQL服务器实例上所需的最小max_allowed_packet是2MB;

        donor上的Undo表空间文件名必须唯一,当数据克隆到recipient,undo表空间克隆到recipient 上innodb_undo_directory指定的位置或DATA DIRECTORY [ = ] 'clone_dir' 子句指定的目录;

        默认,recipient MySQL服务器实例在克隆数据完成后自动重启;

        几个变量控制远程克隆操作的各个方面;

        演示:克隆远程数据

        默认将数据克隆到recipient端的数据目录,并使用donor的数据进行覆盖,然后进行自动重启recipient端的MySQL服务器实例

        1)登录到donor MySQL服务器实例,创建用户并安装插件(若安装可忽略)

        mysql>createuser'donor_clone_user'identifiedby'donor_clone_user';QueryOK,0rowsaffected(0.02sec)mysql>grantbackup_adminon*.*todonor_clone_user;QueryOK,0rowsaffected(0.01sec)

        2)登录到recipient MySQL服务器实例,创建账户并安装插件,并设置clone_valid_donor_list

        mysql>createuserrecipient_clone_useridentifiedby'recipient_clone_user';QueryOK,0rowsaffected(0.04sec)mysql>grantclone_admin,backup_adminon*.*torecipient_clone_user;QueryOK,0rowsaffected(0.01sec)mysql>installpluginclonesoname'mysql_clone.so';QueryOK,0rowsaffected(0.01sec)mysql>setglobalclone_valid_donor_list='192.168.56.53:3306';QueryOK,0rowsaffected(0.00sec)

        3)登录到recipient MySQL服务器实例,使用 recipient_clone_user用户或root用户执行克隆操作,操作完成后会自动重启

        mysql>cloneinstancefrom'donor_clone_user'@'192.168.56.81':3306identifiedby'donor_clone_user';QueryOK,0rowsaffected(51.08sec)

        注:将donor的数据克隆到recipient端默认会覆盖其数据文件,也可以指定一个目录进行克隆,如下:

        mysql>cloneinstancefrom'donor_clone_user'@'192.168.56.81':3306identifiedby'donor_clone_user'datadirectory='/mysql/clone/clone_data';QueryOK,0rowsaffected(51.17sec)

        使用新目录启动MySQL服务器实例:

        [root@node2clone]#mysqld--lower-case-table-names=1--datadir=/mysql/clone/clone_data/--user=mysql&
    MySQL的Clone插件怎么用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlclone