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'
是维C呀 
![[爱了]](/js/img/d1.gif)
![[尴尬]](/js/img/d16.gif)