php 大型网站开发教程,西安网站建设需要多少钱,网页游戏烈焰传奇,怎么弄网页mysql的并行复制
在172.25.254.20(slave)主机上
默认情况下slave中使用的是sql单线程回放 在master中时多用户读写#xff0c;如果使用sql单线程回放那么会造成组从延迟严重 开启MySQL的多线程回放可以解决上述问题 mysql show processlist; 在配置文件中进行编辑 [root…mysql的并行复制
在172.25.254.20(slave)主机上
默认情况下slave中使用的是sql单线程回放 在master中时多用户读写如果使用sql单线程回放那么会造成组从延迟严重 开启MySQL的多线程回放可以解决上述问题 mysql show processlist; 在配置文件中进行编辑 [rootnginx ~]# /etc/init.d/mysqld restart Shutting down MySQL. SUCCESS! Starting MySQL. SUCCESS! [rootnginx ~]# mysql -uroot -p mysql show processlist; 此时sql线程转化为协调线程16个worker负责处理sql协调线程发送过来的处理请求。
MySQL 组提交Group commit是一个性能优化特性它允许在一个事务日志同步操作中将多个 事务的日志记录一起写入。这样做可以减少磁盘I/O的次数从而提高数据库的整体性能。 mysql的gitd日志模式
当为启用gtid时我们要考虑的问题 在master端的写入时多用户读写在slave端的复制时单线程日志回放所以slave端一定会延迟与master端
这种延迟在slave端的延迟可能会不一致当master挂掉后slave接管一般会挑选一个和master延迟日 志最接近的充当新的master
那么为接管master的主机继续充当slave角色并会指向到新的master上作为其slave
这时候按照之前的配置我们需要知道新的master上的pos的id但是我们无法确定新的master和slave之 间差多少 当激活GITD
当master出现问题后slave2和master的数据最接近会被作为新的master slave1指向新的master但是他不会去检测新的master的pos id只需要继续读取自己gtid_next即可
gitd日志模式模式部署如下
172.25.254.10(maste)主机 [rootnginx mysql]# # mysqlbinlog -vv /data/mysql/nginx-relay-bin.000001 省略内容 SET SESSION.GTID_NEXT AUTOMATIC /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPEOLD_COMPLETION_TYPE*/; /*!50530 SET SESSION.PSEUDO_SLAVE_MODE0*/; 编辑配置文件设置gtid [rootnginx ~]# vim /etc/my.cnf 重启文件 [rootnginx ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS! 172.25.254.20主机
编辑配置文件设置gtid [rootnginx ~]# vim /etc/my.cnf 重启文件 [rootnginx ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS! 停止salve mysql stop slave; 开启git日志模式同步 mysqlCHANGE MASTER TO MASTER_HOST172.25.254.10, MASTER_USERrepl,MASTER_PASSWORD123, MASTER_AUTO_POSITION1; 开启salve mysql start slave; mysql show slave status\G; 172.25.254.30主机
编辑配置文件设置gtid [rootnginx ~]# vim /etc/my.cnf 重启文件 [rootnginx ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS! 停止salve mysql stop slave; 开启git日志模式同步 mysqlCHANGE MASTER TO MASTER_HOST172.25.254.10, MASTER_USERrepl,MASTER_PASSWORD123, MASTER_AUTO_POSITION1; 开启salve mysql start slave; mysql show slave status\G; mysql的gitd日志模式的部署完成
mysql的半同步模式原理 1.用户线程写入完成后master中的dump会把日志推送到slave端
2.slave中的io线程接收后保存到relaylog中继日志
3.保存完成后slave向master端返回ack
4.在未接受到slave的ack时master端时不做提交的一直处于等待当收到ack后提交到存储引擎
5.在5.6版本中用到的时after_commit模式after_commit模式时先提交在等待ack返回后输出ok
启用用半同步模式,先做好git日志模式
172.25.254.10(master)
编辑配置文件配置启用半同步模式 [rootnginx ~]# vim /etc/my.cnf 配置文件不要重启由于没有安装相应的模块 就没有该功能。
安装半同步插件 mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 查看插件是否安装成功 mysql select * from information_schema.PLUGINS where PLUGIN_NAME LIKE %semi%\G; 打开半同步功能 mysql SET GLOBAL rpl_semi_sync_master_enabled 1 查看半同步功能状态是否开启(AFTER_SYNC) mysql SHOW VARIABLES LIKE rpl_semi_sync%; 查看状态是否开启 mysql SHOW STATUS LIKE Rpl_semi_sync%; 172.25.254.20
编辑配置文件配置启用半同步模式 [rootnginx ~]# vim /etc/my.cnf 安装半同步插件 mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 打开半同步功能 mysql SET GLOBAL rpl_semi_sync_slave_enabled 1; 重启io线程半同步才能生效 mysql STOP SLAVE IO_THREAD; mysql START SLAVE IO_THREAD; mysql SHOW VARIABLES LIKE rpl_semi_sync%; 172.25.254.20的半同步模式配置完成
172.25.254.30
编辑配置文件配置启用半同步模式 [rootnginx ~]# vim /etc/my.cnf 安装半同步插件 mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 打开半同步功能 mysql SET GLOBAL rpl_semi_sync_slave_enabled 1; 重启io线程半同步才能生效 mysql STOP SLAVE IO_THREAD; mysql START SLAVE IO_THREAD; mysql SHOW VARIABLES LIKE rpl_semi_sync%; 172.25.254.30的半同步模式配置完成
测试
172.25.254.10(master)端
查看有多少数据 mysql SHOW STATUS LIKE Rpl_semi_sync%; mysql show databases; mysql create database MySchool_db; mysql show databases; 在172.25.254.20主机上会显示库名 mysql show databases; 在172.25.254.30主机上也会显示库名 mysql show databases;