MySQL的日志和备份(第41天)

 MySQL日志分类:

查询日志:query log ,一般不开启

慢查询日志:slow query log 

错误日志:error log  

二进制日志:binary log

中继日志:reley log

事务日志:transaction log  


查询日志:

查询日志记录查询操作,这些日志可以保存在文件(file)和表(table)中,查询日志一般不开启

查询日志的相关的变量:  show global variables like '%log%';  

general_log      可以设置为ON或者OFF,表示开启或者关闭

general_log_file          c:\wamp64\bin\mysql\mysql5.7.24\data\hp8570p.log

log_output      可以设置为TABLE或者FILE或者NONE


慢查询日志:slow query log 

慢查询日志一般建议开启

查询时间超过指定时长的查询操作,long_query_time变量就是指定时长

show global variables like 'long_query_time';   查询该变量

set global long_query_time=12;      设置该变量


慢查询相关变量:

slow_query_log      可以设置为ON或者OFF

slow_query_log_file          c:\wamp64\bin\mysql\mysql5.7.24\data\hp8570p-slow.log


错误日志:

并不是只记录错误日志

该日志记录了mysqld启动和关闭过程中输出的事件信息,mysqld运行中产生的错误信息,event scheduler运行一个event时产生的日志信息,在主从复制架构中的从服务器上启动从服务器线程时产生的信息

错误日志的相关变量:

log_error        c:\wamp64\logs\mysql.log            

log_warnings       设置为0或1      表示是否记录警告信息到错误日志中


二进制日志:重要

记录导致数据改变或潜在导致数据改变的sql语句:

使用二进制格式保存;

二进制日志是滚动的,mysql-bin.000001 mysql-bin.000002  ....

二进制日志的功能:用于通过“重放”日志文件中的事件来生成数据副本



SHOW BINARY LOGS;    查看mysql二进制日志文件

SHOW MASTER LOGS;  查看mysql二进制日志文件

SHOW MASTER STATUS;    查看当前正在使用的二进制日志文件及事件

SHOW BINLOG EVENTS in 'mysql-bin.000001'; 查看日志文件中记录的事件



二进制日志记录的格式:

基于语句记录:statement,相当于记录sql语句的

基于行记录:row,相当于记录数据的

缓和模式:mixed, 系统自行判定该基于哪种方式进行记录



二进制日志文件的构成:包括日志文件和索引文件

日志文件:mysql-bin.00001  mysql-bin.00002  .......   这些是二进制格式

索引文件:mysql-bin.indxe     文本格式


二进制日志相关的变量:show  global variables like '%log%'; 

sql_log_bin    设置为ON或者OFF  表示是否开启二进制日志

log_bin       日志文件的位置,可以在配置文件中配置

binlog_format      二进制日志的格式有ROW和STATEMENT和MIXED

max_binlog_size       单个二进制日志的最大体积,默认1G。达到最大自动滚动。

expire_logs_days  

sync_binlog=0 设定多久同步一次二进制日志文件;0表示不同步;任何正值都表示记录多少个语句后同步一次;



二进制日志格式的查看工具:mysqlbinlog  (客户端命令工具)

 mysqlbinlog --no-defaults  C:\wamp64\bin\mysql\mysql5.7.24\data\mysql-bin.000001


# at 19364

#140829 15:50:07 server id 1  end_log_pos 19486 Query thread_id=13 exec_time=0 error_code=0

SET TIMESTAMP=1409298607/*!*/;

GRANT SELECT ON tdb.* TO tuser@localhost

/*!*/;


事件发生的日期和时间;(140829 15:50:07)

事件发生在服务器的标识(server id)

事件的结束位置:(end_log_pos 19486)

事件的类型:(Query)

事件发生时所在的服务器执行此事件的线程的ID:(thread_id=13)

语句的时间戳与将其写入二进制文件中的时间差:(exec_time=0)

错误代码:(error_code=0)

事件内容:(SET TIMESTAMP=1409298607/*!*/; GRANT SELECT ON tdb.* TO tuser@localhost)             

GTID:事件所属的全局事务ID:(GTID 0-1-2)


mysqlbinlog命令的一些选项:

-j, --start-position=#:从指定的事件位置查看

--stop-position=#:只显示到指定的事件位置


--start-datetime=name

--stop-datetime=name

    YYYY-MM-DD hh:mm:ss


中继日志:

mysql复制架构中,从服务器哟娜与保存从主服务器的二进制日志中读取到的事件


事务日志:

事务日志由事务型存储引擎自行管理和使用

相关变量:

innodb_log_buffer_size                   8388608                

innodb_log_checksums                   ON                     

innodb_log_compressed_pages      ON                     

innodb_log_file_size                        268435456              

innodb_log_files_in_group              2                      

innodb_log_group_home_dir          .\                     

innodb_log_write_ahead_size          8192


mysql的备份和恢复(recovery)


mysql备份

为什么要备份?

灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击;误操作;

对数据做测试:


备份时候要注意的事项:

可容忍丢失多少数据;

恢复数据需要在多长时间内完成;

需要恢复什么数据;


备份类型:

完全备份,增量备份,差异备份

增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分;

差异备份:仅备份最近一次完全备份以来变化的数据

一般的备份策略是完全备份+增量备份或者是完全备份+差异本备份


备份类型:

热备份、温备份和冷备份:

热备份:在线备份,读写操作不受影响;

温备份:在线备份,读操作可继续进行,但写操作不允许;

冷备份:离线备份,数据库服务器离线,备份期间不能为业务提供读写服务;

MyISAM: 支持温备

InnoDB: 支持热备


备份类型:

物理备份:直接复制数据文件进行的备份;

逻辑备份:从数据库中“导出”数据另存而进行的备份;(mysqldump),与存储引擎无关


规则备份时需要考虑的因素:

持锁的时长

备份数据过程时长

备份时增加的系统负载

恢复数据过程时长


具体备份哪些数据:

数据、额外的数据(二进制日志和InnoDB的事务日志)、代码(存储过程和存储函数、触发器、事件调度器等)、服务器配置文件


设计备份方案:

数据集:完全备份+增量备份

备份手段:物理备份,逻辑备份


备份工具:

mysqldump:逻辑备份工具,适用于所有存储引擎,支持温备,支持完全备份,部分备份;对InnoDB存储引擎支持热备;

cp, tar等文件系统工具:物理备份工具,适用于所有存储引擎;仅支持冷备;支持完全备份,部分备份;

lvm2的快照:可以实现几乎热备;借助于文件系统工具实现物理备份;

mysqlhotcopy: 几乎冷备;仅适用于MyISAM存储引擎;(此工具基本没用)


备份方案之备份工具的选择:

mysqldump+binlog: mysqldump做完全备份,通过备份二进制日志实现增量备份;

lvm2快照+binlog:lvm2配合cp,tar工具做物理备份,通过备份二进制日志实现增量备份

xtrabackup: Percona公司提供

对InnoDB:热备,支持完全备份和增量备份

对MyISAM引擎:温备,只支持完全备份


























评论

此博客中的热门博文

OAuth 2教程

网格策略

apt-get详细使用