--all-databases 备份所有库,包含CREATE DATABASE命令,无需手动创建库
--database DBNAME,... 备份指定库,包含CREATE DATABASE命令,无需手动创建库
--events 备份事件调度器
--routines 备份存储过程和函数
--triggers 备份触发器
备份思路:
锁表 --> 磁盘同步数据-->刷新二进制日志 --> 备份二进制日志文件(最好全部保留) --> 完全备份 --> 增量备份
还原思路:
如有必要重新初始化数据库 --> 临时关闭二进制日志记录 --> 还原完全备份 --> 还原增量备份 --> 即时点还原(将编号最大的二进制日至文件通过管道送给mysql服务器 )--> 开启二进制日志记录
备份策略:
完全+增量:
还原策略:
完全+增量+即时点
实例:
1.备份jiaowu数据库,假设为MyISAM引擎,使用温备份:
mysql> LOCK TABLES;
mysql> FLUSH TABLES;
或
mysql>FLUSH TABLES WITH READ LOCK;
mysql>FULSH LOGS;
mysql>SHOW BINARY LOGS;
#mysqldump -uroot -p jiaowu> /root/backup/jiaowu.sql
mysql>UNLOCK TABLES;
或
#mysqldum -uroot -p --master-data=2 --lock-all-tables --flush-logs jiaowu > /root/backup/jiaowu.sql
2.备份jiaowu数据库,假设为InnoDB引擎,使用热备份:
#mysqldump -uroot -p --master-data=2 --flush-logs --single-transaction jiaowu > /root/backup/jiaowu.sql
3.完全备份:
#mysqldump -uroot -p --lock-all-tables --flush-logs --all-databases --master-data=2 > /root/backup/alldb-`date +%F-%H-%M-%S `.sql
4.增量备份:
可以备份二进制日志或者是对某表进行备份,根据具体情况而定。
假设刷新日志后,生成最新的日志为mysql-bin.000008。
mysql>FLUSH LOGS;
#cp mysql-bin-* /root/binlog/
#mysqlbinlog mysql-bin-000002 >/root/backup/mysql-inc/binlog-2.sql
...
#mysqlbinlog mysql-bin-000007 >/root/backup/mysql-inc/binlog-3.sql
5.即时点备份:
#mysqlbinlog mysql-bin-0000008> /root/backup/mysql-inc/binlog-`date +%F+%H+%M+%S `.sql
6.假设数据所在磁盘损坏,进行还原:
初始化数据库并启动服务
#cd /usr/local/mysql
#scripts/mysql_install_db --user=root --datadir=/mdata/data
#service mysqld start
导入完全备份和所有增量:
#mysql -uroot -p < /root/backup/alldb-xxxx.sql
#mysql -uroot -p < /root/backup/mysql-inc/binlog-xxxxx.sql
...
导入即时点数据:
#mysqlbinlog mysql-bin-LATEST > /root/lastbinlog.sql
#mysql -uroot -p < /root/lastbinlog.sql
或
#mysqlbinlog mysql-bin-LATEST |mysql -uroot -p
6.使用5的方法虽然可以恢复,但是会被记录到二进制日志中,一般还原的操作是无需记录到二进制日志的。临时关闭当前会话的二进制日志。
mysql>SET sql_log_bin=0;
mysql>SOURCE /root/backup/alldb-xxxx.sql;
mysql>SOURCE /root/backup/mysql-inc/binlog-xxxxx.sql;
...
mysql>SOURCE /root/lastbinlog.sql;
mysql>SET sql_log_bin=1;