php网站模块修改,全能网站模板,t型布局网站,网站建设合同的要素及签订注意事项一.主从复制原理利用MySQL提供的Replication#xff0c;其实就是Slave从Master获取Binary log文件#xff0c;然后再本地镜像的执行日志中记录的操作。由于主从复制的过程是异步的#xff0c;因此Slave和Master之间的数据有可能存在延迟的现象#xff0c;此时只能保证数据最…一.主从复制原理利用MySQL提供的Replication其实就是Slave从Master获取Binary log文件然后再本地镜像的执行日志中记录的操作。由于主从复制的过程是异步的因此Slave和Master之间的数据有可能存在延迟的现象此时只能保证数据最终的一致性。在master与slave之间实现整个复制过程主要由三个线程来完成1.Slave SQL thread线程在slave端2.Slave I/O thread线程在slave端3.Binlog dump thread线程(也可称为IO线程)在master端注意如果一台主服务器配两台从服务器那主服务器上就会有两个Binlog dump 线程而每个从服务器上各自有两个线程。网络上找的一张很清晰的交互图流程可以详细描述为1、slave端的IO线程连接上master端并请求从指定binlog日志文件的指定pos节点位置(或者从最开始的日志)开始复制之后的日志内容。2、master端在接收到来自slave端的IO线程请求后通知负责复制进程的IO线程根据slave端IO线程的请求信息读取指定binlog日志指定pos节点位置之后的日志信息然后返回给slave端的IO线程。该返回信息中除了binlog日志所包含的信息之外还包括本次返回的信息在master端的binlog文件名以及在该binlog日志中的pos节点位置。3、slave端的IO线程在接收到master端IO返回的信息后将接收到的binlog日志内容依次写入到slave端的relaylog文件(mysql-relay-bin.xxxxxx)的最末端并将读取到的master端的binlog文件名和pos节点位置记录到master-info(该文件存slave端)文件中以便在下一次读取的时候能够清楚的告诉master“我需要从哪个binlog文件的哪个pos节点位置开始请把此节点以后的日志内容发给我”。4、slave端的SQL线程在检测到relaylog文件中新增内容后会马上解析该log文件中的内容。然后还原成在master端真实执行的那些SQL语句并在自身按顺丰依次执行这些SQL语句。这样实际上就是在master端和slave端执行了同样的SQL语句所以master端和slave端的数据完全一样的。二.如何实现这里在本地虚拟机模拟演示准备工作两个虚拟机我这里用的是CentOS5.5IP地址分别是192.168.1.101 和192.168.1.105步骤1.修改mysql的配置文件打开二进制日志功能。 命令# vi /etc/my.cnf 增加以下三行配置log-binmysql-bin //将mysql二进制日志取名为mysql-binbinlog_formatmixed //二进制日志的格式有三种statement/row/mixed,具体分别不多做解释这里使用mixedserver-id101 //为服务器设置一个独一无二的id便于区分这里使用ip地址的最后一位充当server-id然后修改从服务器的my.cnf文件也添加以上内容不过server-id的值为从服务器的标识。然后分别重启主、从mysql。2.在主服务器为从服务器分配用户。命令GRANT replication slave ON *.* TO slave% IDENTIFIED BY 111111;3.查看主服务器BIN日志的信息(执行完之后记录下这两值然后在配置完从服务器之前不要对主服务器进行任何操作因为每次操作数据库时这两值会发生改变)。命令show master status;4.进入从服务器执行以下命令设置master。MASTER_HOST : 设置要连接的主服务器的ip地址MASTER_USER : 设置要连接的主服务器的用户名MASTER_PASSWORD : 设置要连接的主服务器的密码MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称即第3步得到的信息MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置即第3步得到的信息(这里注意最后一项不需要加引号。否则配置失败)然后执行start slave;命令启动从服务器。5.查看是否配置成功。命令show slave status;上面两项为Yes说明配置成功。可以在主库更新数据测试从库是否会同步。