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的日志滚动:日志过大做出的策略
# mysqladmin refresh
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引擎 温备:只读不写的 慢 慢
mysqldump innodb 热备:可读可写 慢 慢
ibbackup 商业的 innodb hot 速度快 快
mk-parallel-backup all引擎 温备 中速 中速
filesystem all 冷备 最快 最快
snapshot all hot 快 快
mysqlhotcopy mylsam 几乎冷备 快 快
mysqldump -uroot -p mydb > /root/mysql.sql 备份mydb数据库
mysqldump -uroot -p mydb,class > /root/mysql.sql 备份mydb和class数据库
mysqldump -uroot -p --all-databases > /root/mysql.sql 备份所有
恢复前一般先创建好改数据库
mysql -uroot -p mydb < /root/mysql.sql 恢复 或
source /root/mysql.sql mysql中执行
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
--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
时间点备份: 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