MySQL高可用集群环境搭建
01、MySQL高可用环境方案
02、MySQL主从复制原理
03、MySQL主从复制作用
04、在Linux环境上安装MySQL
05、在MySQL集群环境上配置主从复制
06、MySQL高可用集群带来的问题
07、MySQL读写分离MyCat使用
08、分表分库插件ShardingJdbc
09、MySQL数据库索引底层原理(重点)
10、MySQLSQL语句性能优化
MySQL数据库简单介绍
MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器(这篇博客暂时不涉及)。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从(master slave )复制和主主复制。
主从复制介绍
相信很多同学在学习Redis的时候,已经了解过主从复制的作用。在MySQL集群环境中,可以分为主节点与从节点,通过主从复制可以实现数据备份、故障转移、MySQL集群、高可用、读写分离等。
MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。
如果Mysql是集群的情况下,需要考虑哪些问题?
数据实时同步的问题
主从复制原理
MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。
主机MySql 会将dmlMySql(create、update、delete、insert等,不包括查询sql) 语句写入到二进制日志文件中(binLog)。
从库生成两个线程,一个I/O线程,一个SQL线程; i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
从节点中Sql线程的作用:就是IO线程从主机获取二进制执行文件之后,通过Sql线程进行执行二进制执行文件。sql线程依赖于IOx线程。
主库与从库会建立长连接,如果产生网络延迟的情况下 会产生数据不同步的问题。
注意:Mysql主从复制是Mysql本身自带的功能。myCat做读写分离 和 Nginx 比较相似。
如果不小心数据被删除了,可以从binlog日志中恢复。
主从复制环境配置
服务器准备两台
192.168.0.105 主服务器配置
192.168.0.107 从服务器配置