精华内容
下载资源
问答
  • centOS虚拟机复制的兼容问题

    千次阅读 2018-10-10 17:24:03
    今天在拷贝centOS虚拟机的时候, 意外遇到centOS复制时候的兼容问题. 配置文件 .vmx 是由VMware产品创建,但该产品与此版 VMware workstation 不兼容,因此无法使用。 根据这个提示,初步怀疑是虚拟机创建时的...

    今天在拷贝centOS虚拟机的时候, 意外遇到centOS复制时候的兼容性问题.
    在这里插入图片描述

    配置文件 .vmx 是由VMware产品创建,但该产品与此版 VMware workstation 不兼容,因此无法使用。

    根据这个提示,初步怀疑是虚拟机创建时的版本和我安装的workstation版本不兼容,由于软件一般会有向下兼容的特性,所以虚拟机的版本可能要高于我的workstation版本。

    按照这个思路, 使用高级记事本打开.vmx文件, 查看下此虚拟机的版本是多少.
    在这里插入图片描述

    通过 vmx文件查询VMware虚拟机文件的版本为14. 而我安装的workstation 版本是 VMware Workstation 10.
    在这里插入图片描述

    这个好办, 将14改为10呗. 改完后, 再次运行
    在这里插入图片描述

    然后又报了这个错误:

    不支持客户机操作系统"centos6-64", 请从"虚拟机设置"中"选项"选项卡上的"常规"页面选择一个客户机操作系统.

    按照操作进入 “虚拟机设置” --> 点击选项
    在这里插入图片描述

    修改客户机操作系统为Linux, 版本改为CentOS 64位.
    在这里插入图片描述

    再次开机虚拟机, 发现可以正常开启了, 点击 “我已复制” 即可.
    在这里插入图片描述

    ---------------------------2018-10-21更新--------------------------
    今天遇到一个虚拟机的授权服务未启动的问题, 随手记录下:

    VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary files.
    The VMware Authorization Service is not running.

    解决方法: 显然是授权服务未启动, win+R 输入services.msc打开服务列表, 找到VMware Authorization Service 启动即可.

    展开全文
  • 一致: 1.强一致 这种一致级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 2.弱一致 这种一致级别约束了系统在写入成功后,不承诺立即...

    一致性:
    1.强一致性
    这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大
    2.弱一致性
    这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不久承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态
    3.最终一致性
    最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。这里之所以将最终一致性单独提出来,是因为它是弱一致性中非常推崇的一种一致性模型,也是业界在大型分布式系统的数据一致性上比较推崇的模型

    数据库为什么要读写分离?

    1. 现在很多大型互联网业务,往往读多写少,那么数据库的读会首先成为数据库的瓶颈,我们希望提升数据库的读性能。消除读写锁冲突从而提升数据库的写性能,那么读写分离架构。主从只负责各自的写和读,极大程度的缓解X锁和S锁争用。
      解释:排它锁(X锁)和共享锁(S锁)。
      X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A
      S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁
      若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A。
    2. 假如我们的从库是多台的,可以分摊读取。假如原来每分钟150条读数据,分摊给3台服务器,每台服务器也就处理50条,同时增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务,保证业务正常运行。

    这里以Mysql为例:

    怎么做到主从复制?

    master配置:

    配置my.cnf文件

    #在[mysqld]中添加:
    server-id=1                      #server-id 服务器唯一标识
    log_bin=master-bin               #启动MySQL二进制日志,即数据同步语句。
    log_bin_index=master-bin.index
    binlog_do_db=hxg                 #指定记录二进制日志的数据库,即需要复制的数据库名
    

    创建从服务器的用户和权限

    mysql> grant replication slave on *.* to masterbackup@'你的从主机地址' identified by '从库连接密码';
    #如果有多个用正则匹配 地址。
    

    配置完后,重启一下。可以用show master status查看一下。

    slave配置:

    #在[mysqld]中添加:
    server-id=2                    #server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识
    relay-log=slave-relay-bin      #relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其他从服务器的主服务器。
    relay-log-index=slave-relay-bin.index
    #replicate-do-db=hxg           #replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定binlog-do-db,则在slave端可用replication-do-db来过滤。
    

    同样需要重新启动。
    连接master主服务器

    mysql> change master to master_host='主机IP',master_port=3306,master_user='masterbackup',master_password='连接密码',master_log_file='File',master_log_pos=Position;
    #master_log_file、master_log_pos分别对应show master status显示的File列和Position列。
    

    怎么读写分离呢?:

    基于中间代理层实现:代理一般位于客户端和服务器之间,代理服务器接到客户段的请求通过判断后转发到后端数据库。
    使用Mysql-proxy实现mysql的读写分离,Mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请求,对SQL语句进行分析,判断出是读操作还是写操作,然后分发至对应的Mysql服务器上。
      Mysql-proxy是官方提供的Mysql中间件产品可以实现负载平衡,读写分离,failover等
      MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,
      从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。
      当然,这样Proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多 个proxy的连接参数即可。
     
    在这里插入图片描述
    从上图很清晰的看到,主库提供写,多个从库提供读。

    主从同步的详细步骤:

    在这里插入图片描述
    mysql主从复制需要三个线程,master(binlog dump thread)、slave(I/O thread 、SQL thread)。
    master:
    binlog dump线程:当主库中有数据更新时,那么主库就会根据按照设置的binlog格式,将此次更新的事件类型写入到主库的binlog文件中,此时主库会创建log dump线程通知slave有数据更新,当I/O线程请求日志内容时,会将此时的binlog名称和当前更新的位置同时传给slave的I/O线程。
    slave:

    1. I/O线程:该线程会连接到master,向log dump线程请求一份指定binlog文件位置的副本,并将请求回来的binlog存到本地的relay log(中继日志)中,relay log和binlog日志一样也是记录了数据更新的事件,它也是按照递增后缀名的方式,产生多个relay log( host_name-relay-bin.000001)文件,slave会使用一个index文件( host_name-relay-bin.index)来追踪当前正在使用的relay log文件。
    2. SQL线程:该线程检测到relay log有更新后,会读取并在本地做redo操作,将发生在主库的事件在本地重新执行一遍,来保证主从数据同步。此外,如果一个relay log文件中的全部事件都执行完毕,那么SQL线程会自动将该relay log 文件删除掉

    同步方式

    异步复制

    1. MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从库上,如果此时,强行将从提升为主,可能导致新主上的数据不完整
    2. 主库将事务 Binlog 事件写入到 Binlog 文件中,此时主库只会通知一下 Dump 线程发送这些新的 Binlog,然后主库就会继续处理提交操作,而此时不会保证这些 Binlog 传到任何一个从库节点上。

    全局同步复制

    1. 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。
    2. 当主库提交事务之后,所有的从库节点必须收到、APPLY并且提交这些事务,然后主库线程才能继续做后续操作。但缺点是,主库完成一个事务的时间会被拉长,性能降低。

    半同步复制

    1. 是介于全同步复制与全异步复制之间的一种,主库只需要等待至少一个从库节点收到并且 Flush Binlog 到 Relay Log 文件即可,主库不需要等待所有从库给主库反馈。同时,这里只是一个收到的反馈,而不是已经完全完成并且提交的反馈,如此,节省了很多时间。
    2. 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

    主从同步延迟问题

    mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的I/O线程到主库取日志,效率也比较高,但是,slave的SQL线程将主库的DDL和DML操作在slave实施。DML和DDL的IO操作是随即的,不是顺序的,成本高很多,还可能存在slave上的其他查询产生lock争用的情况,由于SQL也是单线程的,所以一个DDL卡住了,需要执行很长一段事件,后续的DDL线程会等待这个DDL执行完毕之后才执行,这就导致了延时。当主库的TPS(每秒事务量:(Com_commit + Com_rollback)/Uptime)并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,延时就产生了,除此之外,还有可能与slave的大型query语句产生了锁等待导致。
    解决方案

    1. 业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。
    2. 服务的基础架构在业务和mysql之间加入memcache或者Redis的cache层。降低mysql的读压力。
    3. 使用比主库更好的硬件设备作为slave。

    怎么保证数据一致性?

    一致性指分布式服务化系统之间的弱一致性,包括应用系统一致性和数据一致性。
    无论是水平拆分还是垂直拆分,都解决了特定场景下的特定问题,凡事有好的一面,都会有坏的一面,拆分后的系统或者服务化的系统最大的问题就是一致性问题,这么多个具有元功能的模块,或者同一个功能池中的多个节点之间,如何保证他们的信息是一致的、工作步伐是一致的、状态是一致的、互相协调有序的工作呢?
    想想以下经典案例:

    1. 转账:扣除自己成功,别人增加失败,那么你就损失这笔钱。扣除自己失败,增加别人成功,银行就损失这笔钱。
    2. 下订单和扣库存: 下订单和库存,先下单,后扣库存,那么会导致超卖。如果下单成功,扣库存成功,那么会导致少卖。
    3. 同步超时:服务化的系统间调用常常因为网络问题导致系统间调用超时,系统A同步调用系统B超时,系统A可以明确得到超时反馈,但是无法确定系统B是否已经完成了预定的功能或者没有完成预定的功能。于是,系统A就迷茫了,不知道应该继续做什么,如何反馈给使用方。
    4. 异步回调超时:统A同步调用系统B发起指令,系统B采用受理模式,受理后则返回受理成功,然后系统B异步通知系统A。在这个过程中,如果系统A由于某种原因迟迟没有收到回调结果,那么两个系统间的状态就不一致,互相认知不同会导致系统间发生错误,严重情况下会影响核心事务,甚至会导致资金损失。
    5. 掉单:分布式系统中,两个系统协作处理一个流程,分别为对方的上下游,如果一个系统中存在一个请求,通常指订单,另外一个系统不存在,则导致掉单,掉单的后果很严重,有时候也会导致资金损失。
    6. 系统间状态不一致:两个系统间都存在请求,但是请求的状态不一致。
    7. 缓存和数据库不一致:一些特殊的场景对读的性能要求极高,服务于交易的数据库难以抗住大规模的读流量,通常需要在数据库前垫缓存,那么缓存和数据库之间的数据如何保持一致性?是要保持强一致呢还是弱一致性呢?
    8. 缓存数据结构不一致:某系统需要种某一数据结构的缓存,这一数据结构有多个数据元素组成,其中,某个数据元素都需要从数据库中或者服务中获取,如果一部分数据元素获取失败,由于程序处理不正确,仍然将不完全的数据结构存入缓存,那么缓存的消费者消费的时候很有可能因为没有合理处理异常情况而出错。
    9. 本地缓存节点间不一致:一个服务池上的多个节点为了满足较高的性能需求,需要使用本地缓存,使用了本地缓存,每个节点都会有一份缓存数据的拷贝,如果这些数据是静态的、不变的,那永远都不会有问题,但是如果这些数据是半静态的或者常被更新的,当被更新的时候,各个节点更新是有先后顺序的,在更新的瞬间,各个节点的数据是不一致的,如果这些数据是为某一个开关服务的,想象一下重复的请求走进了不同的节点。一个请求走了开关打开的逻辑,同时另外一个请求走了开关关闭的逻辑,这导致请求被处理两次,最坏的情况下会导致灾难性的后果,就是资金损失。
      酸碱平衡理论(ACID在英文中的意思是“酸”)
      ACID
      A: Atomicity    原子性
      C: Consistency  一致性
      I: Isolation    隔离性
      D: Durability   持久性
      具有ACID的特性的数据库支持强一致性,强一致性代表数据库本身不会出现不一致,每个事务是原子的,或者成功或者失败,事物间是隔离的,互相完全不影响,而且最终状态是持久落盘的。
      CAP(帽子理论)
      C:Consistency,一致性, 数据一致更新,所有数据变动都是同步的
      A:Availability,可用性, 好的响应性能,完全的可用性指的是在任何故障模型下,服务都会在有限的时间处理响应
      P:Partition tolerance,分区容错性,可靠性
      任何分布式系统只可同时满足二点,没法三者兼顾。关系型数据库由于关系型数据库是单节点的,因此,不具有分区容错性,但是具有一致性和可用性。
      BASE理论(碱):
      BASE理论解决CAP理论提出了分布式系统的一致性和可用性不能兼得的问题。满足CAP理论,通过牺牲强一致性,获得可用性,一般应用在服务化系统的应用层或者大数据处理系统,通过达到最终一致性
      BA:Basically Available,基本可用
      S:Soft State,软状态,状态可以有一段时间不同步
      E:Eventually Consistent,最终一致,最终数据是一致的就可以了,而不是时时保持强一致
      以转账为例:
      我们把用户A给用户B转账分成四个阶段
      第一个阶段用户A准备转账
      第二个阶段从用户A账户扣减余额
      第三个阶段对用户B增加余额
      第四个阶段完成转账。
      系统需要记录操作过程中每一步骤的状态,一旦系统出现故障,系统能够自动发现没有完成的任务,然后,根据任务所处的状态,继续执行任务,最终完成任务,达到一致的最终状态。
      上面过程是通过持久化执行任务的状态和环境信息,一旦出现问题,定时任务会捞取未执行完的任务,继续未执行完的任务,直到执行完成为止,或者取消已经完成的部分操作回到原始状态。
      下面介绍一下保持数据一致性的方案:
      一、 semi-sync(半同步复制)
      之所以会读取到旧数据,关键在于主从同步需要一个时间段,而读取请求可能刚好就发生在同步阶段。为了读取到最新的数据,需要等主从同步完成之后,主库上的写请求再返回 。
      在这里插入图片描述
      (1)系统先对DB-master进行了一个写操作,写主库;
      (2)等主从同步完成,写主库的请求才返回;
      (3)读从库,读到最新的数据(如果读请求先完成,写请求后完成,读取到的是“当时”最新的数据)。
      显然带来的后果就是主库的写请求时延会增加,吞吐量会降低。
      二、 利用中间件
      借助中间件的路由作用,对服务层的读写请求进行分发,从而避免出现不一致问题。
      在这里插入图片描述
      (1)所有的读写都走数据库中间件,通常情况下,写请求路由到主库,读请求路由到从库。
      (2)记录所有路由到主库的key,在经验主从同步时间窗口内(假设是500ms),如果有读请求访问中间件,此时有可能从库还是旧数据,就把这个key上的读请求路由到主库。
      (3)经验主从同步时间过完后,对应key的读请求继续路由到从库。
      中间件带来的好处就是能保证数据的绝对一致性,但同时也带来成本上升的问题。
      三、利用缓存
      在这里插入图片描述
      (1)将某个库上的某个key要发生写操作,记录在cache里,并设置“经验主从同步时间”的cache超时时间。
      (2)修改数据库。
      而读取请求发生的时候:
      在这里插入图片描述
      从图中可以看出:
      (1)先到cache里查看,对应库的对应key有没有相关数据;
      (2)如果cache hit,有相关数据,说明这个key上刚发生过写操作,此时需要将请求路由到主库读最新的数据;
      (3)如果cache miss,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离。
      显然,利用缓存,减少了中间件带来的成本问题,但多了一个Cache组件,并且读写数据库多了一步Cache操作,操作相对其他稍较繁琐。
      其实用缓存策略,也存在很多问题。

    缓存和数据库一致性:

    先更新数据库,再更新缓存
    存在线程安全问题,同时如果数据更新频繁,读行为还没到,缓存更新频繁存在性能浪费。 同时如果写高并发场景,压力则直接压到了DB上。
    同时有请求A和请求B进行更新操作,那么会出现
    (1)线程A更新了数据库
    (2)线程B更新了数据库
    (3)线程B更新了缓存
    (4)线程A更新了缓存
    先删缓存,再更新数据库
    (1)请求A进行写操作,删除缓存
    (2)请求B查询发现缓存不存在
    (3)请求B去数据库查询得到旧值
    (4)请求B将旧值写入缓存
    (5)请求A将新值写入数据库
    解决方案:采用延时双删策略。删两次。
    (1)先淘汰缓存
    (2)再写数据库(这两步和原来一样)
    (3)休眠1秒,再次淘汰缓存
    这么做,可以将1秒内所造成的缓存脏数据,再次删除。
    先更新数据库,再删缓存
    (1)缓存刚好失效
    (2)请求A查询数据库,得一个旧值
    (3)请求B将新值写入数据库
    (4)请求B删除缓存
    (5)请求A将查到的旧值写入缓存
    发生上述情况有一个先天性条件,就是步骤(3)的写数据库操作比步骤(2)的读数据库操作耗时更短,才有可能使得步骤(4)先于步骤(5)。可是,大家想想,数据库的读操作的速度远快于写操作的(不然做读写分离干嘛,做读写分离的意义就是因为读操作比较快,耗资源少),因此步骤(3)耗时比步骤(2)更短,这一情形很难出现。
    首先,给缓存设有效时间是一种方案。其次,采用策略(2)里给出的异步延时删除策略,保证读请求完成以后,再进行删除操作。
    还有如果,删除缓存失败了怎么办?也会导致数据不一致。
    那么我们需要一个重试机制
    方案一:
    在这里插入图片描述
    (1)更新数据库数据
    (2)缓存因为种种问题删除失败
    (3)将需要删除的key发送至消息队列
    (4)自己消费消息,获得需要删除的key
    (5)继续重试删除操作,直到成功
    你会发现,,该方案有一个缺点,对业务线代码造成大量的侵入。于是有了方案二,在方案二中,启动一个订阅程序去订阅数据库的binlog,获得需要操作的数据。在应用程序中,另起一段程序,获得这个订阅程序传来的信息,进行删除缓存操作。
    方案二:
    在这里插入图片描述
    (1)更新数据库数据
    (2)数据库会将操作信息写入binlog日志当中
    (3)订阅程序提取出所需要的数据以及key
    (4)另起一段非业务代码,获得该信息
    (5)尝试删除缓存操作,发现删除失败
    (6)将这些信息发送至消息队列
    (7)重新从消息队列中获得该数据,重试操作。
    上述的订阅binlog程序在mysql中有现成的中间件叫canal。

    展开全文
  • 基于数据复制的高可靠解决方案

    千次阅读 2007-06-28 15:27:00
    一、概述由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。随着DM的发布,达梦数据库也提供了全新的数据复制功能。这种新功能是随着客户要求的高可靠、高性能以及数据集中的需求而出现的...

    一、概述

    由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。随着DM的发布,达梦数据库也提供了全新的数据复制功能。这种新功能是随着客户要求的高可靠性、高性能以及数据集中的需求而出现的。对于数据库来说,高可靠性是指数据库管理系统能够7*24小时不间断地为各种应用提供数据服务,高性能是指高事务吞吐量和低响应时间,数据集中和分发则是指能够将地理上分布的各数据库中的数据汇集到数据中心以及将数据中心的数据分发给地理上分布的各个数据库。

    DM的数据复制功能可以有效地提升达梦数据库的可靠性,它依赖于分布式数据库技术,但同时可以提供分布式数据库所不具备的一些功能特性,由于在存取数据时有可选的数据副本,因此可以改进系统的性能和保护应用的可用性。通过使用DM数据库的复制技术可以实现集中和自治相结合的控制机制,可大大提高整个分布式数据库系统的可靠性和响应速度。达梦数据库的数据复制功能可以广泛应用于如下领域:

    ●  数据容灾。由于数据库中积累了大量的关键数据,特别是对一些关键应用,必须让数据库系统能够持续工作。目前业界提供了丰富的数据复制技术的硬件和软件实现,可以有效解决业务连续性的问题,具备高度的抗灾能力。

    ●  负载均衡。通过数据复制的数据分发功能,可以在某些应用程序中起到负载均衡的功能。如在某个应用中对一个表有大量的查询操作,通过数据复制将该表的数据分发到多个节点,可以让其他节点承担部分负载,提高系统的性能。

    ●  维护数据仓库。这是目前复制功能最常见的用法之一。数据仓库与生产数据是分离的,这使得它们适合特定查询,而不会影响生产应用的性能。

    ●  数据的分布与集中。为了实现数据容灾、负载均衡、维护数据仓库等功能,达梦数据库的数据复制实现了单主多从、多主多从以及对称复制等多种数据分布和集中的方式,为应用提供了极大的便利。

    二、主要技术

    数据复制就是将处于一个分布式环境中的数据库里面的数据拷贝到该环境中另一个不同的数据库中的过程。数据复制不仅可以提高系统的可靠性,还可以提升性能,并进行数据集中。根据不同的数据复制划分方法,DM不仅支持同步/异步数据复制方式,还支持同构/异构数据库之间的数据复制,支持多种数据复制模型,并内置可选的数据冲突解决方案,另外,DM还提供了功能强大的复制监测和管理工具,提供了高度可用的数据复制解决方案。

    1、基本概念和原理

    在分布式计算环境中需要考虑的主要问题之一就是对于不同的应用需求是采用实时存取远程数据还是采用延迟存取远程数据。这对于数据复制来讲就是采取同步数据复制方案还是异步数据复制方案。对于实际的商业问题,必须权衡这两种技术的利弊最终选择最佳的解决方案,有些问题选用同步技术比较适合,也有一些问题采用异步技术是比较好的解决方案,还有一些问题必须综合这两种技术。

     

    同步数据复制

    同步数据复制指通过将本地生产环境中的数据以完全同步的方式复制到异地,每一个本地交易均需等待远程复制结束才算完成。在同步数据复制中,复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。



    1 数据复制原理

    1是一个典型的3层结构的应用,在不启用同步复制功能时,系统处理用户请求的过程为①->->->④。①表示用户向WEB服务器发出请求;②表示WEB服务器分析用户请求后,由应用服务器执行应用逻辑,并向数据库服务器发出请求;③表示数据库处理数据请求,然后将处理的结果返回给应用服务器;④表示应用服务器接收到数据库服务器处理结果后,转交给WEB服务器,由WEB服务器对相关数据进行封装,并转发给最终用户。如果启用了同步复制功能,则系统的执行流程变成了①->->->->->④,其中⑤表示在主数据库写完事务日志后,将需要复制的相关数据的请求发给从数据库,⑥表示从数据库处理完毕复制任务后,通知主数据库复制成功或者失败,如果复制成功,主数据库向客户端返回事务成功的消息和相关数据,如果复制失败,则整个事务被回滚,主数据库通知客户端事务执行失败。

    从上面的流程我们可以看到,当采用同步复制方案的表发生变化时,达梦数据库会确保这种变化能够成功地作用在本地表和从数据库中的复制表,如果任何一个数据库执行失败,则整个事务会被成功回滚。同步复制具有实时性特点,可以保证数据的完整性和一致性,灾难发生时远端数据与本地数据完全同步。但这种方式会受到数据传输距离的限制,并且受网络带宽影响较大,如果系统存在网络存取速度很慢这样的问题,响应时间就会很慢。同步复制在网络的稳定性比较高的情况下是可行的,可以保证复制节点之间的复制数据一直保持同步。

     

    异步数据复制

    异步数据复制则是指将本地生产环境中的数据定期复制到异地,每一本地交易无需等待远程复制的结束就可以完成。因此异步数据复制环境下所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将经过一定的时间间隔并在不同的事务中被传播和应用到其他所有复制节点。

    如图1所示,对于异步复制,系统处理用户请求的过程仍然为->->->④,其中的③与没有启用数据复制功能时略有差别。当启用异步复制时,在步骤③中还会写逻辑日志,供异步复制的代理程序定期读取。另外,异步复制代理程序还会定期执行⑤->⑥两个步骤。对于异步复制来说,⑤用于读取主数据库中的逻辑日志,将其转化为数据更新操作,发送给从数据库,⑥则是从数据库通知主数据库异步复制任务处理完毕,等待主数据库继续发送异步数据复制请求。

    异步复制特征是源数据与目标数据之间并不是在任何时刻都保持完全一致,它们之间有一个延时。主数据库的变化,不是立刻反应到从数据库中,而是把产生变化的事务写入一个专门的逻辑日志中。当这些事务累计到设定值时,由复制代理程序把事务发送给从服务器。从服务器再执行这些事务来保持源数据与拷贝数据的一致。当因网络或其他问题使复制不能完成时,源数据的变化会一直保存在主数据库中直到问题解决再自动把所有保存的事务送出,并且复制两端的数据仍保持一致。

    异步复制不影响本地交易,传输距离长,对网络环境要求低,具有很高的可用性和很短的响应时间,但异地数据比本地数据略有延迟。

     

    除此之外,依据是否支持不同数据库之间进行数据复制,又可以划分为同构数据复制和异构数据复制。

     

    同构数据复制

        同构数据复制指采用达梦数据库的专有接口,进行达梦数据库之间的数据复制。同构数据复制也支持前面提到的同步复制和异步复制功能。当只进行达梦数据库之间的数据复制时,建议采用同构数据复制方案,因为相对异构数据复制来说,由于采用了专有接口,复制性能更高。

     

    异构数据复制

    在一个典型的大型分布式应用系统中,通常使用了多种数据库管理系统。在这种异构数据库环境中复制数据是用户的现实要求。达梦数据库增加了在异构数据库环境中复制数据的功能。

    JDBC是一种通用的数据库编程界面,它提供了访问关系型数据库的方法。通过使用JDBC,达梦数据库提供了在异构数据库环境中复制数据的高效解决方案。DM支持的异构数据库包括OracleDB2SQL Server等大型通用数据库管理系统和其他提供JDBC驱动程序的数据库,为异构数据库环境中复制数据提供了极大的便利。

    基于SQL的异构数据复制,数据库的更改可以被捕捉,并临时地存储在称作关系中间表(staging table的关系表中。然后,从目标系统上的一个客户接口可以读取这些关系中间表,并将它们应用于目标表。那些以非DM数据库作为源或目标的场景,SQL Replication 可能仍是目前的最佳选择。

        数据过滤

    达梦数据库的数据复制支持三种过滤数据的方法,即水平过滤、垂直过滤和水平垂直混合过滤。水平过滤就是包含了表中的一部分列,是列的子集。这时只有可以复制的列中的数据才会出现在从数据库中。垂直过滤就是包含了表中的一部分行,是行的子集。当使用垂直过滤时,只有这一部分行中的数据才可以传送到从数据库中。另外,还可以采取水平垂直混合过滤的方法,即通过选择表中的一部分列和一部分行,复制表中的一部分数据。

    2、数据复制模型

    数据复制模型就是数据复制设计的物理实现,一般有三种基本的复制模型,包括单主复制、多主复制以及对称复制。

      1.单主复制

    单主复制就是指把一个服务器定义为主服务器,把一个或者多个服务器定义为从服务器,由主服务器上负责把被复制的数据复制给各从服务器,其结构如图2所示。这种复制模型是最基本的复制模型,也是常用的一种结构,适用于将企业的中心数据信息分散传输给各个分支机构等环境。

     

    2 单主复制模型

      2.多主复制

        多主复制就是指把多个服务器定义为主服务器,把一个或者多个服务器定义为从服务器,把多个主服务器上的数据复制给各从服务器,其结构如图3所示,适用于将分支机构的数据信息传输给企业的中心等环境,各主服务器拥有本地数据,而从节点也就是数据中心拥有全部数据。在这种结构中要注意,由于多个主服务器可以向同一个复制表中写数据,因此这些数据有可能被覆盖,可以考虑通过水平过滤这些数据或者是采用某种冲突解决策略来解决这种问题。



    3 多主复制模型

        3.对称复制

        对称复制就是指所有的节点既是主服务器,又同时是从服务器,起到双重的作用,如图4所示。该结构非常接近于分布式/集群数据处理环境。它允许所有节点对复制表都有更新操作的权利,任何一个节点上的复制表的更新都会被传播并被直接应用到其他所有主表。一个主节点出现问题,不会对其他主节点之间变化的传播造成影响。各节点之间变化的传播,既可以以基于事件的方式立即传播,也可以在某个特定的时间点,如在网络空闲时(如晚上)传播。在传播变化时,如果其中的一个远端系统没有准备好,传播变化就会保存在其本地队列中,等到系统准备好以后再执行。


    4 对称复制模型

    这些模型都是基本的复制模型,企业可以根据自己的实际情况混合使用这些物理模型,即可以把这三种复制模型组合起来。每一种基本的复制模型,都可以使用同步复制、异步复制甚至异构数据复制。根据所允许的数据延迟的程度和是否可以修改复制的数据,以及企业的组织结构,选择合适的复制类型和合适的物理复制模型,通过各种组合,可以满足企业经营的实际需要。

    3、复制的管理和监测

      DM复制管理器是DM提供的一个图形界面的复制管理工具,通过该工具可以配置、管理和检测整个的复制环境。使用DM的数据复制管理器可以执行许多任务,包括创建、修改和删除复制,查看到复制进程的各种状态、主/从服务器、复制对象等,可以配置和管理复制进程,解决在复制进程中产生的各种问题,并根据策略自动或手工快速地将应用进行切换,确保复制数据的正常进行。在创建一个新的复制时,可以指定复制的类型、异步/快照复制的调度要求、指定将要复制的表等。要注意的是,一个复制不能分散在多个数据库中,一个复制只能包括一个数据库中的数据,不能复制系统表,而且要复制的表中应该有主键。

    三、在应用中选择合适的数据复制方案

    在接下来的部分,将主要介绍如何在实际应用中充分利用数据复制功能来提高达梦数据库管理系统的可靠性、性能以及实现数据的分布与集中。

    对于每个不同的应用环境,都可以采用合适的数据复制方案来提高系统的可靠性。使用达梦数据库过程中可以采纳的典型数据复制方案包括基于存储设备的数据复制方案、基于文件系统的第三方通用数据复制方案以及达梦数据库提供的各种数据复制方案。对于企业而言,选择何种数据复制方案,主要取决于性能要求、业务关键程度(是否需要同步实时复制)以及费用,用户可以根据实际需要进行合理选择。

    1、基于存储设备的数据复制方案

    基于存储设备的数据复制,即指能存储系统的远程镜像,属于企业级存储系统功能,这种数据复制在存储系统内部实现,与主机无关。

    该方案的好处是:在主机上的资源占用很小,能在业务运行需要的情况下,保持I/O的响应,支持同步实时复制,能够保证事务的ACID特性。另外,该数据复制方案与应用无关,可以支持任何类型的软件系统,包括对达梦数据库的支持。

    该方案的主要问题是:首先,受通信链路的影响大,由于关系到每个I/O的响应时间,如果条件不好,带宽不够,则只能异步;其次,存储复制通常价格昂贵,需要许多专用硬件;另外,这种复制只能在同种阵列间进行,如果主节点存在坏块,会导致坏块的传播问题。

    2、基于文件系统的第三方通用数据复制方案

    许多第三方软件厂商(非数据库厂商)基于文件/目录进行复制,可把数据定期地、在线地复制到目的地的机器上。

    该方案的优点是:与应用(尤其数据库应用)结合较紧,具有配置灵活、价格低等特征,能够支持包括达梦数据库在内的各种软件。

    该方案的缺点是:主机上资源占用太大,复制的压力太大。一个大型系统,如果既要保证系统能正常运行,又要做大量的复制和备份工作,成本太高。而且任何一笔交易,要把它实时地发送到远程站点,都不能做到同步,只能做到异步,即定期地把累积数据成批发送。然而,对数据库应用来说,异步不能保证数据库的一致性,容易造成数据库瘫痪。

    目前,能够提供的第三方数据复制的产品有:EMC公司的SymmetrixSRDFCLARiiONMirrorViewIBM公司ESSPPRCHDSRemote CopyVeritas公司的ReplicatorSUN公司的Data Replicator等,这些软件都能够对达梦数据库提供良好的支持。

    3、达梦数据库提供的数据复制解决方案

    前面的两种解决方案虽然具有很好的通用性,但是都无法解决坏块的传播问题。达梦数据库提供的多种数据复制解决方案,不仅拥有其他数据复制解决方案的优点,还拥有其他解决方案所不能提供的功能,并且可以有效避免其他解决方案可能产生的问题。

    总体说来,达梦数据库提供的数据复制解决方案具有如下特点:

    DM的数据复制具有下列特点:

    l         极好的适应性:达梦数据库的数据复制功能可以用于当前流行的各种软、硬件平台,并且支持在异构数据库之间进行数据复制。

    l         满足事务的ACID特性:达梦数据库的所有复制功能都是基于事务进行的,因此可以报纸数据的原子性、一致性、隔离性和持久性。

    l         支持多种数据复制方式,包括同步/异步数据复制、同构/异构数据库之间的数据复制,可以实时或者定期将主服务器上的数据完全复制到从服务器上。

    l         支持多种数据复制模型:包括单主复制、多主复制和对称复制,在复制过程中,可以只复制变化了的数据,未改变的数据不必复制。

    l         支持异构数据库之间的数据复制:同构数据复制采用达梦专有接口,只支持达梦数据库之间的数据复制,而异构数据复制通过使用JDBC标准接口,为不同类型的数据库之间的数据复制也提供了高校的解决方案。

    l         高性价比:达梦的数据复制功能集成在达梦数据库中,不需要用户单独为数据复制功能支付费用,性价比明显优于其他同类产品/解决方案。

    l         高安全性:由于采用了加密机制,可以有效避免存放、传输过程中可能产生的数据安全问题,提高了系统的安全性。

    l         有效避免坏块传播:达梦数据库的数据复制全部都是基于事务的逻辑日志来进行,因此一个节点上的坏数据库块不会被复制传播到其他的节点,有效避免基于存储设备的数据复制和第三方基于文件系统的数据复制方案的坏块传播问题。

    l         完善的业务持续和灾难恢复方案:通过将达梦数据库的集群功能和数据复制相结合,达梦数据库提供了完善的业务持续和灾难恢复方案,包括诸如网络故障导致工作停工、集群主节点停机、集群双节点停机、数据库宕机等特定情况的解决方案,保证了企业关键任务交易数据的持续访问,提供了对业务持续性的高度支持。

    l         资源消耗非常少:达梦数据库的复制操作只针对数据的改变,并且是基于逻辑日志的,因此将对源数据库系统、源操作系统和网络的影响最小化。

    l         从数据库可以灵活配置:在创建数据复制的过程中,可以指定从数据库的冲突解决方法、是否允许修改等。通过配置使得接收数据的站点上可以自主地改变复制过的数据,还可以产生类似于生产系统的模拟环境,可以直接用于应用程序的测试、开发和部署,可以访问和进行生产系统的各种服务。

    l         提供了图形化的复制管理和监控工具:达梦数据库为数据复制提供了图形化复制管理工具,可以方便地创建、修改和删除复制,还提供了复制监测工具,可以监测复制活动,包括复制状态、主/从节点状态等,方便用户进行管理。

    由于达梦数据库提供了多种高可用的数据复制技术,可以将这些复制技术进行各种合理组合,形成各种解决方案。下面提供采用达梦数据库的数据复制功能的典型应用环境:

    1数据容灾

    由于数据库中往往积累了大量的数据,一旦数据文件出现问题,后果将不堪设想。虽然各数据库提供了备份的手段,但是往往与生产数据有较长的时间间隔,还是会导致数据的丢失,另外,基于存储设备/文件系统的数据复制方案又无法解决坏块的传播问题,因此,要提高数据库的可靠性,采取数据复制方案是一种有效、安全、可靠的手段。

    如果系统对实时性要求很高,网络环境也很稳定,带宽足够,并且系统的CPU、内存等资源还有部分空闲,则可以考虑采用同步复制的方法来提高系统的可靠性。因为同步复制具有实时性特点,可以保证数据库的ACID特性,系统出现故障时还能够保持远程数据与本地数据完全同步,不会出现数据的丢失,通过简单的切换(人工/自动)即可让系统继续正常运行。

    当系统的实时性要求不高,网络环境不是很好时,或者系统的CPU等资源已经基本耗尽,则可以考虑采用异步数据复制的方式来提高数据库的可靠性。通过对复制进行配置,可以设置异步复制定期进行。一般来说,可以选择在系统业务量最小的时候进行异步数据复制,这样可以对系统的性能影响降低到最小的程度。

    2)负载均衡

    在某些应用环境中,对某些表可能存在大量的查询操作。通过采用数据复制的方法,将该表的数据分发到多个节点,可以让其他节点承担部分查询任务,从而提高系统的性能。

    达梦数据库提供的2种集群方案均可以和数据复制有效地进行结合,提高系统的整体性能。达梦数据库的集群方案可以自动判断哪些数据在哪些节点上存在,并且根据各节点当前的负载大小,自动选择其中的一个节点进行数据处理。当然,用户也可以不采用集群功能,直接在应用系统中将对这些表的查询请求发送给其他节点,减轻主节点的负担,实现一定程度的负载均衡功能。

    3)维护数据仓库

       我们知道,在一个典型的分布式商业应用中经常需要把各地区的数据汇总到总部的数据仓库中,一方面可以作为一种备份方式,另一方面也方便总部进行决策分析。由于数据仓库通常是与生产数据相分离的,这使得它们适合做各种类型的查询,而不会影响生产应用的性能。

    达梦数据库的多种数据复制机制为维护数据仓库提供了极大的便利:首先,通过同步/异步数据复制,能够自动将数据汇总到数据仓库,避免手工进行数据汇总;其次,达梦数据库的异构数据复制功能可以将各种大型关系数据库管理系统中的数据复制到单一的数据库中,方便数据仓库的维护;最后,使用数据复制所提供的数据过滤功能,可以减少数据仓库中无用的数据,提高基于数据仓库进行决策分析的效率。

    4数据的分布与集中

    在一个典型的含有地市、省、部等多级数据中心的应用中,各地市数据库负责处理各自的生产数据,而各省则需要将各地市的生产数据定期汇总,同时还要将部分公共数据分发给下属各地市,以提高地市处理系统性能;同样,各省的数据也要定期或者实时汇总到部级数据中心,以供决策分析所用,同时,部级数据中心也需要将部分公共数据分发给省级数据中心,以提高省一级应用的性能。这些数据分发与集中的需求极大地促进了数据库的数据复制功能的实现和完善。

    前面提到的数据容灾、负载均衡、维护数据仓库等应用情形也都需要进行数据的分发/汇总操作。通过将数据分发给多个节点,可以实现数据容灾、负载均衡,通过将数据汇总到数据仓库,可以为决策支持提供数据来源。可以说,正是数据复制提供的数据分布和集中的功能,使得数据复制技术得到了广泛的应用。


    展开全文
  • Zara不可复制的核心竞争力是怎么打造的?第一步、联网全球零售终端联网,实时知道全球各品种最终销量。但一般强势品牌才能让零售渠道商这样做,或者只能自己直营店这么搞。第二步、以销定产有了全球联网,就根据实时...
    Zara不可复制的核心竞争力是怎么打造的?
    




    第一步、联网


    全球零售终端联网,实时知道全球各品种最终销量。但一般强势品牌才能让零售渠道商这样做,或者只能自己直营店这么搞。




    第二步、以销定产
    有了全球联网,就根据实时销售,以销定产。


    小批量生产,防止刚刚生产阶段是火爆的,立刻流行一波就不火了,那就生产多了。


    即使火,也小批量生产,规避风险。看似亏了,但长久整体来看,是正确的。


    零售业,库存是魔鬼,周转是王道。


    从销售到物流到生产到原材料采购制造到产品设计,这周期很长,谁也防不住流行和消费者口味




    第三步、多山寨


    小批量必然要求多品种,否则品种又少数量又少,那终端就造反了就不跟着你干了。


    如何多品种?创意不是你想有就能有的。怎么办?山寨。


    N个设计师奔忙在各大服装节,做个小变形、混搭,本质是山寨,美其名曰是微创新,变变形就是一款,这就N多品种了。


    但小批量多品种必然成本高,怎么抵消?




    第四步、傍奢侈品


    近朱者赤。快速做起品牌最好的办法就是坐在奢侈品旁边。租金是天价的贵,但权当是品牌营销建设费。有了品牌,上挟供应商下挟终端商,在定价权、促销权、管理权、账期权上都好办了。控制上下游是关键。


    而且Zara售价较奢侈品价格低一些,所以再配合以限量小批量、多品种、永不重复生产,性价比立马合适了。


    而且Zara服装的质量并不高,本质是奢侈品中的班尼路。质量不高意味着成本低。反正时尚是快消品一时流行,所以快、花样多、一波波制造时尚推新,质量要那么好也没有用,消费者穿的也就是个新鲜和流行,又不当正装穿。


    成本低,售价高,这就抵消了小批量多品种的成本、抵消了租金成本、抵消了快速周转的成本。




    总结:

    因为Zara不管做什么,战略始终抓住一条零售业千百年不变的核心:库存是魔鬼,周转是王道。

    Zara为了周转快,甚至不惜让上游围绕在它周围200公里内、用真空管道传输、用飞机跨洲运输。但这一切当然是很昂贵的,不过Zara的傍大款和周转快,已经把损失拢回来了。

    所以Zara的战略战术都是互相支撑的,缺一不可的。这就是不可复制的核心竞争力了,你学哪项都成不了,必须全部复制,对于一家公司那就是推翻革命了。所以大部分公司都成不了Zara。

    希望Zara案例让其他零售业警醒。尤其中国服装业。
    展开全文
  • 学习《可复制的领导力》有感

    万次阅读 2018-07-23 16:47:27
    近期重新回顾了樊登的《可复制的领导力》,总结分享给大家。 首先,明确一下领导力的概念。领导力是一系列的工具,是可以学习的。 员工的执行力等于领导的领导力 在日本企业,领导给员工交代工作任务,一般需要...
  • Wordpress 网站的复制和迁移

    万次阅读 2019-02-28 01:09:47
    无论是在两个不同的远程Web服务器之间,还是在开发服务器和产品服务器之间,还是从产品服务器到本地,都可能需要进行迁移。 本文介绍用wordpress 的插件完成这个复杂的工作。本文介绍的插件是All-in-One WP ...
  • MySQL 数据库主从复制架构

    千次阅读 多人点赞 2016-01-12 18:53:27
    前文《MySQL 数据库事务与复制》分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致,本文进一步分析引入从库后需要保证主从的数据一致需要考虑哪些方面。原生复制架构 MySQL 的原生复制架构原理如上...
  • MySQL 数据库双向同步复制

    万次阅读 2015-12-22 20:38:18
    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约。问题和制约数据库的双主双写并双向同步场景,主要考虑数据完整、一致和避免冲突。对于同一个库,同一张表,同一个记录中的同一字段的...
  • 定义访问权限集是一项分配至责任层的选的安全功能,是对Oracle 11i应用产品弹性域安全定义的功能扩展,对总帐管理模块的一些内容进行安全定义和权限分配的集合,以控制不同的责任对一些内容的访问权限,如成批...
  • Teradata数据库复制

    千次阅读 多人点赞 2013-01-28 11:27:26
    在Teradata数据库中如何复制一张表? Teradata数据库提供了一些便于使用的命令和方法来复制表 – 包括DDL(表结构)和DML(数据)。 在TERADATA中复制表的示例 本示例的目的是把两张表从测试环境中迁移到产品中。...
  • 《EffectiveMySQL之深入解析复制技术》由OracleACEDirector、资深MySQL专家RonaldBradford和ChrisSchneider共同撰写,介绍了在使用MySQL数据复制技术构建具有扩展解决方案的过程中需要了解和实现的技术。...
  • 美团酒店直连产品数据一致演进

    千次阅读 2016-12-26 16:27:00
    为了使数据一致完善方案更直观易懂,这里引用美团酒店直连项目中直连平台与供应商酒店产品数据一致方案作为分析案例,通过 面临问题 、 总体思路 、 解决方案 和 总结思考 四个方面进行论述。 面临问题 酒店...
  • hibernate之复制对象

    千次阅读 2010-10-02 19:07:00
    hibernate之复制对象
  • SQL Server复制入门

    千次阅读 2013-04-02 22:24:23
     SQL Server中的复制(Replication)是SQL Server高可用的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致。使用复制功能不仅仅需要你对...
  • TRIZ系列-创新原理-26-复制原理

    千次阅读 2014-10-24 13:42:58
     这样可以降低成本,提高操作。2)如果已经使用了可见光的复制品,那么使用红外光或者紫外光的复制品; 红外和紫外光有自己比较独特的特性,可以增加人类的视觉范围。3)用光学图像替代物体(或物体系统),...
  • 以下是腾讯云上的产品介绍: Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 构建的高可用、伸缩的云端托管 Elasticsearch 服务。Elasticsearch 是一款分布式的基于 RESTful API 的搜索分析引擎,...
  • 产品经理的私房菜 - 腾讯产品能力模型(序章)

    万次阅读 多人点赞 2021-04-16 18:41:49
    产品经理的私房菜 - 腾讯产品能力模型(序章) ❝ 编辑导语:为了解决”产品经理“职业成长中,不自信的问题。本系列就围绕”腾讯产品的能力模型“,一起从头梳理,每一个能力项的提升思路。希望大家从梳理过程中,...
  • 本文演示如何搭建最基本的事务复制。环境准备:虚拟机2台:服务器名分别为RepA和RepB,RepA为发布服务器,RepB为订阅服务器。均安装WindowsServer 2008R2英文版(在外企工作的原因)。并确保两台服务器能互访。SQL ...
  • 谈容灾,谈灾备,我们总是不避免的要提到复制技术。因为复制技术具有备份所不具备的切换优势(详见备份和复制的区别),能够得到更好的恢复点目标(PRO)和恢复时间目标(RTO),所以成为较高层次容灾方案设计中非常...
  • 可以把两个以上的号码通过设备解码来把两个以上的手机号复制一张特制的SIM卡,并且原来的两张SIM卡仍使用。可以在手机上实现不用更换SIM卡就实现多个号码的快速切换,省去更换SIM卡的麻烦操作。 适合族群: ...
  • MySQL数据库主从复制与读写分离

    万次阅读 2020-09-14 19:50:57
    在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全、高可用还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说都是通过主从复制(Master-Slave)来同步数据,...
  • 移动端长按文字复制功能

    万次阅读 2018-03-01 11:09:06
    微信上要实现一个点击复制兑换码的功能,上网找了很久,找到了zero clipboard插件只能在PC端用,手机端并没有比较好的解决方案,无奈苦逼找产品商量,改为长按复制。 解决方案 微信默认就是支持文本长按选择,所以...
  • 除了与社会扩展作比较以外,这些工程扩展考虑并不是本文的主题。 社会扩展是指认知局限和思维差异导致的行为倾向,并不是指机器的物理资源限制,这点很重要,而事实上更重要的是思考和讨论有助于制度发展...
  • php安装完成以后要复制php.ini文件

    万次阅读 2011-11-22 17:38:45
    直接#find / -name "php.ini"找不到,是因为安装php的时候没有复制配置文件php版本变化以后ini文件名有变php.ini-production对应于php.ini-recommendedphp.ini-development对应于php.ini-dist 二者差异?...
  • Oracle 10g高级复制实例(多主体复制) 现在主流的数据库产品都实现了数据库中数据的复制,有的产品还做到了数据库对象的复制(例如视图和索引)。今天主要是与大家分享在Oracle平台下的数据复制功能。 多主体复制,...
  • 好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。最近基本想清楚了,「后端分布式」包括「分布式...带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考
  • h5页面长按复制

    千次阅读 2019-02-27 15:21:03
    user-select是css3新增的一个属性,用来指定文本的选择.目前主流的浏览器都支持该属性,但是要加上各自的前缀。 -webkit-user-select:none;/*Chromeall/Safariall/opera15+*/ -moz-user-select:none;/*Fi...
  • 介绍几种容灾复制技术

    千次阅读 2016-11-11 11:11:58
     数据复制有多种分类方法,依据复制启动点的不同,分为同步复制、异步复制。同步复制,数据复制是在向主机返回写请求确认信号之前实时进行的;对于异步复制,数据复制是在向主机返回写请求确认信号之后实时进行的...
  • 手机端长按文字复制功能

    万次阅读 2016-06-28 17:18:43
    自我检讨遇到的问题微信上要实现一个点击复制兑换码的功能,上网找了很久,找到了zero clipboard插件只能在PC端用,手机端并没有比较好的解决方案,无奈苦逼找产品商量,改为长按复制。解决方案微信默认就是支持文本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 211,183
精华内容 84,473
关键字:

产品可复制性