1、MySQL服务器日志
MySQL日志:
查询日志:由于I/O占用比较大所以不建议开启。
慢查询日志:记录查询时间超出设定时间的查询语句。
错误日志:记录错误信息
二进制日志:重做日志
中继日志:备服务器从主服务器复制过来的数据临时暂存在备服务器上日志文件叫中继日志
事务日志:ACID, 随机I/O转换为顺序I/O
show global variables like ‘%log%‘;:显示日志相关参数
查询日志:
{ log_output = {TABLE|FILE|NONE}:指定存储格式,none不记录查询日志信息。
general_log = {ON|OFF}: 是否启用查询日志,如果设置为ON,log_output变量才会有意义。
general_log_file = /opt/mysqld.log:当log_output有FILE类型时,日志信息的记录位置;}
慢查询日志:
select @@global.long_query_time;:如果查询超过设定值就判定为慢查询。
slow_query_log = {ON|OFF}:是否启动慢查询日志
slow_query_log_file = /opt/mysqld.log:慢查询日志文件
错误日志:
mysqld会记录启动和关闭过程中输出的信息和运行中产生的错误信息,在主从架构中的从服务器上启动成功,可以在该日志中体现。
log_error:指定错误日志路径和文件名
log_warnings:是否将警告信息记录在错误日志中
二进制日志:
show {binary | master} logs;:在主从架构中主服务器端处于由mysqld维护状态中的二进制日志文件
show binlog events in ‘mysql-bin.000005‘\G:显示二进制文件中的数据
日志记录格式分为2种“:
一种为语句记录:记录sql执行语句
一种分为行记录:记录表中修改过的行,例如:时间改变后不能再基于语句记录
mysql可以采用混合记录模式:mixed
binlog_format:二进制日志记录模式 {MIXED(混合模式)| statement(语句模式)| row(行模式)}
log_bin:指定日志文件记录位置
sql_log_bin :是否启用二进制记录日志
max_binlog_size:二进制文件单个大小
max_binlog_cache_size: 二进制缓存大小
max_binlog_stmt_cache_size:二进制语句缓存大小
sync_binlog:是否立即同步缓存到日志文件中,0表示不同步,其他数值表示记录多少语句后同步
二进制日志文件构成
日志文件:文件名前缀.文件名后缀:例如在data目录下:mysql-bin.000001
索引文件:文件名前缀.index:例如在data目录下:mysql-bin.index
mysqlbinlog:查看二进制二文件每一个at为一个事件开始:例如: mysqlbinlog mysql-bin.000005
事务日志(innodb日志)
innodb_log_grep_home_dir:日志文件目录
innodb_log_file_size:日志文件大小
innodb_mirrored_log_groups:事务日志镜像。
2、MySQL备份恢复的基本概念
备份类型:(完全备份、部分备份)
部分备份:只备份数据库中的一张或多张表。
完全备份中增量备份:备份上一次完全备份后有变化的数据
热备份、温备份、冷备份:
热备份:在线备份,服务器读写操作不受影响
温备份:在线备份,数据库只能读不能写
冷备份:离线备份,备份期间不能为业务提供服务
myisam:温备,innodb支持热备。
物理备份和逻辑备份
物理备份:直接复制物理文件备份
基于文件备份,直接复制数据文件即可,但是不能跨平台。
逻辑备份:从数据库中导出数据,保存在文本文件中。
逻辑备份和存储引擎无关myisam和innodb可以相互使用备份数据,特定数据除外例如innodb中支持事务。
设计备份方案:
完全备份+增量备份
备份工具:
mysqldump:逻辑备份工具,支持所有存储引擎,只支持温备,支持完全备份和部分备份。
cp、tar:物理备份工具,冷备适用于所有存储引擎
lvm2的快照:几乎热备,借助于cp、tar实现物理备份
备份方案:
mysqldump+binlog:mysqldump:完全备份,通过二进制数据实现增量备份。
lvm2快照-binlog:几乎热备,物理备份,binlog增量备份
xtrabackup:对innodb支持热备,支持完全备份和增量备份,myisam引擎温备,不支持增备。
3、使用mysqldump及lvm2进行备份
mysqldump: 客户端,通过mysql协议连接至mysqld;
-A、--all-databases:表示全部备份,
例如:./mysqldump -A -uroot -p123456 >/tmp/all1.sql,可以压缩存放xz all1.sql
-x、--lock-all-tables:启动备份前锁定所有表,执行温备。
-l、--lock-tables:备份单张表只锁定备份表。
--single-transaction:innodb热备,启动一个大的单一事务实现备份
-B, --databases db_name1、db_name2:备份单个或多个数据库。不加-B不会创建数据库,需要手动创建数据库后导入数据,加-B会删除原有库重新创建新库在导入数据。
例如:./mysqldump -uroot -p123456 -B mysql >/tmp/all1.sql
-C, --compress:压缩传输;
--master-data[=#]:例如:mysqldump -uroot -p123456 --master-data=1 -B test > 123.sql
记录当前二进制文件最后事件位置,1表示不注释该语句,2表示注释该语句。一般用2.
mysqlbinlog --start-datetime ‘2015-06-13 18:00:00‘ --stop-datetime ‘2015-06-13 18:30:00‘ /mydata/data/mysql-bin.*;:增量备份格式。
mysqlbinlog --stop-position=4 /mydata/data/mysql-bin.000007 >/tmp/a.sql:保存事件到4之前的操作语句
mysqldump备份格式
mysqldump -uroot -p123456 mysql user>mysql_user.sql :备份mysql数据库中user表
mysqldump -uroot -p123456 -B mysql >/tmp/mysql.sql:备份单个数据库
mysqldump -A -uroot -p123456 >/tmp/all1.sql:备份所有数据库
其他选项:
-E, --events:备份指定库的事件调度器;
-R, --routines:备份存储过程和存储函数;
--triggers:备份触发器
flush tables with read lock;:关闭已打开的表,对所有表添加共享锁
unlock tables;:解除锁文件
show master logs;:显示二进制数据文件
show binlog events in ‘mysql-bin.000005‘;:显示当前二进制事件到那个位置
flush logs; :滚动二进制日志,为二进制数据添加一个新文件
show master status;:显示当前使用的是那个二进制文件和具体位置
物理备份:
注意:
在重新安装过mysql后再执行mysqldump时明确启用的是当前数据库的mysqldump
将数据和二进制文件放置于不同的设备;二进制日志也应该周期性地备份;
4、xtrabackup的使用
为避免在还原时产生二进制日志,将临时关闭二进制文件,之后还原数据库,在开启二进制文件
set session sql_log_bin=0;
source /opt/all.sql;
set session sql_log_bin=1;
xtrabackup:工具 官方站点:www.percona.com
此工具依赖于perl-DBD-MySQL,rpm包
完全备份:
innobackupex --user=root --password=123456 /opt/123.sql