mysql日志:
error log:记录错误信息、 启动停止过程中的日志信息 、 调度事件 、启用主从服务器会记录从服务器的信息
启用--log-error没参数会保存至数据目录下host_name.err即station_example.err
--log-error=/var/log/mysql.error
mysql_safe --log_warning 1会在错误日志中记录警告信息
binary log二进制日志
对数据修改的语句会记录下来 实现pitr point-in-time recovery将数据库恢复到某个时间点
实现数据库复制的
默认记录在数据目录下mysql-bin.index文本日志====mysql-bin.000001二进制格式
ls /data/
查看二进制日志show binary logs;
启用时添加--log-bin = /data/log/binary/changelog
--log-bin-index = /data/log/
查看二进制文件内容
# mysqlbinlog/data/mysql-bin.000001
mysqlbinlog /data/mysql-bin.000001 --start-datetime="2011-03-21 12:24:30"
--end-datetime="2011-03-21 14:24:30"
mysql中查看日志
show binlog envents
show binlog envents in 'mysql-bin.000001';
show binlog envents in 'mysql-bin.000001' from 525 limit 3;从525开始的前三行
general query log:一般日志文件 默认没开启
启用--general_log=
--general_log_file指定一般日志文件位置
--slow_query_log慢查询日志
--slow_query_log_log
--log_output慢日志记录的格式none不记录file记录在文件table记录在表中 默认为file
查看一般日志文件是否开启:
select @@general_log;
select @@general_log_log;
slow query log慢速日志查询日志
mysql的日志滚动:日志过大做出的策略
# mysqladminrefresh
flush logs手动滚动二进制和错误日志mysql中
可以将其脚本放到特定的目录crontab中
purge binary logs修剪二进制日志 删除指定位置以前的所有日志
purge binary logs to 'mysql-bin.000005'修剪000005之前的日志
purge binary logs before '2011-3-5 23:00:00';
检索修复表:
myisamchk --extend-check文件名 扩展检查修复
--recover stu2.MYI
myisamchk --extend-check /data/mydb/stu2.MYI
mysql中执行:
check table stu2检查表
repair table sru2修复表
analyze table stu2分析表
optimize table stu2又换表
mysql的备份和恢复:
数据库的损坏:电源 人为 硬件 网络失败
备份:完全增量差异
冷备温备热备
逻辑备份 物理备份
一致性备份 :文件的修改时间在备份之前 可用来做恢复的
非一致性备份
名字支持引擎类型备份速度恢复速度
工具:mysqldump逻辑all引擎温备:只读不写的慢慢
mysqldumpinnodb热备:可读可写慢慢
ibbackup商业的innodbhot速度快快
mk-parallel-backupall引擎温备中速中速
filesystemall冷备最快最快
snapshotallhot快快
mysqlhotcopymylsam几乎冷备快快
mysqldump-uroot -p mydb > /root/mysql.sql备份mydb数据库
mysqldump-uroot -pmydb,class > /root/mysql.sql备份mydb和class数据库
mysqldump-uroot -p--all-databases > /root/mysql.sql备份所有
恢复前一般先创建好改数据库
mysql-uroot -p mydb< /root/mysql.sql恢复 或
source /root/mysql.sqlmysql中执行
mysqldump参数:
mysqldump --flush-logs 备份前先日志滚动一下 达到同步状态
--lock-tables 备份前将表锁定一下 防止其他用户写
--lock-all-tables 锁定所有的表
--single-transaction 备份innodb数据库引擎时 可以备份一致性的innodb即使有事务没完成
--all-databases 备份所有数据库
--databases 备份多个不是所有数据库 中间用空格隔开
--master-data=n 数字 记录二进制文件名和位置
--events 备份事件
--triggers 备份触发器
--routines 备份存储过程和存储函数的
--where "" 指定过滤条件,只备份某些数据
mysqldump -uroot -p --flush-logs --lock-all-tables --events --routines --triggers mydb >/root/mysql-`date +"%F"`.sql
selectinfoutfile可以备份具体的表或数据
select * into outfile '/tmp/stu.sql' from stu备份具体表 要有file权限一般用在表数据不小心删除
truncated table stu删除表stu的数据
恢复表 先创建号该表的表结构
use mydb
load data infile '/tmp/stu.sql' into table stu
备份mk-parallel-backup
mk-parallel-backup --basedir=/bachup
恢复:
mk-parallel-restore /backup
http://www.maatkit.org网站下载该rpm包进行安装
snapshot快照备份 备份的整个数据库 数据要在同一个LVM分区上
mysqlhotcopy备份前要锁数据库 备份MyISAM的物理热备
LOCK TABLES stu READ;锁表 将所有的表都锁上
UNLOCK TABLE stu表解锁 或UNLOCK TABLES
备份:mysqlhotcopy
mysqlhotcopy mydb /backup
mysqlhotcopy --method=scp mydb root@192.168.0.65:/backup备份到其他主机上
恢复:
mysqlhotcopy
时间点备份:mysql
mysqlbinlog --start-position 15465完全备份后的位置--end-opsition 202010删除之前的位置| mysql -uroot -p
mysqlbinlog --start-position 15465 --end-opsition 202010 > /tmp/bin.sql
恢复:
mysql -uroot -p < /tmp/bin.sql