mysldump数据的完全备份+增量备份+故障后的恢复
2013-05-05 16:01
736 查看
学习了几天mysql的知识。刚接触单单以为是语法之类的命令记住就行了。但是遇到问题的时候缺不知道从何下手。网上找了相关的资料感觉还是不太实用。于是笔者就着手总结了备份与还原的例子。这篇是mysqldump的使用。进行了2个事例的操作。当然两个事例大同小异。第二个为第一个的拓展。如果将这2个例子原理搞清楚了。接下来进行LVM备份还原以及Xtrabackup这个备份工具都会轻松很多。
MySQL的备份方式
前提:事先保证对备份类型,备份策略等mysql常用知识已经清楚。
mysqldump: 逻辑备份工具
事例一、我们自己创建了个小教务管理系统,只在MySQL中存在一张jiaowu表,我们来对这一个数据库进行备份+增量备份+还原
mysqldump(完全备份)+二进制日志
准备:在xshell中打开2个linux连接窗口(主要用于锁表操作),我们将他们赋予编号以便于进行说明操作过程,如果没有xshell工具,那么可以使用linux中的screen。具体使用可以搜一下screen,我们这里主要讲备份。
首先在1中要对mysql进行锁表操作
回到2中进行备份
PS:备份出来的可以vim查看下,是个脚本。
同时里面存在了数据库的版本信息。数据库的名字等等。
PS:到这里。一张完整的数据库已经备份完成。那么我们来进行增量备份.
我们来到2(1和2均可)中对jiaowu进行操作
然后假如我们一天就对他做了这么点东西,那么就重新FLUSH下LOGS。
这个时候,这已经算一次增量了,我们可以去磁盘中找到这个二进制文件并保存下来
这个时候我们已经进行了一次增量备份了。
然后比如mysql的数据库突然损坏了,我们的jiaowu不见了。(如果当天正操作的时候坏掉了,我们同样可以找到当天的mysql-bin.****用mysqlbinlog转换出去用来还原)
然后我们来进行完整数据的恢复。
首先到mysql中创建jiaowu数据库,(因为我们备份的只是jiaowu中各表)
然后这样我们就完成完整的备份还原。但是。这个时候的数据只是我们没做任何修改时候的数据。我们还需要进行增量数据的恢复。
这个时候我们来进行数据的查看
显然我们已经恢复到了第一天操作结束的时候了,这样一个完整的过程就演示下来了
下面为mysql备份的一些快捷的扩展
事例二、对整个数据库完全备份+增量备份
备份策略:周完全+每日增量
完全备份:mysqldump
增量备份:备份二进制日志文件(flush logs)
首先
然后这样就ok 备份完全的Ok。
然后比如到周一了,开始做操作了~
进入数据库各种操作。。(忽略)
到周二
然后这是周二,那么你就可以做操作了(我们模仿周二数据库坏掉了)。
这个时候 mysql已经挂掉了。
MySQL的备份方式
前提:事先保证对备份类型,备份策略等mysql常用知识已经清楚。
mysqldump: 逻辑备份工具
事例一、我们自己创建了个小教务管理系统,只在MySQL中存在一张jiaowu表,我们来对这一个数据库进行备份+增量备份+还原
mysqldump(完全备份)+二进制日志
准备:在xshell中打开2个linux连接窗口(主要用于锁表操作),我们将他们赋予编号以便于进行说明操作过程,如果没有xshell工具,那么可以使用linux中的screen。具体使用可以搜一下screen,我们这里主要讲备份。
首先在1中要对mysql进行锁表操作
[root@localhost ~]# mysql mysql> FLUSH TABLES WITH READ LOCK; ##以只读的方式进行锁表 mysql> FLUSH LOGS; ##滚动日志 mysql> SHOW BINARY LOGS; ##查看
回到2中进行备份
[root@localhost ~]# mysqldump -uroot -p --master-data=2 jiaowu > /root/jiaowu-`date +%F-%H-%M-%S`.sql
PS:备份出来的可以vim查看下,是个脚本。
同时里面存在了数据库的版本信息。数据库的名字等等。
PS:到这里。一张完整的数据库已经备份完成。那么我们来进行增量备份.
我们来到2(1和2均可)中对jiaowu进行操作
然后假如我们一天就对他做了这么点东西,那么就重新FLUSH下LOGS。
这个时候,这已经算一次增量了,我们可以去磁盘中找到这个二进制文件并保存下来
这个时候我们已经进行了一次增量备份了。
然后比如mysql的数据库突然损坏了,我们的jiaowu不见了。(如果当天正操作的时候坏掉了,我们同样可以找到当天的mysql-bin.****用mysqlbinlog转换出去用来还原)
mysql> DROP DATABASE jiaowu; ##模拟的
然后我们来进行完整数据的恢复。
首先到mysql中创建jiaowu数据库,(因为我们备份的只是jiaowu中各表)
mysql> CREATE DATABASE jiaowu; mysql> \q [root@localhost ~]# mysql -uroot -p jiaowu < jiaowu-2013-05-04-19-18-18.sql
然后这样我们就完成完整的备份还原。但是。这个时候的数据只是我们没做任何修改时候的数据。我们还需要进行增量数据的恢复。
[root@localhost ~]# mysql -uroot -p < increment-1.sql
这个时候我们来进行数据的查看
显然我们已经恢复到了第一天操作结束的时候了,这样一个完整的过程就演示下来了
下面为mysql备份的一些快捷的扩展
备份单个数据库,或库中特定表 mysqldump DB_NAME [tb1] [tb2] --master-data={0|1|2} 0: 不记录二进制文件及路位置; 1:以CHANGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器; 2:以CHANGE MASTER TO的方式记录位置,但默认为被注释; --lock-all-tables: 锁定所有表,这样就不用单独开一个xshel去执行mysql的锁表操作了; --flush-logs:执行日志flush; 如果指定库中的表类型均为InnoDB, 可使用 --single-transaction 启动热备 不要和lock-all-tables共用 备份多个库: --all-databases: 备份所有库 --databases DB_NAME, DB_NAME,...: 备份指定库 --event 备份事件 --routines备份存储过程和存储函数 --triggers备份触发器的
事例二、对整个数据库完全备份+增量备份
备份策略:周完全+每日增量
完全备份:mysqldump
增量备份:备份二进制日志文件(flush logs)
首先
#mysqldump -uroot -p --master-data=2 --flush-logs --all-databases --lock-all-tables > /root/alldatabases.sql 查看备份到的内容中 --master的masterlog的位子。清空(删掉)以前的(当然备份走也行,万一到什么时候用得到呢) mysql> PURGE BINARY LOGS TO 'mysql_bin.********'; mysql> SHOW BINARYLOG;
然后这样就ok 备份完全的Ok。
然后比如到周一了,开始做操作了~
进入数据库各种操作。。(忽略)
到周二
mysql> FLUSH LOGS; ##滚动下,前边的是周一的 然后cd /mydata/data下 找到昨天的mysql_bin.*******然后复制走。或者# mysqlbinlog mysql-bin.***** > /root/1-incremental.sql
然后这是周二,那么你就可以做操作了(我们模仿周二数据库坏掉了)。
so这里我们模仿坏掉了,事先mysqld stop停掉他。去数据库删掉里面的东西(当然要把当谈的mysql-bin******+1给保存出来。(我们平常的生产生活中二进制文件和数据库文件肯定要分开放的亲!安全保险!)
这个时候 mysql已经挂掉了。
我们这个时候要重新去你安装的mysql文件夹中执行下初始化脚本(编译安装过程中的,当然这里不能解释啦),scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ 然后启动服务 #mysql -uroot -p < alldataases.sql(这个时候可以进入查看下) 还原增量备份 ##这里执行之前需要在mysql>中执行set sql_log_bin = 0挂掉二进制,等到还原结束后在set sql_log_bin =1 开启。 mysql < 1-incremental.sql ##去查看 , 然后还原周二的操作 仿照周一的操作二进制文件各种~
相关文章推荐
- mysldump数据的完全备份+增量备份+故障后的恢复
- Percona XtraBackup 完全及增量备份与恢复的方法
- MYSQL完全与增量备份及恢复【转载改编】
- PostgreSQL pg_dump&pg_restore数据的备份与恢复
- mongodb mongodump数据备份,mongorestore恢复命令
- MYSQL完全与增量备份及恢复
- 使用innobackupex完成数据增量备份及恢复的步骤
- MySQl备份恢复策略(完全+增量备份策略)
- SQL2000下增量备份恢复数据
- 用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)
- MySQL 备份和恢复(三)Xtrabackup实现热备:完全备份+增量备份 推荐
- MySQl备份恢复策略(完全+增量备份策略) ZT
- 用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)
- 注册表故障恢复 必须使用记录或另一备份以恢复包含系统注册表数据的文件。恢复成功
- 无备份有完全归档日志情况下恢复数据文件
- PostgreSQL pg_dump&psql 数据的备份与恢复
- PostgreSQL pg_dump&psql 数据的备份与恢复
- bacula初使用备份(完全备份,增量备份,和还原指定数据)
- Xtrabackup完全备份及结合二进制文件做数据恢复步骤
- Linux下文件数据的备份和恢复命令: dump 和 restore