美文网首页
mysql的主从复制

mysql的主从复制

作者: 北你妹的风 | 来源:发表于2017-03-08 18:59 被阅读8次

    这篇文章从三方面描述:主从复制的用途?如何实现主从复制?主从复制原理?

    一、主从复制的用途

    用途一:数据库备份 。从数据库会建立一个和主数据库一样的数据环境,当主数据发生故障时或数据丢失时,从数据库可以代替主数据继续工作,减少损失。

    用途二:读写分离。根据28定律,大部分的互联网应用80%是读操作,20%是写操作。通过读写分离,把原来所有操作都集中在主服务器上,变为写操作在主服务器上,读操作在从服务器上,缓解了主数据库的压力,从而提高应用的整体性能。

    从系统架构上来说,基本上还是那两个术语:高可用,高性能。

    二、如何实现主从复制

    这里我不过多的描述,如何实现mysql的主从复制,网上一搜一大堆,照着说明一步一步做就行了。主要描述一下容易出问题的地方;

    1.主服务器在创建有复制权限的用户时,注意语句里面的参数。

    完整的语句如下:grant replication slave  on *.*  to   username@slave_ip identified by 'password'

    username :创建的账户名,这个账户主要用来主从复制使用的,最好不要用root

    @后面跟的是从服务器的ip地址,这是为了安全起见;也可以写成%,表示任意ip的从服务器都可访问。

    这里要注意一点,主从服务器之间的网络一定要是通的,可以用ping命令测试。

    2.从服务器使用 change master to语句实现复制主库。这个语句里面要注意master_log_file和master_log_pos这两个参数 ,这两个参数的值是主库的系统状态值,用show master_status语句查看。

    需要注意的是:重启mysql服务能改变主服务器master_log_file的值,主库的操作能改变master_log_pos的值,所以如遇到同步错误,可以检查一下主服务器的状态值,再同步从库。

    3.要会看懂从服务器的状态。语句为 show slave status,两个参数比较重要:

    Slave_IO_Running,Slave_SQL_Running。看从服务器是否复制成功,需要这两个参数的值都必须为YES,一个为NO都意味着复制失败。 密码错误,网络不通,主服务器binlog文件位置不对等等。

    三、讲一下主从复制的原理

    主服务器把操作日志写导二进制文件中(binlog),从服务器开启两个线程,一个是IO线程,用来向主服务器请求二进制中发生的事件,写到自身中继日志中(relay_log)。然后从服务器再启动一个SQL线程,执行中继日志中的事件,就得到和主服务器中一样的数据了。上图:

    这两个线程其实就是上面提到的Slave_IO_Running,Slave_SQL_Running。

    相关文章

      网友评论

          本文标题:mysql的主从复制

          本文链接:https://www.haomeiwen.com/subject/wfvbgttx.html