设为首页 加入收藏

TOP

MySQL/MariaDB的备份与恢复(三)
2015-11-21 01:51:23 来源: 作者: 【 】 浏览:4
Tags:MySQL/MariaDB 备份 恢复

[root@CentOS-6 backup]# vim 2015-07-28.all.sql
.....
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1093;
....??????????????? #备份时事件点
?
?
MariaDB [hellodb]> show master status;?????????????????????????? #当前事件点
+------------------+----------+--------------+------------------+
| File???????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |???? 9677 |????????????? |????????????????? |
+------------------+----------+--------------+------------------+
?
[root@CentOS-6 data]# mysqlbinlog --start-position=1093 --stop-position=9677 /data/mysql_bin_log/mysql-bin.000003 > /backupup/`date +%F`.inc.sql
以上的备份是温备,备份过程中需要对表进行锁定,数据无法进行更改。如果需要热备,加上--single-transaction即可,当然锁定表就不需要了(--lock-all-tables)。热备需要
mysqldump恢复过程
1、在恢复过程中,也会产生大量的二进制日志,这些日志没有什么用,可以在恢复开始之前将数据库上的二进制日志功能关闭。
MariaDB [(none)]> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
2、在最后一次增量备份之后与数据库崩溃之前的这段时间内,数据的变化没有备份,这段时间内的数据变化信息需要通过二进制日志文件获取,所以在数据库崩溃之后,首先要保护其二进制日志文件。假设数据库崩溃之前的最后一个事件位置为10510。(这段时间内产生的二进制日志文件可能有很多个,除了最后一个日志文件,其余的一一导出即可,最后一个日志文件导出至某一个事件位置之前)
[root@CentOS-6 data]# mysqlbinlog --start-position=9677 --stop-position=10510 /data/mysql_bin_log/mysql-bin.000003 > /backup/`date +%F`.inc2.sql
3、导入备份的数据。
[root@CentOS-6 backup]# mysql
[root@CentOS-6 backup]# mysql
[root@CentOS-6 backup]# mysql
mysqldump部分备份
mysqldump [OPTIONS] database [tables]:备份一个或多个表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库
备份恢复单个表
[root@CentOS-6 backup]# mysqldump hellodb students --single-transaction --master-data=2 > /backup/students.sql;
?
#####
[root@CentOS-6 backup]# vim students.sql
.....
use hellodb;???????????????????????? #在还原表前,在备份文件开头添加使用的数据库
?
######
[root@CentOS-6 backup]# mysql
备份多个表或库,与此类似,只是通过二进制日志恢复时,需要在二进制日志文件中筛选出仅针对某一个表或者库的操作,然后在导出,恢复。在实现部分备份时,要确保备份的数据中所有的InnoDB表都需要存放为单个表空间(每表单独表空间),不然只能备份所有库。
lvm2快照备份
lvm2属于几乎热备,在快照的那一刻,需要对全表进行锁定,快照完成之后立刻释放锁。
1、锁定所有表
MariaDB [hellodb]> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
2、记录当前的事件位置,也可以直接滚动日志
MariaDB [(none)]> show master status ;
+------------------+----------+--------------+------------------+
| File???????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |????? 365 |????????????? |????????????????? |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
3、创建快照(前提是数据库的数据目录必须放在逻辑卷上)
[root@CentOS-6 mysql_bin_log]# lvcreate -L 2G -s -p r -n dataBackup /dev/babyVG/babyLV
? Logical volume "dataBackup" created
4、解锁所有表
MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
5、挂载快照,复制快照中的数据至备份目录。然后删除快照
[root@CentOS-6 backup]# mount /dev/babyVG/dataBackup /backup/snapshot/
mount: block device /dev/mapper/babyVG-dataBackup is write-protected, mounting read-only
[root@CentOS-6 backup]# cp -a /backup/snapshot/* /backup/lvmbackup/
[root@CentOS-6 backup]# lvremove /dev/babyVG/dataBackup
? Logical volume babyVG/dataBackup contains a filesystem in use.
还原:(服务关闭状态下)
1、备份之后的数据变化通过日志导出
[root@CentOS-6 mysql_bin_log]# mysqlbinlog --start-position=365 --s
首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JPA缓存 下一篇在Linux中划分partition并格式化..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: