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'