常用的几种mariadb备份还原手段——上篇

上一篇写了mariadb的几种复制模型,这次就丢几个maraidb的常用备份恢复模拟吧。

备份相关知识

为什么要备份

备份主要是用来应对以下的情况:灾难恢复,硬件故障,软件故障,自然灾害,×××恶意×××,人为的误操作导致数据的损坏等。
备份时要关注的重点在于能容忍最多丢失多少的数据量,在如今数据基本和金钱等价的现实下,数据还是能少丢就少丢吧;恢复数据要在多长时间内完成;需要恢复哪些数据。
注意
单纯做备份是不可行的,做好备份之后还要考虑做的备份是否可用(还原测试);定期做还原演练(在个人机器实验)。

备份的分类

完全备份-整个数据集全部备份。
增量备份-仅仅备份最近一次完全备份或者增量备份(若存在增量)以后的变化的数据,备份速度相对较快,但是还原比较复杂,需要做整合。
差异备份-仅仅备份一次完全备份以来变化的数据,备份速度相对增量备份慢,但是还原简单。
部分备份-只备份数据的子集,例如部分库和部分表。

尽可能要讲数据文件和二进制日志文件分开存放。

冷备:数据库读写操作全部停止直到备份结束。
温备:读操作可以进行,但是无法进行写操作。
热备:读写操作都不受影响,均可正常进行。
MyISAM:温备,不支持热备。
InnoDB:都支持(现在大多都使用,同时还支持事务)
物理备份:直接复制数据文件进行备份,与存储引擎相关,占用空间多,速度快。
逻辑备份:从数据库中导出数据到其他地方存储,与存储引擎无关,占用空间相对较少,速度慢,可能会丢失数据精度。

额外考虑

在进行备份之前我们考虑清楚后才可以进行,毕竟数据无价。
1.做温备时候锁要持续的时间
2.备份过程中会占用多少系统的资源
3.备份会消耗的时间
4.数据恢复时候消耗的时间
5.我们该备份什么
数据
二进制日志,InnoDB事务日志文件
程序代码(指的是数据库的)
服务器的配置文件

几种备份方式的简单演示

简单的cp和tar就不做演示了,cp和tar属于物理备份工具,适用于所有的存储引擎,但是仅仅支持冷备;可以完全备份混合部分备份。

基于LVM的备份

环境

centos7.4 mariadb 10.2.15
这里我的数据目录在/data/mysql
二进制文件目录在/data/binlog

准备mariadb配置

修改数据库的配置文件将二进制文件和数据文件分开存放并且重启数据库,重读配置文件。

    #mariadb的高版本配置文件被拆分到几个文件中去了
    vim /etc/my.cnf.d/server.cnf

    [mysqld]
    #指定数据目录
    datadir=/data/mysql
    #指定二进制文件路径和名称前缀
    log_bin=/data/binlog/mysql-bin
    #将每个数据库都单独存放
    innodb_file_per_table

由于这里实现的是基于LVM的备份因此数据要存放于lvm卷上

    #创建目录
        mkdir /data/{binlog,mysql} -pv
    #挂载逻辑卷
        mount /dev/vg0/lv_data  /data/mysql
        mount /dev/vg0/lv_binlog  /data/binlog
        chown -R mysql:mysql /data/
    #重启数据库
    systemctl restart mariadb
    #如果出现下图提示就执行以下命令
    #低版本一般不会出现,mariadb在10.2.15包括以上要手动重新初始化数据库才能正常启动
    mysql_install_db --datadir=/data/mysql --user=mysql
    systemctl restart mariadb

实现LVM的快照备份

既然要做备份实验那么就先在数据库中导入一些数据,

mysql <hellodb_innodb.sql

1.在数据库添加读锁,限制其他用户写入数据

#进入数据库,我这里没有设密码可以直接登入
mysql
#添加读锁
mysql>flush tables with read lock;
#查看二进制日志文件,记录文件名和pos编号
mysql>show master logs;


2.创建快照,这里要新打开一个终端

 lvcreate -n lv_mysql_snap -L 1G  -s -p r /dev/vg0/lv_data

3.数据库解锁

 mysql>unlock tables;

4.挂载快照并备份数据文件

mount -o nouuid,norecovery /dev/vg0/lv_mysql_snap   /mnt
#复制文件,由于是做演示所以就进备份到本地了
cp -a /mnt/ /backup/

5.删除快照

#卸载
umount /mnt
#删除快照(快照存在会影响数据的写入)
lvremove /dev/vg0/lv_mysql_snap

到这里备份基本完成

实现LVM快照的还原

1.模拟损坏

    #模拟在损坏前有用户写入了其他数据信息
    mysql> create database db1;
    mysql> create database db2;
    #删除数据库数据
    rm -rf /data/mysql/*
    #停止数据库
    systemctl stop mariadb

2.还原备份的数据文件

    cp -av /backup/*  /data/mysql/

3.禁止外部用户连接

    vim /etc/my.cnf.d/server.cnf
  #加入以下字段到mysqld
    skip_networking
    #重启数据库
    systemctl start maraidb


4.恢复binlog中最新日志到数据库中,要先登录数据库查看以下master logs

 cd /data/binlog/
mysqlbinlog --start-position=8960 mysql-bin.000002 > /backup/bin.sql
mysqlbinlog  mysql-bin.000003 >> /backup/bin.sql
mysqlbinlog  mysql-bin.000004 >> /backup/bin.sql
mysqlbinlog  mysql-bin.000005 >> /backup/bin.sql
mysql < /backup/bin.sql


5.恢复用户访问

vim /etc/my.cnf.d/server.cnf
  #删除字段
    skip_networking
    systemctl restart mariadb

6.查看数据信息,发现后续添加的信息也恢复了

基于mysqldump实现备份恢复

这里是还原了新环境的虚拟机

数据库数据文件损坏,如何还原最新状态

这里的前提是要求有着完全备份,而且可以正常获取最新从二进制日志文件

1.完全备份数据库

mysqldump -A -F --single-transaction --master-data=2 > /backup/full.sql

2.修改数据库后破坏数据信息

rm -rf /data/mysql/*

3.重启数据库并恢复备份

systemctl stop mariadb
mysql_install_db --datadir=/data/mysql --user=mysql
# 编辑配置文件并禁止其他用户访问
 vim /etc/my.cnf.d/server.cnf
 innodb_file_per_table
 systemctl start mariadb

#将二进制文件生成sql文件
#查看全备份的sql文件可以看到备份时候的二进制文件和起始位置(如果是恢复失误删除的表可以在整合完二进制文件生成的sql文件后,找到误删除表的语句,删除该语句即可)
mysqlbinlog --start-position=385 mysql-bin.000005 >bin.sql
 # 恢复完全备份数据
 mysql < /backup/full.sql
 mysql < bin.sql


4.修改配置文件删除innodb_file_per_table字段重启即可

单表备份

单表恢复(涉及表之间的关联问题)
备份

mysqldump hellodb students > /backup/stu_bak.sql

还原备份

mysql hellodb < /backup/stu_bak.sql

基于xtrabackup实现备份恢复

mariadb 10.2.15要使用最新的2.4.11版本

完全备份和恢复

1.安装percona-xtrabackup

yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y

2.完全备份(先导入了一个自建的hellodb作为测试数据)

# innobackupex (--user=root) /backup/默认就是以root用户去备份,这里省略了
innobackupex  /backup/


3.删除数据模拟损坏

rm -rf /data/mysql/*

4.整理日志信息

innobackupex --apply-log /backup/2018-06-15_22-12-06/

5.停止数据库

systemctl stop mariadb

6.恢复数据到目录并修改权限

innobackupex --copy-back /backup/2018-06-15_22-12-06/
chown -R mysql:mysql /data/mysql/


7.启动mariadb,验证是否成功

systemctl start mariadb

原文地址:http://blog.51cto.com/11010461/2129985

时间: 2024-10-09 08:54:38

常用的几种mariadb备份还原手段——上篇的相关文章

MySQL常用的三种备份方法

mysql按照备份恢复方式分为逻辑备份和物理备份.逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现,物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单.这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小下面介绍以下3种常用的备案方法一.mysqldump工具备份mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于Inn

桦仔 笔记1-徐 最常用的几种备份方法

--最常用的几种备份方法: --数据备份----------------------- --数据库级:完整数据库备份 差异数据库备份 --文件级: 完整文件备份 差异文件备份 --日志备份---------------------- --日志备份 --完整恢复模式下的备份 --日志备份:由于日志备份只拷贝上次日志备份以来的所有日志记录,所以开销比数据库备份小很多 --如果灾难毁坏的是数据文件 --在维护计划里先建立完整数据库备份(其实建不建立完整数据库备份都没有关系,不过建立保险一点)再建立日志

mysql数据的备份还原三种方法

MySQL的备份和恢复: 为什么要对数据做备份?    数据备份主要是用于灾难恢复和测试要求,灾难恢复指硬件故障,软件故障,自然灾害,黑客攻击以及误操作: 备份分为以下几类: 完全备份:既对所有数据做备份 部分备份:仅对数据库中一张或多张表做备份 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份 增量备份:仅备份上次完全备份或增量备份之后变化的数据部分 热备份:在线备份,读写操作不受影响 温备份:在线备份,读操作继续,但写操作不允许: 冷备份:离线备份,

xtrabackup备份还原mariadb数据库

一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要加表锁.mysqldump备份方式是通过用户名密码连接到数据库,将其要备份的数据库用SQL语句的形式输出到标准输出,这种逻辑备份的方式最大的缺点是备份和恢复的速度较慢,如果数据库过大,mysqldump备份就显得力不从心了.这时选择用xtrabackup来备份就能很好解决数据库过大而导致备份过慢的问

MariaDB 备份与日志管理(13)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB来代替MySQL的InnoDB,MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购MySQL的所有权也落入Oracle的手中.M

mysql innobackupex xtrabackup 大数据量 备份 还原(转)

原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1,Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtra

MySQL之备份还原,主从复制,主主复制。

数据库作为我们的日常工作中不可缺少的部分,那它内部数据的重要性显而易见,所以数据安全至关重要.确保数据的安全,我们就必须做好数据备份.简单说几个MySQL常用的备份工具以及如何利用这些工具实现数据的备份. 一:MySQL自带的工具---mysqldump,相信大家应该还有映像:# ls /usr/local/mysql/bi我们会看到此命令. 用法:mysqldump [options] [db_name [tbl_name ...]] 常用选项: --databases --备份数据库,后面可

IOS数据存储常用的5种方式

iOS中的数据存储(上) iOS应用数据存储的常用方式: 应用沙盒: 应用沙盒结构分析 Documents: temp: Library/Caches: Library/Preference: 沙盒根路径: 属性列表 偏好设置(Preference) NSKeyedArchiver NSData iOS中的数据存储(上) iOS应用数据存储的常用方式: 1> XML属性列表(plist)归档. 2> Preference(偏好设置). 3> NSKeyedArchiver归档. 4>

Linux系统备份还原工具2(TAR/压缩工具)

相比DD备份还原工具,TAR压缩还原工具更加小巧和灵活,但是不能备份MBR.当然可以通过重新安装GRUB来解决MBR的这一问题.同时,TAR的做法也是官方推荐的. 注意:一个硬盘启动时最新经过MBR(只有512KB),然后通过MBR指向操作系统的GRUB(也就是内核的引导程序). 准备备份 为准备系统的完整备份,最好清空垃圾桶,并从当前安装中删除任何不需要的文件和程序.这包括可以填充不需要的许多文件的主文件夹.这样做可以减少创建的存档的大小,就是说释放空间有多少. 下面列出了一个例子,可以自己决