mysql 冷热备份

冷备份(OFF, 慢, 时间点上恢复)
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。

冷备份的优点: 
1.是非常快速的备份方法(只需拷贝文件)
2.容易归档(简单拷贝即可)
3.容易恢复到某个时间点上(只需将文件再拷贝回去)
4.能与归档方法相结合,作数据库“最新状态”的恢复。
5.低度维护,高度安全。

冷备份的缺点: 
1.单独使用时,只能提供到“某一时间点上”的恢复。
2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
4.不能按表或按用户恢复。
值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的 。而且在恢复后一定要把数据库文件的属组和属主改为mysql。

热备份 (ON,快)
热备份是在数据库运行的情况下,备份数据库操作的sql语句,当数据库发生问题时,可以重新执行一遍备份的sql语句。

热备份的优点:
1.可在表空间或数据文件级备份,备份时间短。
2.备份时数据库仍可使用。
3.可达到秒级恢复(恢复到某一时间点上)。
4.可对几乎所有数据库实体作恢复。
5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

热备份的缺点:
1.不能出错,否则后果严重。
2.若热备份不成功,所得结果不可用于时间点的恢复。
3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

 

 

逻辑备份:

–半热备 mysqldump

备份全库

mysqldump -uroot -predhat-S /var/tmp/mysql.sock --all-databases> /var/tmp/all.sql

恢复

mysql -uroot -predhat < /var/tmp/all.sql

备份多个库

mysqldump -uroot -predhat-S /var/tmp/mysql.sock --databases db01 db02 db03 > /var/tmp/db01-03.sql

mysql -uroot -predhat </var/tmp/db01-03.sql

mysqldump --databases discuz >/var/tmp/discuz.sql

mysqldump --databases ucenter >/var/tmp/ucenter.sql

备份多张表

mysqldump -uroot -predhat -S/var/tmp/mysql.sock db01 t1 t2 t3 >/var/tmp/db01.t1-2.sql

mysql -uroot -predhat db01 </var/tmp/db01.t1-2.sql

–完全备份(mysqldump)+增量备份(binlog)

1、数据总量不大,一般在几百M的数据可以使用这种方法

2、如果数据量大太,每次备份锁表的时间会比较长,这样就可能影响上层应用正常使用

完全备份(mysqldump) — 先完整备份,然后在截断日志(锁表)并查出当前的bin-log日志以及起始偏移量

–flush logs --截断日志

–master-data --锁表之后记录bin-log日志与起始偏移量=2

1.完整全库全表

2.截断日志

3.锁表之后记录bin-log日志与起始偏移量

mysqldump

–start-position

–stop-position

–start-datetime

–stop-dateteime

mysqldump -uroot -predhat -S/var/tmp/mysql.sock --flush-logs --master-data=2 --all-databases >/var/tmp/all-new2.sql

vim /var/tmp/all-new2.sql

– CHANGE MASTER TO MASTER_LOG_FILE=‘mysqld.000028’,MASTER_LOG_POS=107; 表之后记录bin-log日志与起始偏移量

丢失增量备份的数据 —记录一个故障点的时间戳 ,然后通过查询完备中记录bin-log日志与起始偏移量文件

vim /var/tmp/all-new2.sql

– CHANGE MASTER TOMASTER_LOG_FILE=‘mysqld.000029’, MASTER_LOG_POS=107;

然后通过起始偏移量与结束时间戳来恢复

mysqlbinlog/mysql/logs/mysqld.000029 --start-position=107 --stop-datetime=“2015-03-19 14:22:01” | mysql -uroot -predhat

物理备份:

1首先安装xtrabackup软件(https://blog.csdn.net/mr_tia/article/details/81979689)

2全备

innobackupex --user=root–password=mysqldabao -S /ssd_data/dabaoji.data/mysql.sock --parallel=3–basedir=/usr/local/mysql --datadir=/ssd_data/dabaoji.data /ssd_data/backup/

3还原

先把备份集的redo日志应用到备份集的数据文件中去

innobackupex --apply-log /ssd_data/backup/2017-09-07_11-11-04

再还原innobackupex–defaults-file=/ssd_data/my.cnf --copy-back/ssd_data/backup/2017-09-07_11-11-04/ 其中这个my.cnf文件是告诉这个工具,要把数据文件还原到哪个目录,所以这个配置文件里面的内容可以只有[mysqld] 和datadir = 目录 这两行就可以

4改变还原后的数据目录的属组属主 chown -Rmysql:mysql 路径

5打开数据库(完成了)

6如果原来的数据库有新增的数据,可以通过应用二进制日志来实现数据一致

首先关了数据库的二进制日志功能,再开启数据库

然后查看xtrabackup备份集里的xtrabackup_info这个文件,找到结束的二进制日志点,然后从这个点应用二进制日志

/usr/local/mysql/bin/mysqlbinlog–start-position=20891 /ssd_data/backup/binlog/mysql-bin.000011|/usr/local/mysql/bin/mysql -uroot -pmysqldabao -S/ssd_data/dabaoji.data/mysql.sock

应用二进制日志可以根据时间,可以根据某个二进制日志的记录点,不指定其实时间,就从头开始,不指定结束位置,就全部应用完

指定点的格式:–start-position–stop-position

mysqlbinlog–start-position=1 --stop-position=3 /ssd_data/backup/binlog/mysql-bin.000011|/usr/local/mysql/bin/mysql -uroot -pmysqldabao -S/ssd_data/dabaoji.data/mysql.sock

指定时间的格式:–start-datetime–stop-datetime

/usr/bin/mysqlbinlog–start-datetime=“2016-09-25 21:57:19”–stop-datetime=“2016-09-25 21:58:41” /var/lib/mysql/mysql-bin.000003 | /usr/bin/mysql -uroot -p123456

增量备份(有两种,一种就是每次增备都是从全备开始 另一种是从上一次的增备开始,这个一般是生产环境所选择的)

现在结合全备和增备结合(注意/etc/my.cnf的影响:

1首先进行一次全备 innobackupex–user=root --password=mysqldabao -S /ssd_data/dabaoji.data/mysql.sock–parallel=3 --basedir=/usr/local/mysql–datadir=/ssd_data/dabaoji.data /ssd_data/backup/

2跟着进行第一次增备(第一次增备从全备开始增备)innobackupex --user=root --password=mysqldabao -S /ssd_data/dabaoji.data/mysql.sock–incremental /ssd_data/backup/–incremental-basedir=/ssd_data/backup/2017-09-08_12-32-45/

3然后进行第二次增备(这个从第一次增备后开始增备)innobackupex --user=root --password=mysqldabao -S/ssd_data/dabaoji.data/mysql.sock --incremental /ssd_data/backup/ --incremental-basedir=/ssd_data/backup/2017-09-08_12-33-57/

4还原:首先对全备进行一次prepare,这个的prepare要加一个–read-only的参数

innobackupex --apply-log --redo-only/ssd_data/backup/2017-09-08_12-32-45/

5对第一次增备进行prepare并合并到第一次全备中去

innobackupex --apply-log --redo-only/ssd_data/backup/2017-09-08_12-32-45/–incremental-dir=/ssd_data/backup/2017-09-08_12-33-57/

6对第二次增备进行prepare并合并到刚刚已经把第一次增备合并了的全备中去

innobackupex --apply-log --redo-only/ssd_data/backup/2017-09-08_12-32-45/–incremental-dir=/ssd_data/backup/2017-09-08_12-38-01/

7把这个合并了第一次第二次增备了的全备复制回数据目录

innobackupex–defaults-file=/ssd_data/my.cnf --copy-back/ssd_data/backup/2017-09-08_12-32-45/

8修改这个数据目录的属组属主

9启动数据库

物-冷 这个没什么好说的,就是直接关了数据库,然后对数据库文件整个用cp命令拷贝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值