C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

读写分离的作用

  写会锁表,而且比较耗时。如果一个表经常写入,那么无疑会影响到查询的效率。所以将经常写入的数据库进行读写分离之后,会大幅提升读取效率。

  (实际上,面试时,只会问你知不知道原理,底层是怎么实现的,其实你会不会配不重要。简单来说,就是主数据库的binLog二进制日志,记录了所有对主数据库的操作,从数据库就是把主数据库把这些操作的日志拷贝过去,再执行一次,这样数据就相同了)。

MySQL读写分离的原理

  这个可以了解一下,开发时作用不大。但面试时比问到也不至于哑口无言。

  1、master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);  

  2、  slave将master的binary log events拷贝到它的中继日志(relay log);

  3、 slave重做中继日志中的事件,将改变反映它自己的数据。

MySQL的主从备份,听个名词很高大上,其实都是MySQL原本就实现的了,你只需要简单配置一下就可以实现。

第一步:保持主从两个数据库是同步的,最好事先手动同步一下

第二步:停止两个数据库,分别更改配置文件;

  下面我使用如下两个地址来说明配置过程。

  • 主数据库:192.168.0.244
  • 从数据库:192.168.0.8

主服务器数据库,增加如下配置:

server-id = 244    #这个唯一就OK,一般取IP地址后面的几位
log-bin = E:\mysql\data\mysql-bin  #日志所在目录
binlog-do-db = test    #这个是要同步的数据库

从服务器数据库,增加如下配置:

server-id = 8    #这个唯一就OK,一般取IP地址后面的几位
replicate-do-db = test  #这个是要同步的数据库

第三步,分别重启两个服务器的MySQL服务;

  • net stop mysql;
  • net start mysql;

两个服务器的MySQL服务都要启动起来;

第四步,主服务器授权Slave权限账号

GRANT REPLICATION SLAVE ON *.* to 'bu'@'%' identified by '123456';

第五步,登录主服务器,查询master状态;

show master status;

注意结果,结果里面的东西,在下一步会用到。

第六步:登录从服务器,配置从服务器的Slave

change master to master_host='192.168.0.244',master_user='bu',master_password='123456',
master_log_file='mysql-bin.000004',master_log_pos=516;

master_log_pos是上面查询出来的Position 516。

第七步、启动从服务器的Slave

start slave;

第八步、验证从服务器的Slave服务状态

show slave status\G

以下两个状态必须为Yes。

Slave_IO_Running: Yes    //此状态必须YES
Slave_SQL_Running: Yes     //此状态必须YES

如果有一项为No都不会同步成功。

我碰到过Slave_IO_Running为Connecting的。那可能是上面的连接change master to master_host...写错了。

第九步、随意修改下主数据库的数据,从服务器数据库立即会更新

posted on 2016-04-22 17:36  逆心  阅读(5020)  评论(0编辑  收藏  举报