精华内容
下载资源
问答
  • 诶?这项技术又是什么玩意(What)?...大概已经有同学觉得这些问题很熟悉了,是的,这就是黄金全法则提出的三个问题,对于每种新鲜事物我们首先基于这三个问题去了解,更有利于清楚事情的本质,端正态度...

    诶?这项技术又是什么玩意(What)?

    这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)?

    如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的系统得到很乐观的优化,那么我们怎么用呢(How)?

    大概已经有同学觉得这些问题很熟悉了,是的,这就是黄金全法则提出的三个问题,对于每种新鲜事物我们首先基于这三个问题去了解,更有利于弄清楚事情的本质,端正态度去了解,而不是因为新,因为大家都说好,才要去了解……。说了那么多前奏,我们可以开始了,今天我们就带着黄金圈法则提出的三个问题去看看MySQL数据库复制这项领域技术,然后再结合实际应用扩展一些问题,本文也仅仅是结合自己了解的皮毛以抛砖引玉的态度和大家一起分享。

    WHAT?

    MySQL复制使得一台MySQL数据库服务器的数据被拷贝到其他一台或者多台数据库服务器,前者通常被叫做Master,后者通常被叫做Slave。

    MySQL复制示意图

    复制的结果是集群(Cluster)中的所有数据库服务器得到的数据理论上都是一样的,都是同一份数据,只是有多个copy。MySQL默认内建的复制策略是异步的,基于不同的配置,Slave不一定要一直和Master保持连接不断的复制或等待复制,我们指定复制所有的数据库,一部分数据库,甚至是某个数据库的某部分的表。

    MySQL复制支持多种不同的复制策略,包括同步、半同步、异步和延迟策略等。

    同步策略:Master要等待所有Slave应答之后才会提交(MySql对DB操作的提交通常是先对操作事件进行二进制日志文件写入然后再进行提交)。

    半同步策略:Master等待至少一个Slave应答就可以提交。

    异步策略:Master不需要等待Slave应答就可以提交。

    延迟策略:Slave要至少落后Master指定的时间。

    MySQL复制同时支持多种不同的复制模式:

    基于语句的复制,Statement Based Replication(SBR)。

    基于行的复制Row Based Replication(RBR)。

    混合复制(Mixed)。

    WHY?

    这个问题其实也就是MySQL复制有什么好处,我们可以将复制的好处归结于下面几类:

    性能方面:MySQL复制是一种Scale-out方案,也即“水平扩展”,将原来的单点负载扩散到多台Slave机器中去,从而提高总体的服务性能。在这种方式下,所有的写操作,当然包括UPDATE操作,都要发生在Master服务器上。读操作发生在一台或者多台Slave机器上。这种模型可以在一定程度上提高总体的服务性能,Master服务器专注于写和更新操作,Slave服务器专注于读操作,我们同时可以通过增加Slave服务器的数量来提高读服务的性能。

    防腐化:由于数据被复制到了Slave,Slave可以暂停复制进程,进行数据备份,因此可以防止数据腐化。

    故障恢复:同时多台Slave如果有一台Slave挂掉之后我们还可以从其他Slave读取,如果配置了主从切换的话,当Master挂掉之后我们还可以选择一台Slave作为Master继续提供写服务,这大大增加了应用的可靠性。

    数据分析:实时数据可以存储在Master,而数据分析可以从Slave读取,这样不会影响Master的性能。

    HOW?

    这里我们只介绍一下MySQL的复制是如何工作的,至于配置,网上也有很多相关的介绍,读者具体应用的时候可以再去查阅。我们拿最常用的基于二进制文件的复制来看看。

    MySQL复制工作示意图

    请点击输入图片描述

    请点击输入图片描述

    MySQL的复制过程大概如下:

    首先,主库在每次准备提交事务完成数据更新操作之前都会将数据更改操作记录到二进制日志中,这些日志是以二进制的方式记录数据更改的事件。值得一提的是二进制日志中记录的顺序实际上是事务的提交顺序,而非SQL执行语句的顺序。在记录二进制日志之后,主库会告诉存储引擎事务可以提交了。

    然后,备库会启动一个IO线程,之所以叫做IO线程是因为这个线程专门做IO相关的工作,包括和主库建立连接,然后在主库上启动一个特殊的二进制转储线程,这个转储线程会不断的读取二进制日志中的事件,发送给备库的IO线程,备库的IO线程会将事件记录到中继日志中。

    备库会有一个叫做SQL的线程被开启,这个线程做的事情是读取中继日志中的DB操作事件在备库执行,从而实现数据更新。

    总的来说,在发生复制的主库服务器和备库服务器中,一共有三个线程在工作。

    上面我们已经大概了解的什么是复制?为什么要复制?如何复制?这三个问题了,接下来我们基于上面的介绍,提出一些实际应用可能会发生的问题来思考如何解决。博主自问自答的方式-。-

    问答环节

    问题一:通过复制模型虽然读能力可以通过扩展slave机器来达到提高,而写能力却不能,如果写达到瓶颈我们应该怎么做呢?

    答:我们首先会得出结论,这种复制模型对于写少读多型应用是非常有优势的,其次,当遇到这种问题的时候我们可以对数据库进行分库操作,所谓分库,就是将业务相关性比较大的表放在同一个数据库中,例如之前数据库有A,B,C,D四张表,A表和B表关系比较大,而C表和D表关系比较大,这样我们把C表和D表分离出去成为一个单独的数据库,通过这种方式,我们可以将原有的单点写变成双点写或多点些,从而降低原有主库的写负载。

    问题二:因为复制是有延迟的,肯定会发生主库写了,但是从库还没有读到的情况,遇到这种问题怎么办?

    答:MySQL支持不同的复制策略,基于不同的复制策略达到的效果也是不一样的,如果是异步复制,MySQL不能保证从库立马能够读到主库实时写入的数据,这个时候我们要权衡选择不同复制策略的利弊来进行取舍。所谓利弊,就是我们是否对从库的读有那么高的实时性要求,如果真的有,我们可以考虑使用同步复制策略,但是这种策略相比于异步复制策略会大大降低主库的响应时间和性能。我们是否可以在应用的设计层面去避开这个问题?

    问题三:复制的不同模式有什么优缺点?我们如何选择?

    答:基于语句的复制实际上是把主库上执行的SQL在从库上重新执行一遍,这么做的好处是实现起来简单,当前也有缺点,比如我们SQL里面使用了NOW(),当同一条SQL在从库中执行的时候显然和在主库中执行的结果是不一样的,注入此类问题可以类推。其次问题就是这种复制必须是串行的,为了保证串行执行,就需要更多的锁。

    基于行的复制的时候二进制日志中记录的实际上是数据本身,这样从库可以得到正确的数据,这种方式缺点很明显,数据必须要存储在二进制日志文件中,这无疑增加的二进制日志文件的大小,同时增加的IO线程的负载和网络带宽消耗。而相比于基于语句的复制还有一个优点就是基于行的复制无需重放查询,省去了很多性能消耗。

    无论哪种复制模式都不是完美的,日志如何选择,这个问题可以在理解他们的优缺点之后进行权衡。

    问题四:复制的工作过程只有三个线程来完成,对于Master来说,写是并发的,也就出现了一个IO线程要把所有并发的数据变更事件记录,这个IO线程会不会累死?当一个Master对应多个Slave的时候,其实在Master中会唤起多个IO线程,这无疑会增加Master的资源开销,如果出现事件堆积,也就是事件太多,来不及及时发送出去怎么办?另外就是Slave那边的IO线程和SQL线程也会有对应主库并发数据变更事件,而Slave方单个线程处理的问题,这个时候Slave线程会不会累死?

    答:上面的问题确实会发生,上面第一个问题和第二个问题其实是写负载的问题,当事件堆积太多,从库时延就会变大,Slave单SQL线程问题据说有参数可以开启并行操作,这个大家可以确认一下。

    问题五:针对复制工作过程可能会出现的问题,主库写完二进制日志文件同时都会保存二进制日志的偏移量,但是当断电的时候,二进制日志文件没有刷新到磁盘,主库重新启动之后,从库尝试读该偏移量的二进制日志,会出现读不到的情况,这个问题应该怎么解决?

    答:首先如果开启了sync_binlog选项,对于innodb同时设置innodb_flush_log_at_trx_commot=1,则可以保证二进制日志文件会被写入磁盘,但MyISAM引擎可能会导致数据损坏。如果没有开启这个选项,则可以通过制定从库的二进制偏移量为下一个二进制日志文件的开头,但是不能解决事件丢失问题。

    问题六:从库在非计划的关闭或重启时,回去读master.info文件去找上次停止复制的位置,这同样会有一个问题,如果master.info不正确,就会导致复制数据不一致的情况,遇到这个问题怎么办?

    答:这个问题可以通过两种方式解决,一是控制master.info在从库非计划关闭或重启的时候让master.info能够同步到磁盘,这样下次启动的时候就不会读取错误的信息,这有助于减少错误的发生概率。另外想要找到正确的复制位置是困难的,我们也可以选择忽略错误。

    725bcac532d0d3c7b2b826ba306623b6.png

    请点击输入图片描述

    请点击输入图片描述

    展开全文
  • 由于wubildr.mbr不知道是怎么定位wubildr的,还得把wubildr复制到c:\下,真是没辙啊。 假设ubuntu复制在d:\下 win7启动项的添加 xp下改boot.ini即可添加启动项,比较好,win7就比较费劲点了。 cd D:\ ...

    复制wubi安装好的ubuntu

    别人或自己安装好的ubuntu,可以复制过来,直接复制ubuntu目录。由于wubildr.mbr不知道是怎么定位wubildr的,还得把wubildr复制到c:\下,真是没辙啊。

    假设ubuntu复制在d:\下


    win7启动项的添加

    xp下改boot.ini即可添加启动项,比较好弄,win7就比较费劲点了。

    cd D:\
    md bcd-bak
    
    #back up the bcd config
    

    bcdedit /export D:\bcd-bak\bcd.bak

    #create a new item

    bcdedit /create /d "Ubuntu" /application bootsector

    #The entry {8ec329af-66d3-11e1-9457-90e1212140a4} was successfully created.

    #{8ec329af-66d3-11e1-9457-90e1212140a4} is the id, remember it.

    bcdedit /set {8ec329af-66d3-11e1-9457-90e1212140a4} device partition=D:




    修改ubuntu的grub启动项



    虚拟硬盘的添加


    展开全文
  • 川川之前装这个真是搞了好久,怎么都没装上,琢磨好久才清楚,真的是,害!! ...cdvmware-tools-distrib目录下(下面是我的安装目录):具体根据自己定,我是复制粘贴了Downloads目录下 第

    川川之前装这个真是搞了好久,怎么都没装上,琢磨好久才弄清楚,真的是,害!!
    下面说步骤:

    第一步:点击安装(我已经安装过了,所以显示是重新安装)
    在这里插入图片描述
    第二步:打开压缩包,找到.tar这个文件,复制粘贴到新的文件夹(不然会失败,必须要在新的文件夹去解压)
    copy:
    在这里插入图片描述
    paste:
    在这里插入图片描述
    extract here(解压在这里的意思):就得到旁边那个文件夹
    在这里插入图片描述
    第三步:进入安装目录
    cd到vmware-tools-distrib目录下(下面是我的安装目录):具体根据自己定,我是复制粘贴到了Downloads目录下
    在这里插入图片描述
    第四步:授权
    命令:sudo su,然后输入密码
    在这里插入图片描述
    最后在输入命令:./vmware-install.pl
    在这里插入图片描述
    后面就一直确定,选择路径就行了,如下图就成功了,界面就自动变大跟电脑屏幕适应,并没有像网上说那样还要重新开启虚拟机
    在这里插入图片描述

    展开全文
  • 一开始安装了ubuntu,结果居然没有中文输入法,对我这样的菜鸟级人物,了半天也不知道怎么安装,于是作罢。改装FCFC的硬盘安装还是比较容易地,...解压该文件内isolinux/initrd.img和vmlinuz复制到C盘的根目录下3....
    一开始安装了ubuntu,结果居然没有中文输入法,对我这样的菜鸟级人物,弄了半天也不知道怎么安装,于是作罢。改装FC

    FC的硬盘安装还是比较容易地,主要参考了一片文章,很顺利

    1.下载Fedora10官方发布的镜像文件Fedora-12-i386-DVD.iso, size大概3
    GB,放到fat32盘根目录下

    2.解压该文件内isolinux/initrd.img和vmlinuz复制到C盘的根目录下

    3.下载一个GRUB4DOS压缩包,解压grldr与menu.lst放到C盘根目录下,修改menu.lst

    修改menu.lst,在menu.lst最后加上

    title Install Fedora
    kernel (hd0,0)/vmlinuz
    initrd (hd0,0)/initrd.img

    4.修改c:\boot.ini

    在最后面加上

    c:\grldr=GRUB

    5.重启选择GRUB,再选择Install Fedora 就进入安装界面了

    6.安装时有一部需要选择安装文件路径,这里可能需要挨个试一下哪个是Fedora-12-i386-DVD.iso所在的盘符,镜像文件所在的路径为/

    按装完后,发现很多东东跟windows比是不大好用,主要有
    - 浏览文件夹的ui太难用了,跟windows的资源管理器比差多了
    - 系统时间怎么不对阿,好像是时区问题?还没弄好

    - 居然播放不了mp3文件。。。说是需要gstreamer插件。郁闷,下载了个http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.30.tar.gz,./configure, make, make install之后似乎还没好。。

     

    -安装后的grub配置文件在 /boot/grub/menu.1st

     

    ExpandedBlockStart.gif代码
    # grub.conf generated by anaconda
    #
    #
     Note that you do not have to rerun grub after making changes to this file
    #
     NOTICE:  You do not have a /boot partition.  This means that
    #
              all kernel and initrd paths are relative to /, eg.
    #
              root (hd0,6)
    #
              kernel /boot/vmlinuz-version ro root=/dev/sda7
    #
              initrd /boot/initrd-[generic-]version.img
    #
    boot=/dev/sda
    default=1
    timeout
    =5
    splashimage
    =(hd0,6)/boot/grub/splash.xpm.gz
    hiddenmenu
    title Fedora (
    2.6.31.5-127.fc12.i686.PAE)
        root (hd0,
    6)
        kernel 
    /boot/vmlinuz-2.6.31.5-127.fc12.i686.PAE ro root=UUID=9c0f2abb-0f94-4e1a-b154-cf3dd1c28ef8  LANG=zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd 
    /boot/initramfs-2.6.31.5-127.fc12.i686.PAE.img
    title Other
        rootnoverify (hd0,0)
        chainloader 
    +1


    安装后系统情况

     

    cutepig@cutepig-laptop:~$ sudo fdisk -l
    [sudo] password for cutepig:

    Disk /dev/sda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xf0b1ebb0

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1        2550    20482843+   7  HPFS/NTFS
    /dev/sda2            2551        5100    20482875    7  HPFS/NTFS
    /dev/sda3            5101        7522    19454715    5  Extended
    /dev/sda4            7523        9729    17727724    c  W95 FAT32 (LBA)
    Partition 4 does not end on cylinder boundary.
    /dev/sda5            5101        7157    16522821   83  Linux
    /dev/sda6            7158        7522     2931831   82  Linux swap / Solaris

     

    cutepig@cutepig-laptop:~$ sudo mount -l
    /dev/sda5 on / type ext4 (rw,errors=remount-ro)
    proc on /proc type proc (rw)
    none on /sys type sysfs (rw,noexec,nosuid,nodev)
    none on /sys/fs/fuse/connections type fusectl (rw)
    none on /sys/kernel/debug type debugfs (rw)
    none on /sys/kernel/security type securityfs (rw)
    udev on /dev type tmpfs (rw,mode=0755)
    none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
    none on /dev/shm type tmpfs (rw,nosuid,nodev)
    none on /var/run type tmpfs (rw,nosuid,mode=0755)
    none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
    none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
    binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
    gvfs-fuse-daemon on /home/cutepig/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=cutepig)
    /dev/sda1 on /media/c type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096) [c]
    /dev/sda2 on /media/d type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096) [d]
    /dev/sda4 on /media/F type vfat (rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush) [F]

    转载于:https://www.cnblogs.com/cutepig/archive/2010/07/31/1789338.html

    展开全文
  •  这几天对djfocus在各种os上是否能够取得特征码而进行了一系列的测试,为了以后便于查阅,把安装步骤copy下来:当时秋哥给的...  将下载的jdk-6u11-linux-i586.bin复制到/opt目录,然后更改权限,打开终端
  • 小弟是个新人,接手一个现有系统的维护,因想套测试环境想把正在使用的mysql数据库在另一台机器上复制一个,倒腾半天无法成功,求大神答惑。 背景:原服务器是windows2003系统,新服务器的系统相同。 1.首先在新...
  • 先说一下:把光盘上的GHOST(ISO文件)弄到U盘上,把U盘刷成USB-CDROM。还是调光盘启动。光盘装 GHOST系统的那个速度大概是300多每秒,U盘就1000以上了,我试过,GHOST一下不3分钟。拿我4G的U盘来说,700多MB是...
  • 在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘, 所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,...
  • 如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart  创建和删除硬盘...
  • 闲暇没事学习了一些php,结果今天连接库时怎么也连接不上,整整了一天总与找到一遍文章这才搞定:http://hi.baidu.com/shazi129/blog/item/e7aab644c8cd0c4a510ffeb1.html上网查询得:把php_mysql.dll复制到php的...
  • 闲暇没事学习了一些php,结果今天连接库时怎么也连接不上,整整了一天总与找到一遍文章这才搞定:...上网查询得:把php_mysql.dll复制到php的ext文件中,把libmysql.dll复制到c盘的windows下。回到找我的php安装目录
  • 如何保存QQ聊天记录

    千次阅读 2008-11-23 11:22:00
    1、直接保存文件夹(推荐)找到你的QQ安装目录,这个应该都没啥问题吧,然后可以看到在目录里有一个以你的QQ号命名的文件夹,对,就是它。在你想重装系统或重安装别的版本QQ前,把这个文件夹复制到一个安全的地方。...
  • Windows 下Eclipse运行HBase程序

    千次阅读 2017-06-01 15:53:19
    一个HBase实验昨天了一整天,实验不难,问题就是我不知道怎么在Windows下...例如,项目名称为HbaseDemo二、从虚拟机下复制HBase文件夹到本地,在项目目录下创建一个文件夹,命名为Conf,将从虚拟机复制到的Conf文件夹
  • 转载 Ubuntu3070装驱动

    2020-12-24 16:12:37
    脑残如我也是醉了),搞好所有这些环境前后了5天时间,前面的买显卡、装显卡和装双系统见另一篇博客装显卡、双系统,这篇主要记录我怎么配置后面的环境,虽然中间重装Ubuntu三次,后面安装过程也没差别。...
  • MATLABMYSQL爬虫-zhgd.m

    2019-08-12 22:04:44
     最近有朋友问我MATLAB怎么弄爬虫,下载的大量数据怎么实现归类,借此,我弄了一个MATLAB爬虫,然后将下载的数据存储MYSQL数据库的例子,在这里分享给大家。希望想做这方面的朋友,能对基本内容有所了解。 ...
  • CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 11g RMAN备份与恢复 基本信息 原书名: Oracle RMAN 11g Backup and Recovery 原出版社: ...
  • 和别人的计算机ping也通,但用IP地址查找也找不,他并没开防火墙之类的,这究竟是怎么回事?请各位指点迷津,等ing... ________________________________________ Windows网上邻居互访的基本条件: 1) 双方...
  • • 将每层的相关部分复制到目标系统 • 运行基于perl语言的config/clone脚本来重新配置环境或者每层的context文件。 Application,middle tier,database之间有着复杂的连接,常常某一个地方出了问题却在其他地方上...
  • 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。 6.Call 命令 从一个批处理程序调用...
  •  通常对于第一个问题,我是很少回答的,并不是不屑于回答,实在是没有办法回答,如果我回答说,“你怎么知道你的数据库需要优化?”又担心这种没有实际意义的回答带有说教意味,打击别人的积极性,所以通常看看而已...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

复制到安装目录怎么弄