码迷,mamicode.com
首页 > 其他好文 > 详细

读写分离

时间:2016-05-23 13:19:22      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

?

一、读写分离:

1、基本概念

?

至少两台数据库服务器,可以分别设置主服务器和从服务器,对主服务器的任何操作都会同步到从服务器上。

主服务器:增删改的操作:

从服务器:查询操作。

2、基本原理:

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

?

技术分享

二、mysql用户的管理:

1、创建用户,给用户授权

技术分享

查看当前服务器上面的用户情况:

技术分享

创建用户语法:

grant 权限名称 on *.* to ‘用户名称‘@‘登录的主机‘ identified by ‘密码‘

技术分享

*.* 所有的库和所有的表.

all :是指所有的权限。

%:是指在所有的主机上都可以登录。也可以指定一个ip地址。表名登录的主机。

技术分享

?

2、删除用户:

?

drop user 用户名称@host主机名

技术分享

?

3、root用户密码丢失,如何重新设置。

(1)关闭mysql

(2)进入到mysqlbin目录,mysqld.exe --skip-grant-tables;

技术分享

?

(3)无需密码登录。

技术分享

(4)重新设置root用户的密码

?

update mysql.user set password=password() where user=‘root‘ and host=‘localhost‘;

?

技术分享

(5)加载设置权限。

flush privileges

技术分享

?

三、bin-log日志

1、如何打开bin-log日志。

在配置文件中:添加如下语法:

bin-log=log日志的文件名。

bin-log 默认是存储在data目录(和数据库的目录一致),我们也可以指定它的存储地址。

?

技术分享技术分享技术分享

?

2、如何查看log-bin日志里面的内容。

使用该命令:查看log-bin日志里面的内容,在查看该日志时,重点要记住记录的sql语句和pos(存储sql语句的位置)点。

技术分享

语法:

mysqlbinlog.exe –no-defaults log-bin日志的完整路径

?

技术分享

?

技术分享

?

3、和log-bin有关的几个函数。

?

mysql>flush logs 生成最新的一个bin-log日志

此时就会多一个最新的bin-log日志

mysql>show master status

查看最后一个bin日志

技术分享

mysql>reset master;

清空所有的bin-log日志。

查看bin-log日志里面的内容

mysqlbinlog –no-defaults mysql-bin.000003

?

4、完成使用log-bin日志恢复数据一个案例:

(1)创建一个表;

技术分享

(2)重新生成一个bin-log日志文件。

flush logs

(3)添加数据

技术分享

(4)重新生成一个bin-log日志文件

?

(5)不小心把里面的数据给删除了。

?

?

(6)恢复数据

?

可以使用bin-log日志完成数据的恢复。

?

mysqlbinlog.exe –no-defaults 日志的完整路径 | mysql –uroot –proot

?

技术分享

?

测试结果恢复成功:

技术分享

?

5、使用日志里面的pos点来完成数据的恢复。

典型案例:一个公司,在上午9:00备份了数据,到9:30分的时候,由于员工误操作,把半小时内的数据给弄丢了。问如何恢复。

技术分享

技术分享

?

四、读写分离的配置:

1、主服务器的配置:

(1)主服务器和从服务器都开启bin-log日志,

(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)查看主服务器的最后一个log-bin日志 的名字和pos点

show master status;

技术分享

要注意:此时要停止对主服务器的任何操作。因为对主服务器有读写操作则postion会跟着改变。

2、从服务器的配置:

(1)先关闭从服务器(每次重新配置时需要先关闭)

stop slave

?

(2)开始配置:

change master to master_host=‘主服务器的ip地址‘,master_user=‘主服务器上用于同步数据的账号‘,master_password=‘同步账号的密码‘,master_log_file=‘bin日志的文件名‘,master_log_pos=bin日志中的position值。

技术分享

?

(3)开启重服务器:

start slave

(4)查看有没有成功:

show slave status \G

技术分享

?

Slave_IO_Running:Yes

此进程负责从服务器从主服务器上读取binlog 日志,并写入从服务器上的中继日志。

Slave_SQL_Running:Yes

此进程负责读取并且执行中继日志中的binlog日志,

注:以上两个都为yes则表明成功,只要其中一个进程的状态是no,则表示复制进程停止,错误原因可以从"last_error"字段的值中看到。

读写分离

标签:

原文地址:http://www.cnblogs.com/yizhinageyuanfang/p/5519528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!