读写分离的作⽤
写会锁表,⽽且⽐较耗时。如果⼀个表经常写⼊,那么⽆疑会影响到查询的效率。所以将经常写⼊的数据库进⾏读写分离之后,会⼤幅提升读取效率。
(实际上,⾯试时,只会问你知不知道原理,底层是怎么实现的,其实你会不会配不重要。简单来说,就是主数据库的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 //此状态必须YESSlave_SQL_Running: Yes //此状态必须YES如果有⼀项为No都不会同步成功。
我碰到过Slave_IO_Running为Connecting的。那可能是上⾯的连接change master to master_host...写错了。第九步、随意修改下主数据库的数据,从服务器数据库⽴即会更新
因篇幅问题不能全部显示,请点此查看更多更全内容