MySQL最新版本8.0.17于.07.22正式发布,其中新特性实例克隆引人注目。在很多场景中,我们需要克隆一个MySQL实例出来,比如在MGR中,我们需要先使用备份创建一个新实例后,才能将其加入组复制。传统的主从架构,如果需要增加一个从库,也是利用备份恢复,创建一个新的实例,再将这个实例加入到主从复制中。8.0.17版本实现的克隆功能,能够更加快捷、高效的实现MySQL实例克隆。回忆一下,以前创建一个新的MySQL复制实例,步骤繁多,首先创建一个备份,把备份通过网络传输到新的实例所在的机器上,做备份恢复后,人工启动MySQL实例,设置GTID,执行changemaster命令。太多的步骤和人为参与,导致整个过程容易出错。MySQL8.0.17版本开发的克隆插件解决了这个问题,简化了实例复制的过程。仅仅通过mysql客户端,执行几个命令,就能把一台正在运行的MySQL实例自动克隆到另外一个新实例上,不需要太多的步骤和人工参与。在克隆过程中,有一些需要注意的事项:MySQL的配置参数不会被克隆。Binlog文件不会被克隆。仅支持InnoDB存储引擎,MyISAM和CSV引擎的表,被克隆过来后,是空表。克隆过程中,所有的DDL操作被阻塞。做克隆操作时,实例自己的数据以及Binlog都会丢失,如果需要,请在克隆前做好备份。通过一个例子,实际操作MySQL实例克隆第一步:源节点上,安装克隆插件,添加用户授权INSTALLPLUGINCLONESONAMEmysql_clone.so;CREATEUSERclone_userIDENTIFIEDBYclone_password;GRANTBACKUP_ADMINON*.*toclone_user;GRANTSELECTONperformance_schema.*TOclone_user;GRANTEXECUTEON*.*toclone_user;第二步:目标节点上,安装克隆插件,添加用户授权,设置克隆源INSTALLPLUGINCLONESONAMEmysql_clone.so;SETGLOBALclone_valid_donor_list=源节点IP:;CREATEUSERclone_userIDENTIFIEDBYclone_password;GRANTCLONE_ADMINON*.*toclone_user;GRANTSELECTONperformance_schema.*TOclone_user;GRANTEXECUTEON*.*toclone_user;第三步:在目标节点上,执行克隆命令CLONEINSTANCEFROMclone_user源节点IP:IDENTIFIEDBYclone_password;如果克隆的数据量很大,这个命令通常会耗费很长时间。如何监控克隆进度?通过clone_status和clone_progress表查看克隆的状态和进度。performance_schema.clone_statusperformance_schema.clone_progress从performance_schema.clone_progress表中,可以看到克隆过程分为这么几个阶段:DROPDATA,FILECOPY,PAGECOPY,REDOCOPY,FILESYNC,RESTART,RECOVERY。在FILESYNC阶段之后,克隆命令将会返回,然后MySQLServer将会自动重启,在RESTART和RECOVER阶段,MySQLServer是不可用的,因为这时候在做全数据的recovery,redo日志将会被应用,之后根据快照GTID去追主库的binlog。在MySQLServer重启后,重新连接到实例,查看performance_schema.clone_status和performance_schema.clone_progress表中状态,检查克隆是否最终完成。
转载请注明:http://www.aierlanlan.com/cyrz/6262.html