iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据库备份概述
  • 860
分享到

数据库备份概述

2024-04-02 19:04:59 860人浏览 独家记忆
摘要

数据库备份概述概述:将数据库中存在的现有数据,进行存放成为副本数据,可解决数据容灾;           提高系统的高可用性和灾难恢复性,数据崩溃时,以最小代价重新恢复数据;数据丢失的原因:程序错误、人为错

数据库备份概述

概述:将数据库中存在的现有数据,进行存放成为副本数据,可解决数据容灾;
           提高系统的高可用性和灾难恢复性,数据崩溃时,以最小代价重新恢复数据;

数据丢失的原因:程序错误、人为错误、磁盘错误、天灾人祸


数据库备份的分类

  • 物理备份

         指对数据库操作系统的物理文件(数据文件、日志文件)等备份

  • 冷备份

    必须在数据库关闭状态下进行备份,能够更好保证数据库的完整性

  • 热备份

    能够在数据库处于正常运行的情况下备份,能够更高的保证服务的可用性

  • 逻辑备份

    指对数据库的逻辑组件(数据库、表、数据对象)进行备份

  • 完全备份

    将数据进行完整的备份,包含完整的库、表、索引、视图等,需要花费更长的时间

  • 差异备份

    备份自上次完全备份到现在发生改变的数据库内容,备份的文件比完整备份的文件小,备份速度更快

  • 增量备份

      备份至上次完全备份或增量备份后被修改的数据库内容



数据备份以及恢复

  • 物理备份(冷备份)

[root@host50 backup]# cp -rp /var/lib/Mysql/dumptest1/   /opt/backup/dumptest1
[root@host50 backup]# ls
dumptest1
[root@host50 backup]# ls dumptest1/
db.opt  test.frm  test.ibd
[root@host50 backup]# ls /var/lib/mysql/dumptest1/
db.opt  test.frm  test.ibd
[root@host50 backup]# tar -zcvf mysql-backup-$(date +%F).tar.gz dumptest1/
dumptest1/
dumptest1/db.opt
dumptest1/test.frm
dumptest1/test.ibd
[root@host50 backup]# ls
dumptest1  mysql-backup-2019-07-07.tar.gz                                          //dumptest1库备份并且压缩完成
[root@host50 backup]# rm -dfr /var/lib/mysql/dumptest1/                            //删除mysql数据库dumptest1库

[root@host50 backup]# systemctl restart mysqld

[root@host50 backup]# mysql -uroot -p123456
mysql: [Warning] Using a passWord on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 MySQL CommUnity Server (GPL)
Copyright (c) 2000, 2016, oracle and/or its affiliates. All rights reserved.
Oracle is a reGIStered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;                                                               //查看所删库已经不在
+--------------------+
| Database           |
+--------------------+
| infORMation_schema |
| mysql              |
| performance_schema |
| sys                |
| transtb            |
+--------------------+
5 rows in set (0.00 sec)

[root@host50 backup]# tar -zxvf mysql-backup-2019-07-07.tar.gz -C /var/lib/mysql/            //恢复数据库
dumptest1/
dumptest1/db.opt
dumptest1/test.frm
dumptest1/test.ibd

[root@host50 backup]# systemctl restart mysqld
[root@host50 backup]# mysql -uroot -p1234566
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@host50 backup]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dumptest1          |
| mysql              |
| performance_schema |
| sys                |
| transtb            |
+--------------------+
6 rows in set (0.00 sec)
mysql> use dumptest1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from test;                                                              //库恢复成功
+-----+
| job |
+-----+
| aa  |
| bb  |
| c   |
| dd  |
+-----+
4 rows in set (0.00 sec)


  • 逻辑备份(热备份)


    库名表示方式

     - --all-databases 或 -A        所有库

     -  数据库名                           单个库

       - 数据库名 表名                    单张表

       - -B 数据库1 数据库2            多个库

  • 注意事项

    - 无论备份还是恢复,都要验证用户权限

[root@host50 backup]# mysqldump -uroot -p --all-databases > /opt/backup/alldb.sql           //备份所有库
Enter password: 
[root@host50 backup]# ls
alldb.sql
[root@host50 backup]# grep -vE '^/|^-|^$' alldb.sql | head -15                             //查看库中部分内容
CREATE DATABASE  `dumptest1` ;
USE `dumptest1`;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `job` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES `test` WRITE;
INSERT INTO `test` VALUES ('aa'),('bb'),('c'),('dd');
UNLOCK TABLES;
CREATE DATABASE  `mysql` ;
USE `mysql`;
DROP TABLE IF EXISTS `columns_priv`;
CREATE TABLE `columns_priv` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  
[root@host50 backup]# mysqldump -uroot -p dumptest1 > /opt/backup/dumptest1.sql              //只备份一个库
Enter password: 
[root@host50 backup]# ls
alldb.sql  dumptest1.sql

[root@host50 backup]# mysqldump -uroot -p -B dumptest1  transtb> /opt/backup/dumptest1+transdb.sql    //备份指定多个库
Enter password: 
[root@host50 backup]# ls
alldb.sql  dumptest1.sql  dumptest1+transdb.sql
  • 使用MYSQL命令从备份中恢复

    通常不建议直接覆盖旧库,而是采用建立新库并导入逻辑备份的方式执行恢复,待新库正常后即可废弃或删除旧库。

[root@host50 backup]# mysql -uroot -p dumptest2 < /opt/backup/dumptest1.sql 
Enter password: 
[root@host50 backup]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select * from dumptest2.test;
+-----+
| job |
+-----+
| aa  |
| bb  |
| c   |
| dd  |
+-----+
4 rows in set (0.00 sec)



binlog日志概述

  • 二进制日志用途及配置方式

类型用途配置
二进制日志记录所有更改数据的操作

log_bin=[dir/name]

server_id=数字

max_binlog_size=数字m

  • 采用binlog日志的好处

    -记录除查询之外的所有SQL命令

    -可用于数据恢复

    -配置MySQL主从同步的必要条件

  • binlog相关文件

    - 主机名-bin.index             记录已有日志文件名

    - 主机名-bin.000001          第一个二进制日志

    - 主机名-bin.000002          第二个二进制日志

例:

  • 配置/etc/my.cnf,并重启服务

[root@host50 backup]# vim /etc/my.cnf
[mysqld]
.. ..
log-bin-index=mysql-bin                              //启用二进制日志,并指定前缀
server_id=1
binlog_format=STATEMENT                             //在Mysql5.7中,binlog日志格式默认为ROW,但它不记录sql语句上下文相关信息。需要将binlog日志格式修改为STATEMENT

[root@host50 backup]# systemctl restart mysqld

[root@host50 backup]# ls /var/lib/mysql/mysql-bin.*  //新启用binlog后,每次启动MySQl服务都会新生成一份日志文件
/var/lib/mysql/mysql-bin.000001  /var/lib/mysql/mysql-bin.index

[root@host50 backup]# ls /var/lib/mysql/mysql-bin.*    //重启MySQL服务程序,或者执行SQL操作“FLUSH LOGS;”,会生成一份新的日志:
/var/lib/mysql/mysql-bin.000001  /var/lib/mysql/mysql-bin.index
/var/lib/mysql/mysql-bin.000002

[root@host50 backup]# cat /var/lib/mysql/mysql-bin.index   //mysql-bin.index文件记录了当前保持的二进制文件列表
./mysql-bin.000001
./mysql-bin.000002
  • 使用binlog日志恢复表记录

mysql> create database binlogdb;           //创建库 表,并删除后恢复
Query OK, 1 row affected (0.01 sec)
mysql> use binlogdb;
Database changed
mysql> create table tb1(
    -> id int(4),
    -> name varchar(20));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into tb1 values
    -> (1,'aa'),
    -> (2,'bb'),
    -> (3,'cc');
Query OK, 3 rows affected (0.21 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from tb1;
+------+------+
| id   | name |
+------+------+
|    1 | aa   |
|    2 | bb   |
|    3 | cc   |
+------+------+
3 rows in set (0.00 sec)
mysql> delete from tb1;
Query OK, 3 rows affected (0.00 sec)
mysql> select * from tb1;
Empty set (0.00 sec)

[root@host50 backup]# mysqlbinlog /var/lib/mysql/host50-bin.000003     //查看binlog日志确认恢复时间
;
;
DELIMITER ;
# at 4
#190707  1:49:26 server id 1  end_log_pos 123 CRC32 0x92d92fbb  Start: binlog v 4, server v 5.7.17-log created 190707  1:49:26
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
Jt8gXQ8BAAAAdwAAAHsAAAABAAQANS43LjE3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAaiCAGCAAAACGoKKioAEjQA
Absv2ZI=
';
# at 123
#190707  1:49:26 server id 1  end_log_pos 154 CRC32 0x12dd5e8b  Previous-GTIDs
# [empty]
# at 154
#190707  1:53:03 server id 1  end_log_pos 219 CRC32 0xba04792a  Anonymous_GTID last_committed=0 sequence_number=1
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
# at 219
#190707  1:53:03 server id 1  end_log_pos 325 CRC32 0x651624b7  Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1562435583;
SET @@session.pseudo_thread_id=6;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1;
SET @@session.sql_mode=1436549152;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8;
SET @@session.lc_time_names=0;
SET @@session.collation_database=DEFAULT;
create database binlogdb
;
# at 325
#190707  1:53:43 server id 1  end_log_pos 390 CRC32 0x13116bdf  Anonymous_GTID last_committed=1 sequence_number=2
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
# at 390
#190707  1:53:43 server id 1  end_log_pos 518 CRC32 0x431ff6ab  Query thread_id=6 exec_time=0 error_code=0
use `binlogdb`;
SET TIMESTAMP=1562435623;
create table tb1(
id int(4),
name varchar(20))
;
# at 518
#190707  1:54:23 server id 1  end_log_pos 583 CRC32 0x8dc7fcdb  Anonymous_GTID last_committed=2 sequence_number=3
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
# at 583
#190707  1:54:23 server id 1  end_log_pos 670 CRC32 0x58cc7317  Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1562435663;
BEGIN
;
# at 670
#190707  1:54:23 server id 1  end_log_pos 803 CRC32 0xf0848df1  Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1562435663;
insert into tb1 values
(1,'aa'),
(2,'bb'),
(3,'cc')
;
# at 803
#190707  1:54:23 server id 1  end_log_pos 834 CRC32 0x01790e76  Xid = 17
COMMIT;
# at 834
#190707  1:54:55 server id 1  end_log_pos 899 CRC32 0xba024a34  Anonymous_GTID last_committed=3 sequence_number=4
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
# at 899
#190707  1:54:55 server id 1  end_log_pos 986 CRC32 0xc99b2859  Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1562435695;
BEGIN
;
# at 986
#190707  1:54:55 server id 1  end_log_pos 1083 CRC32 0xda0eb644  Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1562435695;
delete from tb1
;
# at 1083
#190707  1:54:55 server id 1  end_log_pos 1114 CRC32 0xd72d7ba3  Xid = 19
COMMIT;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC'  ;
DELIMITER ;
# End of log file
;
;


[root@host50 backup]# mysqlbinlog --start-datetime="2019-07-07 1:54:23" --stop-datetime="2019-07-07 1:54:55" /var/lib/mysql/host50-bin.000003 | mysql -uroot -p123456

mysql> select * from binlogdb.tb1;
+------+------+
| id   | name |
+------+------+
|    1 | aa   |
|    2 | bb   |
|    3 | cc   |
+------+------+
3 rows in set (0.00 sec)


生产环境 Mysql 数据库备份策略

  • 策略设计思路:

    1.数据更新频繁,则应该进行较为频繁的备份;
    2.数据较为重要,则在有适当更新时进行备份;
    3.在数据库压力小的时段进行全量备份;   

  • 备份方案:

    1.在每周末的某个时段使用 mysqldump 进行重要数据库的全量备份(最好备份单个数据库,
    而不是 all);


    2.在平时每天的晚上时段将二进制日志文件终止(前提需要根据数据记录的生成数量合理指
    定单个二进制文件的大小),这样每隔 24 小时会生成一个二进制日志文件;


    3.每周的全量备份文件和每天的二进制日志文件相加,就是这一周内数据库的整体内容;


    4.出现故障时, 首先恢复全量备份, 可以执行 mysqlbinlog 命令结合实际情况根据 position 值
    或者时间点进行恢复,确保万无一失;





您可能感兴趣的文档:

--结束END--

本文标题: 数据库备份概述

本文链接: https://www.lsjlt.com/news/41392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库备份概述
    数据库备份概述概述:将数据库中存在的现有数据,进行存放成为副本数据,可解决数据容灾;           提高系统的高可用性和灾难恢复性,数据崩溃时,以最小代价重新恢复数据;数据丢失的原因:程序错误、人为错...
    99+
    2022-10-18
  • 数据库概述
    原文:https://www.cnblogs.com/rainbow-ran/p/14488897.html...
    99+
    2020-02-15
    数据库概述 数据库入门 数据库基础教程
  • 数据库软件概述
    1. 关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据...
    99+
    2022-10-18
  • SQL Server数据库概述
        SQL Server是一个数据库管理系统,主要是通过Windows服务来运行的。本篇主要介绍如何对数据库进行基本操作与管理启动或停止数据库服务    在完成数...
    99+
    2022-10-18
  • 数据库系统概述
    什么是数据库数据库(Database DB)指按照数据结构来组织,存储和管理数据的仓库,是存储在一起的相关数据的集合,什么是数据库管理系统数据库操作系统(Database Management Syste...
    99+
    2022-10-18
  • 数据库之mariadb整体概述
    一、数据库的安装方式及其安装步骤 1、安装方式 rpm包安装,yum安装,二进制包安装,编译安装   2、安装步骤 (本文是使用二进制包安装)1)下载mariadb相...
    99+
    2022-10-18
  • python数据库操作--数据库使用概述
    目录1. 数据库基础知识2. 访问数据库基本原理1.应用系统2.数据库驱动程序 3.数据库系统3. ODBC与ADO1.** ODBC**2.ADO4. 关系型数据库总结1. 数据库基础知识 数据库(DB...
    99+
    2022-06-02
    python 数据库使用
  • 数据库备份的相关概念有哪些
    本篇内容介绍了“数据库备份的相关概念有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、备份的类型备份...
    99+
    2022-10-19
  • 数据库原理及应用概述
    数据库原理及应用概述 数据库原理及应用1、数据库系统概述1.1 基本概念1.2 数据模型1.3 数据库系统的结构 2、实体 -- 联系模型2.1 基本概念2.2 实体-联系图2.3 弱实体...
    99+
    2023-09-22
    数据库 mysql sqlserver 需求分析 实体-联系模型
  • 关于数据库系统的概述
    目录一、数据库的发展 人工管理阶段二、数据库系统的组成和结构三、数据库系统的体系结构四、数据模型4.1 概念模型4.2 层次模型4.3 关系模型五、练习题一、数据库的发展 人工管理阶...
    99+
    2022-11-12
  • 数据分析处理库Pandas——概述
    导入Pandas库 创建DataFrame结构 读取.csv文件 titanic_train.csv文件:https://files.cnblogs.com/files/gloria-zhang/titanic_train.rar...
    99+
    2023-01-31
    数据 Pandas
  • 数据库备份、批量备份
    数据库备份 mysqldump -uroot -p123456 -P3306 --single-transaction database_name >/data/dbname.sql.gz 注:生...
    99+
    2022-10-18
  • 数据库知识复习之数据库系统概述
    数据库是数据管理的最新技术,是计算机科学的重要分支。从联机事务处理(On-Line Transaction Processing,OLTP)到联机肥西处理(On-Line Analysis Processi...
    99+
    2022-10-18
  • 数据库备份容灾相关概念有哪些
    本篇内容介绍了“数据库备份容灾相关概念有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!物理备份:是将实...
    99+
    2022-10-18
  • 数据库备份
    转储SQL文件    2、运行SQL文件        完成后刷新,就有之前数据库的内容了。  数据库备份原文地址:https://www.cnblogs.com/listxue/p/13376484.html...
    99+
    2018-11-11
    数据库备份 数据库入门 数据库基础教程 数据库 mysql
  • 数据库 | 数据库概述、关系型数据库、非关系型数据库
    目录: 1.数据库:1.1 数据库的含义1.2 数据库的特点 2.数据表3.数据库管理系统4.数据库系统5.关系型数据库 和 非关系型数据库:5.1 关系型数据库5.2 关系型数据库“优...
    99+
    2023-09-05
    数据库 oracle mysql 关系型数据库 非关系型数据库
  • 阿里云数据库的软件概述
    本文将详细介绍阿里云数据库提供的各种软件,包括关系型数据库、NoSQL数据库、分布式数据库等,帮助您了解和选择适合您业务需求的数据库软件。 阿里云数据库是阿里云提供的各种数据库服务的总称,包括关系型数据库、NoSQL数据库、分布式数据库等。...
    99+
    2023-10-29
    阿里 数据库 软件
  • 数据库备份服务 数据库备份操作指导
    数据库备份是一项非常重要的任务,可以保证数据的安全性和可靠性。以下是数据库备份操作的指导:1. 确定备份策略:根据业务需求和数据变更...
    99+
    2023-09-21
    数据库
  • Oracle数据泵的概述
    本篇内容主要讲解“Oracle数据泵的概述”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle数据泵的概述”吧!数据泵概述  数据泵(DATAPUMP)是...
    99+
    2022-10-18
  • openGauss数据库共享存储特性概述
    目录版本介绍继承功能:新增功能:主备共享存储特性简介客户价值特性描述特性约束openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本,希望广大社区伙伴和开发者基于此版本进行场...
    99+
    2023-02-18
    openGauss数据库共享存储 openGauss共享存储 openGauss数据库存储
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作