Mysql读写分离

意义

  缓解压力,提高效率,主负责读/写请求,从只负责读请求。
   

工作原理

    主服务器将数据更新记录到日志(bin-log),然后定期同步到从服务器。

       步骤1: 所有数据更新都会被主库记录到主库的二进制日志(也叫变更日志)。

       步骤2: 从库IO线程从主库上读取二进制日志,写入到从库的中继日志上。

       步骤3: 从库SQL线程读取中继日志上的内容来更新从库。

 

环境搭建

  1.  在Master数据库中创建一个备份帐户backup,并且只允许从10.100.0.200这个地址上来登陆,密码是1234。

       mysql >

       GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@10.10.39.89 IDENTIFIED BY '1234';

  2.  拷贝数据。(假如是新安装mysql主从服务器,这一步就不需要,因为新安装的master和slave有相同的数据)。关停Master服务器,将Master中的数据拷贝到从服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!

  3.  配置Master。接下来对master进行配置,

        cp /etc/my.cnf /home/xiaoju/mysql/master.cnf

        例如,在配置文件加入如下值:

       server-id=1   //为主服务器A的ID值
       log-bin=mysql-bin   //二进制变更日志

    重启master,

     /usr/bin/mysqld_safe --defaults-file=/home/xiaoju/mysql/master.cnf &

     运行SHOW MASTER STATUS,输出如下:

    

    4.  配置Slave。 Slave的配置与master类似,如下:

         cp /etc/my.cnf /home/xiaoju/mysql/slave.cnf

       log_bin           = mysql-bin
       server_id         = 2
       relay_log         = mysql-relay-bin
       log_slave_updates = 1
       read_only         = 1

       server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。relay_log配置的是中继日志。log_slave_updates表示slave将复制事件写进自己的二进制日志。

    5.  让slave连接master。 如下:

    6.  启动Slave。

    START SLAVE;

   你可以用SHOW SLAVE STATUS语句查看slave的设置是否正确:

     mysql> SHOW SLAVE STATUS\G

     在这里主要是看:

        Slave_IO_Running=Yes   //负责与主机的IO通信
        Slave_SQL_Running=Yes  //负责slave的mysql进程

     如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。你可查看masterslave上线程的状态。在master上,你可以看到slaveI/O线程创建的连接:在master上输入show processlist\G;  

      7.  开启mysql的远程访问权限

      登录主库(10.10.39.89),

      mysql> grant all PRIVILEGES on *.* to root@'10.10.39.90' identified by '1234';

 

读写如何分离

通过代理dbproxy程序(譬如C)来分离读写请求。

 

主从延迟如何解决

尽量缩短slave的同步执行时间,

1. 提升硬件性能

2. 降低数据安全性要求

3. 设计多个从库,多线程执行

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值