现在的位置: 首页 > 综合 > 正文

安全高性能网站搭建(六)

2016年12月08日 ⁄ 综合 ⁄ 共 2556字 ⁄ 字号 评论关闭

欢迎大家关顾我的淘宝店:点击进入

一 mysql的binlog简介:

     Mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,而不会记录SELECT和没有实际更新的UPDATE语句。

1 日志文件的扩展

       当停止或重启时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增,此外,如果日志文件超过max_binlog_size系统变量配置的上限时,也会生成新的日志文件。

2
日志文件的查看

    Mysql提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。

3
日志文件的停用

    可以使用SET SQL_LOG_BIN=0命令停止使用日志文件,然后可以通过SET SQL_LOG_BIN=1命令来启用。

4
使用日志进行数据库恢复

    如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的日志文件把数据库恢复到最接近现在的可用状态。

       使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复:

              mysqlbinlogxxx-bin.00001 | mysql –u root –p

              mysqlbinlogxxx-bin.00002 | mysql –u root –p

5备份过程

下边对Mysql的备份过程进行简单描述:

     1)、首先备机启动备份,备机创建一个I/O线程,用于连接到主机并请求主机的更新语句。

     2)、主机为每个备机创建一个线程用于发送二进制日志内容,该线程可以通过SHOWPROCESSLIST语句来查看,名称为Binlog Dump

     3)、备机I/O线程读取主机发送的更新并将其拷贝到本地文件,称为中继日志(relaylogs)。

     4)、备机创建一个SQL线程用于读取中继日志并执行其中的更新语句。

    

     这些线程的执行状态可以通过SHOWPROCESSLIST命令进行查看:

 

       状态

描述

Sending binlog event to slave 

正在发送二进制事件到备机

Finished reading one binlog; switching to next binlog

已经读完一个文件,正在切换到下个文件

Waiting to finalize termination 

等待结束(线程终止)

 

     其中备机的IO线程状态可以通过SHOWSLAVE STATUS进行查看:

 

              状态

描述

Connecting to master                                 

尝试连接到主机

Checking master version         

检查主机的版本

Registering slave on master

往主机注册备机

Requesting binlog dump

请求日志文件

Waiting to reconnect after a failed request       

在请求失败后等待重新连接

Reconnecting after a failed binlog dump request

正在重连

Waiting for master to send event

等待主机发送数据

Queueing master event to the relay log

正在将数据拷贝到中继日志

Waiting to reconnect after a failed master event

read 读取主机失败后等待重连

Reconnecting after a failed master event read

正在重连

Waiting for the slave SQL thread to free enough relay log  space IO

正在等待sql线程执行后以便删除一些中继文件

Waiting for slave mutex on exit         

等待进程退出

 

     查看备机的SQL线程状态:

 

       状态

描述

Reading event from the relay log

relay log中读取日志

Has read all relay log; waiting for  the slave I/O thread to update it

已读完中继日志,等待备机IO线程更新

Waiting for slave mutex on exit       

sql线程已经停止。

 6 使用binlog进行mysql同步

    MySQL使用Binlog进行数据库同步。在启用Binlog功能的MySQL数据库上,每一个操作(insertupdatedelete等)都会写入到

binlog文件中。所以只要跟踪Binlog,就可以把对主数据库的操作在从数据库上重新执行。所以要进行MySQL的数据库同步,必须在

主服务器启用Binlog

保证两台服务器的起点相同,是MySQL同步的关键。因为Binlog记录的数据只是操作,并没有数据本身,明确数据和Binlog的对应关

系,才能在保证数据完整。

       MySQL数据库的同步机制限制了同步是一定要区分主/从服务器的,不能够在主/从服务器两台机器上同时执行写操作。因为

任何一个操作都是在主服务器上操作结束后才会通过Binlog发送到从服务器上,所以从服务器不能够执行任何修改数据的操作。

 

相关文档提到可以使用MySQL的同步机制构造一个同步的环形结构,依次配置主/从关系(极限情况是两台机器互为主/从),实

现所有数据库均可以进行写操作,但此种方式在数据一致性方面没有保证,因为两个数据库互相并不检查写锁定,会有同时更新同

一条记录的情况出现。

 

比较稳定的结构是一个主数据库负责写操作,根据负载情况配置一个或多个从数据库负责读操作。在负载不大的情况下使用从数据

库做实时的数据库备份也是一个很稳定的结构。

 

7利用binlog实现主从同步具体步骤:http://hi.baidu.com/useradd/blog/item/6c299726afc478178a82a1dd.html

8 具体mysql配置:http://saplingidea.iteye.com/blog/482060

 

 

 

 

抱歉!评论已关闭.