mysql中5.6和5.5有哪些区别


本篇内容介绍了“mysql中5.6和5.5有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 区别:1、在5.5版本中主从配置不能省略binlog和POS两个参数,而在5.6版本中这两个参数可以省略;2、在5.5版本中不支持多线程复制,同步复制是单线程、队列的,而在5.6版本中支持多线程复制。本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。5.6的改进地方:1、在5.5和之前的版本mysql中,主从配置的话,要在从节点配置change master to 指明binlog和POS。而在5.6及以后,这2个参数就可以省略掉。MySQL可以通过内部的GTID机制自动找点同步。我们只要指明master的IP、用户名和密码、端口即可。2、5.6支持多线程复制在5.5里,同步复制是单线程、队列的,只能一个的执行。而在5.6里,多个库可以同时进行复制(注意:同一个库内仍是不能多线程了)。5.6里会涉及到UUID这个参数注意:在mysql初次启动时候会自动生成这个UIID,写入到auto.cnf中,官方不建议修改这个值。并且server_uuid和GTID有密切关系。GTID:全局事务标识符使用这个功能时,每次事务提交都会在binlog里生成唯一的标识符,它由UUID和事务ID组成。首次提交的事务ID为1,以后依次递增。开启GTID时,slave做同步复制时,无需找到binlog日志和POS点。直接GTID写法:如果之前启用过了GTID,那么就不能不能再使用传统的change master to的方式了,会报错,如下:ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.GTID的工作流程:1、在master上提交一个事务,并写入到binlog2、binlog发送到slave上,slave接收并写入relay log,slave读取到这个GTID,并设置gtid_next的值。例如:s开发云主机域名et @@SESSION.GTID_NEXT=’B0869D03-D332223-35454:3′;然后告诉slave接下来的事务必须使用GTID,并写入到自己的binlog中。3、slave检查并确认这个gtid没有被使用,如果没有被使用,那么开始执行这个事务并写入到它自己的binlog里。4、由于gtid_next的值不是空的,slave不会尝试去生成一个新的gtid,而是通过主从同步来获的GTID。另外,要使用GTID方式进行主从同步的话,还要在my.cnf里面加上如下的配置:然后在master上导出mysqldump -uroot -proot -q –single-transaction -R -E –triggers -B hellodb > /root/hello.sql在slave上导入mysql -uroot -proot
在slave上配置change master to指向(如下6行代码):GTID的局限性:1、GTID的复制是基于事务的,不支持MyISAM,这可能导致多个GTID分配各同一个事务。2、对create table … select语句不支持。因为该语句会被拆分成create table和insert 两个事务,并且如果这两个事务被分配了同一个GTID,将会导致insert被备库忽略掉。3、不支持创建、删除临时表多线程复制演示:在slave上执行下面几条命令:如果此时在主上有大量的insert操作,可以在slave上执行> select * from mysql.slave_worker_infoG 应该可以查看到worker_id在不断变化,说明是多线程复制在起作用了。说明:slave_parallel_workers 即可实现在slave上多线程并发复制。不过,它只能支持一个实例下多个 database 间的并发复制,并不能真正做到多表并发复制。因此在较大并发负载时,slave还是没有办法及时追上master,需要想办法进行优化(比如:尽量将一个库中的表按照业务逻辑拆分成多个库来保存,这样在写操作时候,slave就能开启多线程复制,减少了同步的时延。)此外,建议修改my.cnf,增加2行(默认这个info_file是文件的,不写入数据库的)单单这样还不够,默认这2张表是MyISAM的,不安全还要转换下这样的话,可防止表损坏,在损坏后可以自行修复。GTID模式下的主从复制,同步时候报错不能跳过的解决方法:假如在slave上看到同步报错“从节点的XXX键不存在”我们可以尝试使用5.5上的老方法执行的时候会发现报错了,提示如下:可以看出运行在GTID模式下,不支持sql_slave_skip_counter这种方式跳过的。那么可以如下方法来跳过:> show slave statusG查看如下2行的信息:第一行表示收到的事务,第二行表示已经执行完的事务。也就是说执行到Retrieved_Gtid_Set时候发生错误了。因此,我们直接单单跳过这个事务即可。GTID模式转换为传统模式的方法及注意点:要转换成传统模式,需要在my.cnf里面注释掉下面2行:然后重启MySQL。登进mysql,执行类似如下命令:结果报错了,如下图:解决方法:“mysql中5.6和5.5有哪些区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: MySQL5.7应当注意的参数

简介: 本篇文章主要介绍 MySQL 初始化应当注意的参数,对于不同环境间实例迁移,这些参数同样应当注意。注: 本文介绍的参数都是在配置文件 [mysqld] 部分。这几个系统变量通常成对出现,当我们想指定log_bin 选项时,必须也要指定server_id…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/28 17:56
下一篇 06/28 20:40

相关推荐