所属栏目:发布日期:2016-08-29 08:48浏览量:2833作者:admin
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
查看状态。