精华内容
下载资源
问答
  • 数据库中数据备份有哪些类型发布时间:2021-01-05 10:01:21来源:亿速云阅读:94作者:小新这篇文章主要介绍了数据库中数据备份有哪些类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后...

    数据库中数据备份有哪些类型

    发布时间:2021-01-05 10:01:21

    来源:亿速云

    阅读:94

    作者:小新

    这篇文章主要介绍了数据库中数据备份有哪些类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据备份可分为:热备份、冷备份和温备份。热备份可以在数据库运行中直接备份,对正在运行的数据库操作没有任何的影响。冷备份必须在数据库停止的情况下进行备份,数据库的读写操作不能执行。温备份在数据库运行中进行,备份时仅支持读操作,不支持写操作。

    备份是以防万一的一种必要手段,在出现硬件损坏或非人为的因素而导致数据丢失时,可以使用备份恢复数据,以将损失降低到最小程度,因此备份是必须的。备份可以分为以下几个类型。

    根据备份的方法(是否需要数据库离线)可以将备份分为:热备(Hot Backup)

    冷备(Cold Backup)

    温备(Warm Backup)

    热备份可以在数据库运行中直接备份,对正在运行的数据库操作没有任何的影响,数据库的读写操作可以正常执行。这种方式在 MySQL 官方手册中称为 Online Backup(在线备份)。

    冷备份必须在数据库停止的情况下进行备份,数据库的读写操作不能执行。这种备份最为简单,一般只需要复制相关的数据库物理文件即可。这种方式在 MySQL 官方手册中称为 Offline Backup(离线备份)。

    温备份同样是在数据库运行中进行的,但是会对当前数据库的操作有所影响,备份时仅支持读操作,不支持写操作。

    按照备份后文件的内容,热备份又可以分为:逻辑备份

    裸文件备份

    在 MySQL 数据库中,逻辑备份是指备份出的文件内容是可读的,一般是文本内容。内容一般是由一条条 SQL 语句,或者是表内实际数据组成。如 mysqldump 和 SELECT * INTO OUTFILE 的方法。这类方法的好处是可以观察导出文件的内容,一般适用于数据库的升级、迁移等工作。但其缺点是恢复的时间较长。

    裸文件备份是指复制数据库的物理文件,既可以在数据库运行中进行复制(如 ibbackup、xtrabackup 这类工具),也可以在数据库停止运行时直接复制数据文件。这类备份的恢复时间往往比逻辑备份短很多。

    按照备份数据库的内容来分,备份又可以分为:完全备份

    部分备份

    完全备份是指对数据库进行一个完整的备份,即备份整个数据库,如果数据较多会占用较大的时间和空间。

    部分备份是指备份部分数据库(例如,只备份一个表)。

    部分备份又分为:增量备份

    差异备份

    增量备份需要使用专业的备份工具。指的是在上次完全备份的基础上,对更改的数据进行备份。也就是说每次备份只会备份自上次备份之后到备份时间之内产生的数据。因此每次备份都比差异备份节约空间,但是恢复数据麻烦。

    差异备份指的是自上一次完全备份以来变化的数据。和增量备份相比,浪费空间,但恢复数据比增量备份简单。

    MySQL 中进行不同方式的备份还要考虑存储引擎是否支持,如 MyISAM 不支持热备,支持温备和冷备。而 InnoDB 支持热备、温备和冷备。

    一般情况下,我们需要备份的数据分为以下几种:表数据

    二进制日志、InnoDB 事务日志

    代码(存储过程、存储函数、触发器、事件调度器)

    服务器配置文件

    感谢你能够认真阅读完这篇文章,希望小编分享的“数据库中数据备份有哪些类型”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

    展开全文
  • 本文实例讲述了...具体分析如下:在php中有时我们要替换数据库中表前缀但是又不苦于一个个表去修改前缀,这里我自己写了一个mysqli批量替换数据库表前缀的php程序,感兴趣的朋友可以参考一下,代码如下:header ( '...

    本文实例讲述了php+mysqli实现批量替换数据库表前缀的方法。分享给大家供大家参考。具体分析如下:

    在php中有时我们要替换数据库中表前缀但是又不苦于一个个表去修改前缀,这里我自己写了一个mysqli批量替换数据库表前缀的php程序,感兴趣的朋友可以参考一下,代码如下:

    header ( 'http-equiv="Content-Type" content="text/html; charset=utf-8"' );

    $DB_host = "localhost"; //数据库主机

    $DB_user = "root"; //数据库用户

    $DB_psw = "root3306"; //数据库密码

    $DB_datebase = "gk_yue39_com"; //数据库名

    $DB_charset = "utf8"; //数据库字符集

    $dbprefix="yue392_com_";

    $new_dbprefix="yue39_com_";

    $db = new mysqli ( $DB_host, $DB_user, $DB_psw ); //实例化对象

    //检查连接

    if (mysqli_connect_errno ()) {

    printf ( "Connect failed: %sn", mysqli_connect_error () );

    exit ();

    }

    $db->select_db ( $DB_datebase ); //选择操作数据库

    $db->set_charset ( $DB_charset ); //设置数据库字符集

    //执行一个查询

    $sql = 'show tables';

    $result = $db->query ( $sql );

    echo $result->num_rows . ' 行结果 ' . $result->field_count . ' 列内容
    ';

    //$result->data_seek('5');//从结果集中第5条开始取结果

    echo '

    //循环输出字段名

    //$result->field_seek(2);//从字段集中第2条开始取结果

    while ( true == ($field = $result->fetch_field ()) ) {

    echo '

    ' . $result->current_field . '_' . $field->name . '(' . $field->length . ')';

    }

    //循环输出查询结果

    while ( true == ($row = $result->fetch_assoc ()) ) {

    echo '

    ';

    foreach ( $row as $col ) {

    $sql="rename table `".$col."` to `".str_replace ( $dbprefix, $new_dbprefix, $col)."`";

    if($db->query ( $sql )){

    echo '

    ' . $sql. ' success';

    }else{

    echo '

    ' . $sql. ' failed';

    }

    }

    echo '

    ';

    }

    echo '

    ';

    $result->free ();//释放结果集

    $db->close (); //关闭连接

    ?>

    第二种方法:如何批量修改MYSQL的数据库表前缀名称

    批量修改表名的操作方法,以下操作请用navicat操作即可,快捷方便:

    SELECT CONCAT( ‘ALTER TABLE ‘, TABLE_NAME, ‘RENAME TO ‘, TABLE_NAME,‘;' )

    FROM information_schema.TABLES

    WHERE TABLE_NAME LIKE ‘uc_%';

    执行后得到如下的结果:

    ALTER TABLE uc_aaa RENAME TO uc_aaa;

    ALTER TABLE uc_bbb RENAME TO uc_bbb;

    保留如下的数据:

    ALTER TABLE uc_aaa RENAME TO uc_aaa;

    ALTER TABLE uc_bbb RENAME TO uc_bbb;

    然后选择要修改的数据库,执行上面得到的SQL语句就可以修改掉数据库表前缀了。

    附:1、批量删除指定前缀的表

    SELECT CONCAT( ‘drop table ‘, TABLE_NAME, ‘;' )

    FROM information_schema.TABLES

    WHERE TABLE_NAME LIKE ‘uc_%';

    2、“dbtable_name”改成“db_table_name”

    SELECT CONCAT( ‘ALTER TABLE ‘, TABLE_NAME, ‘RENAME TO db_', SUBSTRING(TABLE_NAME,3),‘;' )

    FROM information_schema.TABLES

    WHERE TABLE_NAME LIKE ‘db%';

    第三种方法:

    今天更新一个mysql数据库表前缀的另一个方法,这个方法使用也非常简单,就是用第三方工具——帝国备份王进行修改。操作方法如下:

    1、登录帝国备份后台,选择“备份数据”—— “批量替换表名”,然后执行操作就可以完成批量替换了,也非常简单。如下图:

    如何批量修改mysql的表前缀名称

    以上方法都可修改网站前缀,不过大多数的开源程序修改表缀后,再需要修改网站程序的数据库配置文件,才会让网站网站的运行。

    希望本文所述对大家的php程序设计有所帮助。

    展开全文
  • 这篇文章介绍的内容是关于php面试题六之memcache和redis的区别,有着一定的参考价值,现在分享给大家,需要的朋友可以参考一下Memcache和Redis区别: * Redis中,并不是所有的数据都一直存储在内存中的,这是和...

    这篇文章介绍的内容是关于php面试题六之memcache和redis的区别,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    Memcache和Redis区别:
    * Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcache相比一个最大的区别。
    * Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcache只是简单的K/V缓存。
    * 他们的扩展都需要做集群;实现方式:master-slave、Hash。
    * 在100k以上的数据中,Memcache性能要高于Redis。
    * 如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcache。当然,这和你的应用场景和数据特性有关。
    * 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcache都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
    * Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache更强
    共同点:Memcache,Redis 都是内存数据库

    区别:
    Memcache
    Memcache可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS,适用于最大程度扛量
    只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
    无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失

    Redis
    支持多种数据结构,如string,list,dict,set,zset,hyperloglog
    单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
    支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
    aof的压缩规则 比如一个key添加再删除 就会过滤
    支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制.
    支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
    支持简单的事务需求,但业界使用场景很少,并不成熟

    Memcache和Redis区别:
    * Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcache相比一个最大的区别。
    * Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcache只是简单的K/V缓存。
    * 他们的扩展都需要做集群;实现方式:master-slave、Hash。
    * 在100k以上的数据中,Memcache性能要高于Redis。
    * 如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcache。当然,这和你的应用场景和数据特性有关。
    * 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcache都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
    * Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache更强
    共同点:Memcache,Redis 都是内存数据库

    区别:
    Memcache
    Memcache可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS,适用于最大程度扛量
    只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
    无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失

    Redis
    支持多种数据结构,如string,list,dict,set,zset,hyperloglog
    单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
    支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
    aof的压缩规则 比如一个key添加再删除 就会过滤
    支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制.
    支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
    支持简单的事务需求,但业界使用场景很少,并不成熟

    更多PHP相关技术文章,请访问进行学习!

    八重樱:怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)zhuanlan.zhihu.com
    3fdba1301aae6334c6bffbc0b52ddd81.png

    以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。

    展开全文
  • 分享给大家供大家参考,具体如下:设计一个数据表如下:create table optimization(id INT NOT NULL AUTO_INCREMENT,value VARCHAR(10) NOT NULL,PRIMARY KEY(id));现在一个业务需求需要批量插入数据。先来看看下面...

    本文实例讲述了PHP优化之批量操作MySQL。分享给大家供大家参考,具体如下:

    设计一个数据表如下:

    create table optimization(

    id INT NOT NULL AUTO_INCREMENT,

    value VARCHAR(10) NOT NULL,

    PRIMARY KEY(id)

    );

    现在有一个业务需求需要批量插入数据。

    先来看看下面这一段代码:

    $dsn = 'mysql:dbname=test;host=127.0.0.1';

    $user = 'root';

    $password = 'root';

    try {

    $dbh = new PDO($dsn, $user, $password);

    } catch(PDOException $e) {

    echo 'Connection failed: ' , $e->getMessage();

    }

    $begin = microtime(true) * 1000;

    $count = 100;

    $stmt = $dbh->prepare('INSERT INTO `optimization` (id, value) VALUES(:id, :value)');

    $stmt->bindParam(':id', $id);

    $stmt->bindParam(':value', $value);

    for ($i = 0; $i < $count; $i++)

    {

    $id = '';

    $value = $i;

    $stmt->execute();

    }

    $end = microtime(true) * 1000;

    echo 'excuted : ' , ($end - $begin) , ' ms';

    经过测试,上面代码运行结果如下:

    1、excuted : 7601.4348144531 ms

    2、excuted : 7476.4270019531 ms

    3、excuted : 7674.4387207031 ms

    平均:7584.100179036433 ms

    再来看看第二段代码:

    $dsn = 'mysql:dbname=test;host=127.0.0.1';

    $user = 'root';

    $password = 'root';

    try {

    $dbh = new PDO($dsn, $user, $password);

    } catch(PDOException $e) {

    echo 'Connection failed: ' , $e->getMessage();

    }

    $begin = microtime(true) * 1000;

    $dbh->beginTransaction();

    try {

    $count = 100;

    $sql = 'INSERT INTO `optimization` (id, value) VALUES ';

    $sql_arr = array();

    $sql_str = '';

    for ($i = 0; $i < $count; $i++)

    {

    $sql_arr[] = ("('', $i)");

    }

    $sql_str = implode(',', $sql_arr);

    $sql .= $sql_str;

    $stmt = $dbh->prepare($sql);

    $stmt->execute();

    $dbh->commit();

    } catch(Exception $e) {

    $dbh->rollBack();

    echo $e->getMessage() . '
    ';

    }

    $end = microtime(true) * 1000;

    echo 'excuted : ' , ($end - $begin) , ' ms';

    上面这段代码的运行结果如下:

    1、excuted : 99.005859375 ms

    2、excuted : 103.00610351562 ms

    3、excuted : 68.00390625 ms

    平均:90.00528971354 ms

    ##分析 可以看出,在第二段代码中,使用了批量插入,此时的效率比第一段提高了84%。原因如下:

    使用第一段代码的时候,因为每一次循环里都执行了一个mysql语句,此时php需要与mysql获得连接,然后再执行mysql语句,然后再断开。这就是第一段代码最主要的时间开销–PHP与MySQL连接的网络传输IO

    第一段代码SQL语句解析的次数更多

    因此,在第二段代码中,通过合并SQL语句来实现减少SQL语句解析的次数以及PHP与MySQL连接的次数来达到减少网络传输IO的开销。

    注意: 1、SQL语句是有长度限制的,因此,在进行SQL语句合并时务必不能超过SQL长度限制,通过设置max_allowed_packet可以修改,默认是1M,测试时修改为8M。

    ##总结

    在进行对数据库的批量操作(如:插入、更新、修改)时,应当尽可能将SQL语句合并后再执行而不是在循环中依次执行。

    记录下最近在项目中犯下的一个比较大的错误,以后不能再犯了。以前一直都没有注意到,直到现在真正参与到企业项目中,自己的代码被老大指出错误后才发现自己的错误。学习了。

    希望本文所述对大家PHP程序设计有所帮助。

    展开全文
  • 文章转载:CSDN链接:https://blog.csdn.net/ligupeng7929/article/details/79421205作者:本兮言商务合作:请加微信(QQ):2230304070php自学中心网址:...可以参考参考抖音号:startphp用短视频和大家分享PHP学习...
  • 查询sql语句的条件加了索引,但是查询的时候没有命中索引,比如:前缀匹配失效、条件字段做了类型转换或者使用了函数、使用了范围查询等;使用 explain 查看索引命中情况 ;参考 数据库中的单表的数据量达到了多少...
  • 分享给大家供大家参考。具体分析如下:php如果要批量保存数据我们只要使用sql的insert into语句就可能实现数据批量保存了,如果是更新数据使用update set就可以完成更新了,操作方法都非常的简单,下面整理两个例子....
  • MySQL索引有哪些类型?本篇文章小编给大家分享一下MySQL索引的各种类型介绍,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。什么是索引?索引是数据库存储引擎用于...
  • 1、查询 Test 数据库有哪些表,查询结果如下: 2、查询 Test 数据库中 test_01 表的字段名、字段类型,查询结果如下: 3、查询 Test 数据库中 test_01 表的字段名、注释,查询结果如下: SQL 汇集: -- ...
  • 2.SQL Server 2012提供的类型转换函数有哪些?其语法格式分别是什么? 答:cast和convert 3.SQL Server 2012支持的用户自定义函数有几种?每一种函数的函数体是什么?返回值是什么? 答:标量函数、内...
  • Mysql数据库备份复制

    2020-07-18 21:34:55
    为了恢复数据,我们就要定期备份数据,备份数据的策略要根据不同的场景制定,大致以下几个参考因素: 能够容忍丢失多少数据 恢复数据需要多长时间 需要恢复哪些数据 一、数据库备份类型及备份内容 在 mysql 中...
  • mongodb数据库--详解

    2018-09-10 19:41:38
    二、有哪些逻辑概念 mongoDB与SQL数据库脚本上大同小异,常见的逻辑对象通常包括 数据库,集合,文档,字段 索引,主键,聚合 以下为其与SQL的对照,详细可以参考:http://blog.csdn.net/lesham...
  • 需要用python脚本处理数据存入数据库,但是到了后他们要改需求,我看了下面试题,基本上就是数据建设管理的工作了吧,达不到那个水平,就只有算了,但是还是把面试题做一遍写出来吧,万一人需要呢,不多说,开始吧...
  • mysql和redis有哪些区别发布时间:2020-09-16 14:40:12来源:亿速云阅读:117作者:小新这篇文章将为大家详细讲解有关mysql和redis有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后...
  • 许多小白不清楚ip在线代理网页是什么,在想要切换ip的...假如你合适的代理管理解决方案,那么你就可以为你的业务建立一个非常强大的IP数据库,为你的解决方案打下基础。 二、是住宅IP 这是私人住宅IP,允许通过住宅网
  • 该部分模型需要参照目前有效发放系统、Symbols系统的表结构、命名、数据类型。 因为上报中要求对变更进行上报,当采集系统不能提供变更情况时,需要上报系统根据当天数据和前一次存储的数据进行比较之后才能知道发生...
  • 很多小白不清楚ip在线代理网页是什么,在想进行ip切换的时候,却不知道要怎么使用在网页上找寻,能够爱切换ip的网页,不过不用担心,小编就基础小白想要切换ip的想法及步骤,给大家反馈以下内容,方便大家参考学习...
  • 1.3 数据库类型 6 1.3.1 联机事务处理和决策支持系统数据库 6 1.3.2 开发、测试和产品数据库 7 1.4 培训和认证 7 1.4.1 培训 7 1.4.2 认证 8 1.4.3 Oracle DBA的资源和组织 10 1.4.4 Oracle示例 ...
  • 软件测试和数据库试题(牛客网)

    千次阅读 2019-04-08 16:11:19
    1、设计系统测试计划需要参考的项目文挡有哪些?(ACD) A、软件测试计划 B、可行性研究报告 C、软件需求规范 D、迭代计划 2、在SELECT 语句中使用MAX(列名)时,列名应该(D) A、必须是数值型 B、必须是字符...
  • Mysql 数据库表设计 应该注意什么?

    千次阅读 2020-07-13 17:00:58
    良好的逻辑设计和物理设计是高性能的基石,在进行设计的时候应该根据系统将要执行的查询语句来设计表,这往往需要权衡各种因素,那么这些因素有哪些呢?我们应该重点关注什么呢?这常常苦恼着我们,良好的设计原则是...
  • 数据库课程设计(基于B/S)

    热门讨论 2008-12-28 15:28:06
    要求学生结合所学管理知识,在借鉴课堂教学案例、了解家人或亲友所从事的业务及其流程的基础上,参考有关资料,选择自己了解的一项业务,运用课堂所学数据库系统与数据库设计知识,完成信息需求分析、数据库概念设计...
  • sql server 2000 课程设计报告,内完整的sql语句 第一章 绪论………………………………………………………………………………………1 1.1设计目的…………………………………………………………………………… 1 1...
  • 1.Redis 有哪些数据类型,可参考《Redis常见的5种不同的数据类型详解》 5种数据类型:String、List、Set、Hash包含键值对的散列值、ZSet有序集合 String : 封锁一个IP地址、 Incby命令 Hash : 存储用户信息 ...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  • 8.5.2 支持的数据库对象类型 277 8.5.3 比较 277 8.5.4 比较维护 279 8.5.5 复查以前的比较 279 8.5.6 会聚共享数据库对象(修复) 280 8.6 目的的拆分和合并 281 8.6.1 拆分流 281 8.6.2 合并流 282 8.6.3...
  • 4.3.1 有哪些对象统计信息可用 95 4.3.2 收集对象统计信息 108 4.3.3 锁定对象统计信息 123 4.3.4 比较对象统计信息 125 4.3.5 删除对象统计信息 127 4.3.6 保持统计信息时效性的策略 129 4.4 通用...
  • 学习Oracle时,很多书和资料都很有参考价值,特别是Oracle文档,更是全面地提供了我们想了解的信息。但是文档中没有实战用例,没有告诉我们哪些可行或者哪些不可行,什么情况下可行或者什么情况下不可行,为什么可行...
  • 直接进入正题(记录我初学爬虫的一些心得): 我爬的是豆瓣的电影,具体项目电影名称、导演名、演员名、影片类型、影片海报、还有部分关于电影的短评(太多了的话爬一次时间太长,不太好往数据库里存)先上最后...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 256
精华内容 102
关键字:

参考数据库有哪些类型