区别:1、在5.5版本中主从配置不能省略binlog和POS两个参数,而在5.6版本中这两个参数可以省略;2、在5.5版本中不支持多线程复制,同步复制是单线程、队列的,而在5.6版本中支持多线程复制。
本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。
mysql中5.6和5.5有什么区别
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 [(none)]>show variables like '%uuid%'; +---------------+--------------------------------------+ | Variable_name | Value | +---------------+--------------------------------------+ | server_uuid | ca910cf0-3aec-11e6-9319-b888e3dcfeb8 | +---------------+--------------------------------------+ 1 row in set (0.00 sec)
注意:在mysql初次启动时候会自动生成这个UIID,写入到auto.cnf中,官方不建议修改这个值。并且server_uuid和GTID有密切关系。
GTID:全局事务标识符
使用这个功能时,每次事务提交都会在binlog里生成唯一的标识符,它由UUID和事务ID组成。首次提交的事务ID为1,以后依次递增。
开启GTID时,slave做同步复制时,无需找到binlog日志和POS点。直接
GTID写法:
change master to master_HOST=192.168.2.100, master_PORT=2206, master_USER=repluser, master_PASSWORD='123456', master_AUTO_POSITION=1; 另外传统的写法: CHANGE MASTER TO MASTER_HOST='master2.mycompany.com', MASTER_USER='replication', MASTER_PASSWORD='bigs3cret', MASTER_PORT=3306, MASTER_LOG_FILE='master2-bin.001', MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10;
如果之前启用过了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上提交一个事务,并写入到binlog
2、binlog发送到slave上,slave接收并写入relay log,slave读取到这个GTID,并设置gtid_next的值。例如:
set @@SESSION.GTID_NEXT='B0869D03-D332223-35454:3';
然后告诉slave接下来的事务必须使用GTID,并写入到自己的binlog中。
3、slave检查并确认这个gtid没有被使用,如果没有被使用,那么开始执行这个事务并写入到它自己的binlog里。
4、由于gtid_next的值不是空的,slave不会尝试去生成一个新的gtid,而是通过主从同步来获的GTID。
另外,要使用GTID方式进行主从同步的话,还要在my.cnf里面加上如下的配置:
[mysqld] log-bin=mysql-bin binlog_format = mixed log_slave_updates = ON gtid-mode = ON enforce_gtid_consistency = ON
然后在master上导出mysqldump -uroot -proot -q --single-transaction -R -E --triggers -B hellodb > /root/hello.sql
在slave上导入mysql -uroot -proot d6bc78b9888b7f96179d366398487274 select * from mysql.slave_worker_info\G 应该可以查看到worker_id在不断变化,说明是多线程复制在起作用了。
说明:slave_parallel_workers 即可实现在slave上多线程并发复制。不过,它只能支持一个实例下多个 database 间的并发复制,并不能真正做到多表并发复制。因此在较大并发负载时,slave还是没有办法及时追上master,需要想办法进行优化(比如:尽量将一个库中的表按照业务逻辑拆分成多个库来保存,这样在写操作时候,slave就能开启多线程复制,减少了同步的时延。)
此外,建议修改my.cnf,增加2行(默认这个info_file是文件的,不写入数据库的)
relay_log_info_repository = table master_info_repository = table
单单这样还不够,默认这2张表是MyISAM的,不安全还要转换下
> alter table slave_master_info engine innodb; > alter table slave_relay_log_info engine innodb; > alter table slave_worker_info engine innodb;
这样的话,可防止表损坏,在损坏后可以自行修复。
GTID模式下的主从复制,同步时候报错不能跳过的解决方法:
假如在slave上看到同步报错“从节点的XXX键不存在”
我们可以尝试使用5.5上的老方法
> stop slave; > set global sql_slave_skip_counter=1 > start slave;
执行的时候会发现报错了,提示如下:
可以看出运行在GTID模式下,不支持sql_slave_skip_counter这种方式跳过的。
那么可以如下方法来跳过:
> show slave status\G查看如下2行的信息:
Retrieved_Gtid_Set: ca910cf0-3aec-11e6-9319-b888e3dcfeb8:1-2 Executed_Gtid_Set: ca910cf0-3aec-11e6-9319-b888e3dcfeb8:1
第一行表示收到的事务,第二行表示已经执行完的事务。也就是说执行到Retrieved_Gtid_Set时候发生错误了。
因此,我们直接单单跳过这个事务即可。
> stop slave; > set GTID_NEXT='ca910cf0-3aec-11e6-9319-b888e3dcfeb8:2'; 就是这种写法,不要加什么1-2这些玩意 > begin; > commit; > set GTID_NEXT="AUTOMATIC"; #把gtid_next设置回来 > start slave; > show slave status\G 验证下是否IO/SQL都是YES状态。
GTID模式转换为传统模式的方法及注意点:
要转换成传统模式,需要在my.cnf里面注释掉下面2行:
# gtid-mode=ON # enforce_gtid_consistency = ON
然后重启MySQL。
登进mysql,执行类似如下命令:
> stop slave; > CHANGE MASTER TO MASTER_HOST='master2.mycompany.com', MASTER_USER='replication', MASTER_PASSWORD='bigs3cret', MASTER_PORT=3306, MASTER_LOG_FILE='master2-bin.001', MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10;
结果报错了,如下图:
解决方法:
> change master to MASTER_AUTO_POSITION=0; # 关闭这个参数,这个参数是GTID复制才用到的。 > CHANGE MASTER TO MASTER_HOST = '192.168.2.11', MASTER_USER='repluser', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=500, MASTER_CONNECT_RETRY=10; > start slave; > show slave status\G 验证下是否IO/SQL都是YES状态。
推荐学习:mysql视频教程
以上是mysql中5.6和5.5有什么区别的详细内容。更多信息请关注PHP中文网其他相关文章!

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

WebStorm Mac版
好用的JavaScript开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器