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了!