mysqldump用法,以及用mysqldump做完全+增量备份
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqldump用法,以及用mysqldump做完全+增量备份相关的知识,希望对你有一定的参考价值。
利用mysqldump对MySQL的完全备份和增量备份
备份的目的:当数据是一种重要资产时,我们需要经常对其进行备份,以防止数据损坏时,能够及时将它恢复到损坏时的状态。
备份内容:数据、配置文件、二进制日志、事务日志
备份分类:
备份类型:
热备份、温备份和冷备份
热备份:读、写不受影响;
温备份:仅可以执行读操作;
冷备份:离线备份;读、写操作均中止;
物理备份和逻辑备份
物理备份:复制数据文件;
逻辑备份:将数据导出至文本文件中;
完全备份、增量备份和差异备份;
完全备份:备份全部数据;
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
差异备份:仅备份上次完全备份以来变化的数据
备份工具:xtrabackup, mysqldump
MyISAM引擎只能支持温备份,InnoDB可以支持热备和温备。
备份策略:完全+增量;完全+差异
mysqldump备份工具介绍
mysqldump 语法
mysqldump DB_NAME [tb1] [tb2] 只备份某个数据库,或库中某个表,注:它不包含该数据库的名称,即将来要还原时,必须手动创建数据库
--master-data={0|1|2}
0::不记录二进制日志文件及位置:
1: 以CHANGE MASTER TO 的方式记录位置,可用于恢复后直接启动从服务器:
2: 以CHANGE MASTER TO 的方式记录位置,但默认被注释:
--lock-all-tables:锁定所有表 对MyISAM引擎的表开始备份前,先锁定所有表。
--flush-logs :备份前,锁定表,执行日志滚动
—single-transaction 启动热备
如果指定库中的表均为InnoDB,可以用—single-transaction 启动热备:
--events 备份事件,备份数据库定义的事件调度器
--routines 备份存储过程和存储函数
--triggers 备份触发器
备份多个库
--all-databases: 备份所有库
--databases DB_NAME,DB_NAME,…备份指定库
这两个命令由于不止备份一个库,所有还原前可以不用手动创建库。
测试一:mysqldump 完全备份 + 二进制日志做及时点还原 模拟 完全备份+增量备份
测试环境: MySQL 版本:mysql-5.1.73-8
Linux发行版:CentOS6.8
实验前准备:
1、创建数据库jiaowu 和 tutors表,如下
创建数据库教务:mysql> CREATE DATABASE jiaowu;
创建tutors表:
CREATE TABLE `tutors` (
`TID` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`Tname` varchar(50) NOT NULL,
`Gender` enum('F','M') DEFAULT 'M',
`Age` tinyint(3) unsigned DEFAULT NULL,
UNIQUE KEY `TID` (`TID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1; // 创建表结构
INSERT INTO `tutors` VALUES // 插入表数据
(1,'HongQigong','M',93),(2,'HuangYaoshi','M',63),(3,'Miejueshitai','F',72),(4,'OuYangfeng','M',76),(5,'YiDeng','M',90),(6,'YuCanghai','M',56),(7,'Jinlunfawang','M',67),(8,'HuYidao','M',42),(9,'NingZhongze','F',49);
2、启用二进制日志
在配置文件/etc/my.cnf 的[mysqld]添加 log-bin=mysql-bin (mysql-bin表示二进制日志名称);然后重启服务:service mysqld restart
查看bin_log是否开启:mysql> SELECT @@sql_log_bin; 1:表示开启
实验步骤:
1、 锁表、刷新
mysql> FLUSH TABLES WITH READ LOCK;
2、 查看当前二进制日志
mysql> SHOW MASTER LOGS;
3、 做日志滚动
mysql> FLUSH TABLES WITH READ LOCK;
4、 查看滚动后二进制记录起始记录位置:下个事务从mysql-bin.000004的106处开始记录:
mysql> SHOW BINARY LOGS;
5、 创建备份目录
[[email protected] ~]# mkdir /root/backup
6、 做完全备份
[[email protected] ~]# mysqldump -uroot -p jiaowu > /root/backup/jiaowu-`date +%F_%H-%M-%S`
7、 查看备份文件
[[email protected] backup]# ls -l /root/backup/
8、 更改备份后的属主、属组
[[email protected] backup]# chown -R mysql.mysql /root/backup/
9、 查看更改后结果:
[[email protected] backup]# ls -l /root/backup/
10、备份结束后,解锁
mysql> UNLOCK TABLE;
11、在jiaowu数据库的tutors标准插入新数据
mysql> INSERT INTO tutors (Tname) VALUES ('stu1'),('stu2');
12、看表更新后内容
mysql> SELECT * FROM tutors;
13、进入二进制目录
[[email protected] backup]# cd /var/lib/mysql
14、备份更新后的二进制日志
[[email protected] mysql]# cp mysql-bin.000004 /root/backup
15、删除所有数据文件
[[email protected] mysql]# rm -rf ./*
16、重新启动mysql服务
[[email protected] ~]# service mysqld restart
17、创建原数据库
mysql> CREATE DATABASE jiaowu;
18、还原数据库
mysql jiaowu < jiaowu.2018-04-21-07-13-59
19、查看还原后结果:
mysql> select * from tutors;
20、利用二进制日志做及时点还原
[[email protected] backup]# mysqlbinlog mysql-bin.000004 | mysql -uroot –p
21、查看还原结果:
mysql> select * from tutors;
以上是关于mysqldump用法,以及用mysqldump做完全+增量备份的主要内容,如果未能解决你的问题,请参考以下文章