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引擎:温备,只支持完全备份
评论
发表评论