来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,而...
mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,而不管slave上是否接受到了这个二进制日志。在半同步复制的架构下,当master在将自己binlog发给slave上的时候,要确保slave已经接受到了这个二进制日志以后,才会返回数据给客户端。对比两种架构:异步复制对于用户来说,可以确保得到快速的响应结构,但是不能确保二进制日志确实到达了slave上;半同步复制对于客户的请求响应稍微慢点,但是他可以保证二进制日志的完整性。 下面来配置一个半同步复制实现的主从架构: 192.168.1.141为mysql的主服务器 192.168.1.142为mysql的从服务浓ky"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc8YnI+Cjxicj4KPHN0cm9uZz4xLs6qbXlzcWzW97f+zvHG98zhuanF5NbDPC9zdHJvbmc+PGJyPgqx4LytL2V0Yy9teS5jbmYszOG5qdLUz8K1xMXk1sM8YnI+CmxvZ19iaW49aW5kZXg8YnI+CnNlcnZlcl9pZD0xPGJyPgrU2tb3t/7O8cb3yc/K2sioPGJyPgojIG15c3FsJmd0OyBncmFudCByZXBsaWNhdGlvbiBzbGF2ZSxyZXBsaWNhdGlvbiBjbGllbnQgb24gdXNlckA="192.168.1.142' identified by "123456"; # mysql> flush privileges; 2.为mysql从服务提供配置 编辑/etc/my.cnf,提供以下的配置 server_id=10 relay_log=relay read_only=on skip-slave-start=1 进入mysql命令行接口 # mysql > change master to MASTER_HOST="192.168.1.141",MASTER_USER="user",MASTER_PASSWORD="123456",MASTER_LOG_FILE="index.000004",MASTER_LOG_POS=429; # mysql > start slave; 如果能够看到Slave_IO_Running: Yes和Slave_SQL_Running:Yes两行信息的话,证明主从配置已经成功。 要使用mysql的半同步复制功能需要为mysql装插件,mysql默认支持的插件在/usr/local/mysql/lib/plugin/,里面有两个semisync_master.so和semisync_slave.so的共享库是我们实现mysql半同步复制的关键 3.设置半同步复制 在mysql主服务器的命令行接口下执行如下代码: # mysql > install plugin rpl_semi_sync_master SONAME 'semisync_master.so'; # mysql > show variables like "%semi%";(如果看到新增的semi变量的话证明安装模块成功) | rpl_semi_sync_master_enabled | OFF | 是否启动半同步复制,默认关闭 | rpl_semi_sync_master_timeout | 10000 | 等待从服务器告诉接受到的超时时间,如果时间到了,还没接受到,自动降级为异步 | rpl_semi_sync_master_trace_level | 32 | 运行级别 | rpl_semi_sync_master_wait_no_slave | ON | 没有slave的时候是否也需要等待,默认为也需要等待 # mysql > set global rpl_semi_sync_master_enabled = 1; # mysql > set global rpl_semi_sync_master_timeout = 1000; 在mysql从服务器的命令行接口下执行如下代码: # mysql > install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so'; # mysql > show variables like "%semi%";(如果看到新增的semi变量的话证明安装模块成功) # mysql > set global rpl_semi_sync_slave_enabled = 1; # stop slave; # start slave; 最后把常用的配置参数写如配置文件中: 192.168.1.141: [mysqld] rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000 192.168.1.142: [mysqld] rpl_semi_sync_slave_enabled=1 4.查看半同步复制的状况信息 在192.168.1.141执行如下命令: mysql> show status like "%semi%"; +-------------------------------------------------------------------+----------+ | Variable_name | Value | +-------------------------------------------------------------------+----------+ | Rpl_semi_sync_master_clients | 1 | 半同步复制客户端的个数 | Rpl_semi_sync_master_net_avg_wait_time | 555 | 平均等待时间(默认毫秒) | Rpl_semi_sync_master_net_wait_time | 1665 | 总共等待时间 | Rpl_semi_sync_master_net_waits | 3 | 等待次数 | Rpl_semi_sync_master_no_times | 0 | 关闭半同步复制的次数 | Rpl_semi_sync_master_no_tx | 0 | 表示没有成功接收slave提交的次数 | Rpl_semi_sync_master_status | ON | 表示当前是异步模式还是半同步模式,on为半同步 | Rpl_semi_sync_master_timefunc_failures | 0 | 调用时间函数失败的次数 | Rpl_semi_sync_master_tx_avg_wait_time | 575 | 事物的平均传输时间 | Rpl_semi_sync_master_tx_wait_time | 1725 | 事物的总共传输时间 | Rpl_semi_sync_master_tx_waits | 3 | 事物等待次数 | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | 当前有多少个session因为slave的回复而造成等待 | Rpl_semi_sync_master_yes_tx | 3 | 成功接受到slave事物回复的次数 +-------------------------------------------------------------------+---------+ 5.取消半同步复制的插件 192.168.1.141上: # mysql > uninstall plugin rpl_semi_sync_master; # mysql > show status like "%semi%" 192.168.1.142上: # mysql > uninstall plugin rpl_semi_sync_slave; # mysql > show status like "%semi%" |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com