长沙网站开发_mysql读写分离

发布日期:2016-08-29 07:48

mysql主从复制:

在执行mysql操作的时候,我们的select语句占到,%70多,修改,删除,增加操作占到30%。

一、主从服务器的原理:

mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后把这个bin日志发给从服务器,在从服务器再把bin日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。

二、给mysql服务器设置授权用户:

$conn = mysql_connect(‘localhost’,’root’,’root’);

grant  all  on *.* to  user1@192.168.10.10 identified by ‘456’;

all 表示所有的权限:

on *.*表示在所有的数据库和数据表,

user1:授权的用户名称

192.168.10.10:表示授权用户登录的主机。

‘456’;用户的密码。

查看授权表:

三、mysql bin-log日志

(1)开启bin-log日志,打开配置文件my.ini  my.conf

在 mysql数据存储的目录下:会出现

该日志中记录当前数据库的一些 sql语句的操作。

(2)如何查看mysql-bin.000003里面的数据内容。

mysqlbinlog –no-defaults   bin log日志文件。

(3)bin-log日志的一些相关的命令:

flush logs 

生成一个新的bin-log日志。

show master status

查看最后一个bin-log日志。

reset master

清空所有的bin-log日志,

(4)使用bin-log日志恢复数据步骤:

a、创建一张表:create table t8(id int);

b、flush logs:生成一个新的日志文件。

c、执行插入语句,

d、flush logs:又生成一个新的日志文件。

e、不小心把t8表里面的数据给清空了,

f、要通过bin-log日志恢复数据吧。 

案例扩展:

要求:把10 ,11 ,12的记录给恢复,如何操作呢?

 
 

四、读写分离:

1、主服务器的配置:

(1)开启所有mysql服务器的bin日志 

修改配置文件添加 

log-bin=mysql-bin

(2)每台服务器设置一个唯一的server-id的值。并重启服务器。 

(3)给从服务器设置授权用户 

grant all  on *.* to user1@192.168.10.10 identified by ‘456’;

或 

grant replication slave on *.* to user@192.168.10.10 identified by ‘456’

或 

grant replication slave on *.* to user@’%’identified by ‘456’ 

 

(4)查看主服务器bin日志的信息(执行完之后记录下这两个值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两个值会发生改变)

2、从服务器配置:

(1)开始关闭从服务器;

stop slave

(2)开始配置:

(3)开启从服务器:

start slave

查看状态。

以上信息由长沙网站建设--长沙蒲公英网络收集与整理,禁止用于任何商业行为