查看所有日志,在mysql中:
purge master logs to 'localhost-bin.000006'; 删除日志
PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss' 将删除什么日期之前的所有日志
expire_logs_day=3 这个是在配置文件中标注 日志过期多少天将自动删除
flush logs 启用新的日志文件,一般是备份完数据后执行
reset master; 清空所有bin-log
备份
1、备份所有数据库: mysqldump -uroot -p --all-databases > all.sql
2、备份数据库test:msyqldump -uroot -p test >test.sql
3、备份数据库test下的user和time表: mysqldump-uroot -p test user time> user_time.sql
4、备份数据库test下的所有表为都好分割的文本,备份到/tmp msyqldump -uroot -T/tmp test emp --fields-terminated-by','
more emp.txt
为了保证数据备份的一致性,MyISAM 存储引擎在备份的时候需要加上-l 参数,表示将所有表加上读锁,在备份期间,所有表将只能读而不能进行数据更新。
但是对于事务存储引擎(InnoDB 和 BDB)来说,可以采用更好的选项--single-transaction,此选项将使得 InnoDB 存储引擎得到一个快照(Snapshot),
使得备份的数据能够保证一致性。
完全恢复
1、将备份作为输入执行即可 mysql -uroot -p < bakfile
2、备份恢复后将备份后执行的日志进行重做 mysqlbinlog binlog-file | mysql -uroot -p***
1、mysqldump -uroot –p –l –F test >test.dmp
其中-l 参数表示给所有表加读锁,-F 表示生成一个新的日志文件,
2、10 点,数据库突然故障,数据无法访问。需要恢复备份: mysql -uroot -p test < test.dmp
3、使用 mysqlbinlog 恢复自 mysqldump 备份以来的 BINLOG。
mysqlbinlog localhost-bin.000015 | mysql -u root –p test
基于时间点恢复:
1、如果上午 10 点发生了误操作,可以用以下语句用备份和 BINLOG 将数据恢复到故障前:
shell>mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 | mysql -u
root –pmypwd
2、跳过故障时的时间点,继续执行后面的 BINLOG,完成恢复
shell>mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456| mysql -u
root -pmypwd \
基于位置恢复
和基于时间点的恢复类似,但是更精确,因为同一个时间点可能有很多条SQL语句同时
执行。恢复的操作步骤如下。
1、shell>mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
该命令将在/tmp 目录创建小的文本文件,编辑此文件,找到出错语句前后的位置号,
例如前后位置号分别是 368312 和 368315。
2、恢复了以前的备份文件后,应从命令行输入下面内容:
shell>mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd
shell>mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \
上面的第一行将恢复到停止位置为止的所有事务。下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。
因为 mysqlbinlog 的输出包括每个 SQL 语句记录之前的 SET TIMESTAMP 语句,因此恢复的数据和相关 MySQL 日志将反应事务执行的原时间。
每天自动备份文件
df -h #查看文件的大小
创建备份目录
cd /home
mkdir backup
cd backup
创建备份shell脚本
vi sets.sh
在脚本里粘贴内容
#!/bin/bash
file_name=$(date+ %Y%m%d_%H%M%S)
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$file_name.sql
添加可执行权限
chmod u+x bkDatabaseName.sh
测试:
./sets.sh
添加计划任务
crontab -e
内容填写:
*/1 * * * * /home/backup/sets.sh
查看任务日志
tail -f /var/log/cron
看有没有文件创建