郑州网站建设易云巢,优秀版式设计,ui界面设计案例ppt,dw做网站如何让背景变得透明MySQL主从配置及原理#xff0c;供大家参考#xff0c;具体内容如下一、环境选择#xff1a;1.Centos 6.52.MySQL 5.7二、什么是MySQL主从复制MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器#xff0c;另一台或多台服务器充当从数据库服务…MySQL主从配置及原理供大家参考具体内容如下一、环境选择1.Centos 6.52.MySQL 5.7二、什么是MySQL主从复制MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器另一台或多台服务器充当从数据库服务器主服务器中的数据自动复制到从服务器之中。对于多级复制数据库服务器即可充当主机也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志从服务器通过主服务器的二进制日志自动执行更新。三、MySQL主从复制的类型1.基于语句的复制主服务器上面执行的语句在从服务器上面再执行一遍在MySQL-3.23版本以后支持。缺点时间上可能不完全同步造成偏差执行语句的用户也可能是不同一个用户。2.基于行的复制把主服务器上面改编后的内容直接复制过去而不关心到底改变该内容是由哪条语句引发的在MySQL-5.0版本以后引入。缺点比如一个工资表中有一万个用户我们把每个用户的工资1000那么基于行的复制则要复制一万行的内容由此造成的开销比较大而基于语句的复制仅仅一条语句就可以了。3.混合类型的复制MySQL默认使用基于语句的复制当基于语句的复制会引发问题的时候就会使用基于行的复制MySQL会自动进行选择。在MySQL主从复制架构中读操作可以在所有的服务器上面进行而写操作只能在主服务器上面进行。主从复制架构虽然给读操作提供了扩展可如果写操作也比较多的话(多台从服务器还要从主服务器上面同步数据)单主模型的复制中主服务器势必会成为性能瓶颈。四、原理1.主从(master-slave)主服务器上面的任何修改都会保存在二进制日志Binary log里面从服务器上面启动一个I/O thread(实际上就是一个主服务器的客户端进程)连接到主服务器上面请求读取二进制日志然后把读取到的二进制日志写到本地的一个Realy log里面。从服务器上面开启一个SQL thread定时检查Realy log如果发现有更改立即把更改的内容在本机上面执行一遍。2.主从从(master-slave-slave)一主多从的话这时主库既要负责写又要负责为几个从库提供二进制日志。此时可以稍做调整将二进制日志只给某一从这一从再开启二进制日志并将自己的二进制日志再发给其它从。或者是干脆这个从不记录只负责将二进制日志转发给其它从这样架构起来性能可能要好得多而且数据之间的延时应该也稍微要好一些。【注意】1.在老版本的MySQL中主从复制的slave段并不是由两个进程完成的而是由一个进程完成的之后就出现了很多风险和性能的相关问题。具体有以下问题1.一个进程会使复制bin-log日志和解析日志并在自身执行的过程成为一个串行的过程性能受到了一定的限制异步复制的延迟也会比较长。2. Slave端从Master端获取bin-log过来之后需要接着解析日志内容然后在自身执行。在这个过程中Master端可能又产生了大量变化并新增了大量的日志。如果在这个阶段Master端的存储出现了无法修复的错误那么在这个阶段所产生的所有变更都将永远无法找回。如果在Slave端的压力比较大的时候这个过程的时间可能会比较长。五、MySQL主从复制的过程1.两种情况同步复制和异步复制生产环境中大多数采用异步复制。2. 复制的基本过程1.slave上面的I/O进程连接上master并请求从指定文件的指定位置(或者从最开始的日志)之后的日志内容。2.Master接收到来自Slave的IO进程的请求后负责复制的IO进程会根据请求信息读取日志指定位置之后的日志信息返回给Slave的IO进程。返回信息中除了日志所包含的信息之外还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置。3.Slave的IO进程接收到信息后将接收到的日志内容依次添加到Slave端的relay-log文件的最末端并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容请发给我”。4.Slave的Sql进程检测到relay-log中新增加了内容后会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容并在自身执行。六、配置1.首先明确两种情况1.两台相互独立的服务器或虚拟机。2.两台通过模板创建的虚拟机。2.下面对两台服务器进行命名分别为MySQL主服务器MySQL从服务器。3.主从服务器分别进行如下操作1.MySQL版本一致2.初始化表4.修改MySQL主服务器和MySQL从服务器vim /etc/my.cnf[mysqld]log-bin取任意名称 //启用二进制日志server-id任意取数字 //服务器唯一ID默认值是1一般设置为IP地址的最后一段数字5.若是第一种情况直接重启两台服务器若是第二种情况还需将两台服务器的auto.cnf文件重命名为auto.cnf.bak然后重启MySQL服务。6.在MySQL主服务器上建立账户并授权slavegrant replication slave on *.* to 用户名% identified by 任意密码;7.查询MySQL主服务器的状态show master status;8.配置MySQL从服务器change master tomaster_hostMySQL主服务器IP地址,master_user之前在MySQL主服务器上面创建的用户名master_password之前创建的密码,master_log_fileMySQL主服务器状态中的二进制文件名,master_log_posMySQL主服务器状态中的position值;9.启用slavestart slave;10.查看MySQL从服务器的状态show slave status\G查看Slave_IO_Running: Yes //此状态必须YESSlave_SQL_Running: Yes //此状态必须YES全变YES说明主从配置成功当MySQL主服务器有更新变化时从服务器会根据具体配置做相应的同步。以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。