mysqldump工具是mysql自带的一个非常方便的一款小工具,存在mysql安装目录的/usr/local/mysql/bin下,是CentOS自带的一款工具,它还支持热备份。

优势:自动记录日志position位置(show master status\G;),可用性,一致性,具有锁表机制。

mysqldump  -h 服务器  -u用户名  -p密码   数据库名  > 备份文件.sql
库的范围包括

-A, --all-databases 所有库 school 数据库名 school stu_info t1 是指school数据库的表stu_info、t1
-B, --databases bbs test mysql 多个数据库

–single-transaction #InnoDB 一致性 服务可用性
–master-data=1|2 #该选项将会记录binlog的日志位置与文件名并追加到文件中,或添加注释 --opt #同时启动各种高级选项
-R, --routines #备份存储过程和存储函数 -F, --flush-logs #备份之前刷新日志,截断日志。备份之后新binlog。
–triggers #备份触发器 mysqldump --help 帮助

请准备两套root密码

密码1 XieDongwy@163 配置到当前数据库中 密码2 XieDongwy@1633 备用

 mysqldump -p'XieDongwy@163' \                      执行备份
--all-databases --single-transaction \
--master-data=2 \                            注释掉日志记录
--flush-logs \>  /backup/`date +%F-%H`-mysql-all.sql

vim /backup/2016-11-25-14-mysql-all.sql          查看备份文件
LOCK TABLES `user` WRITE;                              观察各种锁机制,用来保证数据一致性

备份后的,数据变更行为

在testdb2.t2 中插入数据1,2,3;
创testdb3库
切断二进制日志(重启数据库)

mysql> select * from testdb2.t2;+------+| id   |+------+|    1 ||    2 ||    3 |+------+

在testdb2.t2 中插入数据4;
删testdb3库
在testdb2.t2 中插入数据5;

mysql> show databases;+--------------------+| Database           |+--------------------+| testdb1            || testdb2            |+--------------------+
12 rows in set (0.00 sec)mysql>

恢复

cp /var/lib/mysql/*bin* ~     备份二进制日志文件    
systemctl stop mysqld          停止数据库rm -rf /var/lib/mysql/*          清理环境
systemctl start mysqld          启动数据库grep 'password' /var/log/mysqld.log       查找找密码,并改为密码2
mysqladmin -uroot -p'密码' password  ' XieDongwy@1633 '

mysql -p' XieDongwy@1633 ' < /backup/2016-12-08-04-mysql-all.sql
mysql -p'XieDongwy@1633 ' -e 'flush privileges'

二进制日志恢复

vim /backup/2016-11-25-14-mysql-all.sql
CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.0000010', MASTER_LOG_POS=154;mysqlbinlog localhost-bin.000002 localhost-bin.000003
 --start-position=154  | mysql -p'XieDongwy@163'