您的位置:首页 > 数据库 > MySQL

mysql的主从复制及半同步复制机制剖析

2012-04-15 12:47 417 查看
mysql主从复制攻略

我们以两台两台服务器为例,一个设置为主服务器master,另一个设置为从服务器slave,两台服务器的mysql服务可以正常启动。

在master中,启用二进制日志,server-id=1,一般都已经默认了。在slave中,就可以把server-id=7只要不是1就ok了,如果一样,就会产生混乱,这是确定主从关系的,不过为了以后可能增加多台slave,留点空间,可以是11,22等,呵呵!

如果你想让其作为中间代理,则可以启动二进制日志,否则还是关了吧!但是有一项是必须要启动的,那就是relay-log。在配置文件中添加这两项:

relay-log=relay-bin

relay-log.index=relay-bin.index

然后, 就可以在master中给定一个从服务器来访问的权限了,命令如下:

mysql> grant replication slave ,replication client on *.* to repl@'172.16.%.% identified by 'password';

给予一个网段的主机,用户名是repl,在172.26网段上,可以复制数据,但是必须以某个用户并有密码才能复制。

flush privileges

show grant for repl@‘172.16.%.%';

可以查看信息

然后重启从服务器:service mysqld restart,可以查看

在从服务器中,进入mysql

然后在mysql中添加以下内容:

mysql> CHANGE MASTER TO MASTER_HOST='172.16.20.1', MASTER_USER='REPL', MASTER_PASSWRD='123'(此为例子)

mysql> start slave; 启动从服务器

show slave status\G 查看从服务器的功能属性

如果此两行:Slave_IO_Running: Yes

Slave_SOL_Running: Yes

则表示主从服务正常启动,可以在主服务器中更新数据,在从服务器中查看验证了。

mysql的半同步策略

mysql的半同步是google贡献出的一个插件,其作用是,在主从之间,网络传输可靠,可以让主服务器的数据同步到从服务器上,即为同步传输,如果在一定的时间内,没有响应,则又变成异步传输。那么怎样设置半同步呢?

首先,我们要在主从服务器上安装相应的插件,这个模块在高级版本中已经附带好了,在mysql安装路径下的lib/plugin/下,安装步骤如下:

在主服务器上:

mysql> install plugin rpl_semi_sync_master SONAME'semisync_slave.so';

mysql> show plugins;

启用并设置变量值:

mysql> set global rpl_semi_sync_master_enabled=1;

mysql> set global rpl_semi_sync_master_timeout=1000;

在从服务器上:

mysql> install plugin rpl_semi_sync_slave SONAME'semisync_slave.so';

mysql> show plugins; 可以查看模块是否装载完成。

mysql> set global rpl_semi_sync_slave_enabled=1;

重启从服务器进程:

mysql> stop slave;

mysql> start slave;

然后使用命令:

show status like 'rpl_%';

查看服务器状态是否正常开启半同步服务。

之后就可以测试了,对了,在mysql下的设置是不会永久有效的,若要永久有效,就要写到配置文件中,你懂的,嘿嘿!

另外附属:

在mysql启动的时候,从服务器是会自动启动的,很多时候我们并不想让其自动启动,那该怎么办呢?为什么会自动启动呢?

在mysql/data/路径下,有master.info ,relaylog.info这两个文件的存在,在master.info 文件中是CHANGE MASTER TO 传递的一些参数,在relaylog.info文件中,指定的是当前使用的中继日志及位置,还有主服务器的二进制日志及其位置,这俩个文件尤其重要,所以一般不要去修改它。

之所以会自动启动是因为这两个文件存在,要让其不自动启动,就要在mysql的配置文件中的[mysqld]段中添加这么一行:skip-slave-start=1就ok了!

本文出自 “刘水鹏CTO” 博客,请务必保留此出处http://string.blog.51cto.com/4375751/835021
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: