您的当前位置:首页正文

MySQL主从热备份(读写分离)

2024-08-28 来源:汇智旅游网
MySQL主从热备份(读写分离)

读写分离的作⽤

  写会锁表,⽽且⽐较耗时。如果⼀个表经常写⼊,那么⽆疑会影响到查询的效率。所以将经常写⼊的数据库进⾏读写分离之后,会⼤幅提升读取效率。

  (实际上,⾯试时,只会问你知不知道原理,底层是怎么实现的,其实你会不会配不重要。简单来说,就是主数据库的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...写错了。第九步、随意修改下主数据库的数据,从服务器数据库⽴即会更新

因篇幅问题不能全部显示,请点此查看更多更全内容