随风笔记

15879069746

咨询热线

mysql备份还原(电脑有备份怎么还原系统)_1876人推荐

1、MySQL数据库中怎么备份和恢复?

MySQL支持的免费备份工具有:mysqldump、mysqlhotcopy1、mysqldump1.1备份mysqldump是采用SQL级别的备份机制,它将数据表导成SQL脚本文件,在不同的MySQL版本之间升级时相对比较合适,这也是最常用的备份方法。现在来讲一下mysqldump的一些主要参数:--compatible=name它告诉mysqldump,导出的数据将和哪种数据库或哪个旧版本的MySQL服务器相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。--complete-insert,-c导出的数据采用包含字段名的完整INSERT方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

因此,需要谨慎使用该参数,至少我不推荐。--default-character-set=charset指定导出数据时采用何种字符集,如果数据表不是采用默认的latin1字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。--disable-keys告诉mysqldump在INSERT语句的开头和结尾增加/*!40000ALTERTABLEtableDISABLEKEYS*/;和/*!40000ALTERTABLEtableENABLEKEYS*/;语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合MyISAM表。--extended-insert=true|false默认情况下,mysqldump开启--complete-insert模式,因此不想用它的的话,就使用本选项,设定它的值为false即可。--hex-blob使用十六进制格式导出二进制字符串字段。

如果有二进制数据就必须使用本选项。影响到的字段类型有BINARY、VARBINARY、BLOB。--lock-all-tables,-x在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction和--lock-tables选项。--lock-tables它和--lock-all-tables类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于MyISAM表,如果是Innodb表可以用--single-transaction选项。

--no-create-info,-t只导出数据,而不添加CREATETABLE语句。--no-data,-d不导出任何数据,只导出数据库表结构。--opt这只是一个快捷选项,等同于同时添加--add-drop-tables--add-locking--create-option--disable-keys--extended-insert--lock-tables--quick--set-charset选项。本选项能让mysqldump很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用--skip-opt禁用。

注意,如果运行mysqldump没有指定--quick或--opt选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。--quick,-q该选项在导出大表时很有用,它强制mysqldump从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。--routines,-R导出存储过程以及自定义函数。--single-transaction该选项在导出数据之前提交一个BEGINSQL语句,BEGIN不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如InnoDB和BDB。

本选项和--lock-tables选项是互斥的,因为LOCKTABLES会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick选项。--triggers同时导出触发器。该选项默认启用,用--skip-triggers禁用它。其他参数详情请参考手册,我通常使用以下SQL来备份MyISAM表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr\--default-character-set=utf8--opt--extended-insert=false\--triggers-R--hex-blob-xdb_name>db_name.sql使用以下SQL来备份Innodb表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr\--default-character-set=utf8--opt--extended-insert=false\--triggers-R--hex-blob--single-transactiondb_name>db_name.sql另外,如果想要实现在线备份,还可以使用--master-data参数来实现,如下:/usr/local/mysql/bin/mysqldump-uyejr-pyejr\--default-character-set=utf8--opt--master-data=1\--single-transaction--flush-logsdb_name>db_name.sql它只是在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入CHANGEMASTER语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,就可以采用这种方法来做。1.2还原用mysqldump备份出来的文件是一个可以直接倒入的SQL脚本,有两种方法可以将数据导入。

直接用mysql客户端例如:/usr/local/mysql/bin/mysql-uyejr-pyejrdb_name<db_name.sql用SOURCE语法其实这不是标准的SQL语法,而是mysql客户端提供的功能,例如:SOURCE/tmp/db_name.sql;这里需要指定文件的绝对路径,并且必须是mysqld运行用户(例如nobody)有权限读取的文件。2、mysqlhotcopy2.1备份mysqlhotcopy是一个PERL程序,最初由TimBunce编写。它使用LOCKTABLES、FLUSHTABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy只能用于备份MyISAM,并且只能运行在类Unix和NetWare系统上。

mysqlhotcopy支持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子:root#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=yejr-p=yejr\db_name/tmp(把数据库目录db_name拷贝到/tmp下)root#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=yejr-p=yejr\db_name_1...db_name_n/tmproot#/usr/local/mysql/bin/mysqlhotcopy-h=localhost-u=yejr-p=yejr\db_name./regex//tmp更详细的使用方法请查看手册,或者调用下面的命令来查看mysqlhotcopy的帮助:perldoc/usr/local/mysql/bin/mysqlhotcopy注意,想要使用mysqlhotcopy,必须要有SELECT、RELOAD(要执行FLUSHTABLES)权限,并且还必须要能够有读取datadir/db_name目录的权限。2.2还原mysqlhotcopy备份出来的是整个数据库目录,使用时可以直接拷贝到mysqld指定的datadir(在这里是/usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:root#cp-rfdb_name/usr/local/mysql/data/root#chown-Rnobody:nobody/usr/local/mysql/data/(将db_name目录的属主改成mysqld运行用户)。

2、mysql数据库备份和还原

MySQL数据库备份与还原备份和恢复数据生成SQL脚本在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。mysqldump–u用户名–p密码数据库名>生成的脚本文件路径现在可以在C盘下找到mydb1.sql文件了!注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!执行SQL脚本执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!SOURCEC:\mydb1.sql注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在createtablea的语句,而当前数据库中已经存在了a表,那么就会出错!还可以通过下面的方式来执行脚本文件:mysql-uroot-p123mydb1

1、mysqldump1.1备份mysqldump是采用sql级别的备份机制,它将数据表导成sql脚本文件,在不同的mysql版本之间升级时相对比较合适,这也是最常用的备份方法。现在来讲一下mysqldump的一些主要参数:?--compatible=name它告诉mysqldump,导出的数据将和哪种数据库或哪个旧版本的mysql服务器相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。?--complete-insert,-c导出的数据采用包含字段名的完整insert方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

因此,需要谨慎使用该参数,至少我不推荐。?--default-character-set=charset指定导出数据时采用何种字符集,如果数据表不是采用默认的latin1字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。?--disable-keys告诉mysqldump在insert语句mysql备份还原的开头和结尾增加/*!40000altertabletabledisablekeys*/;和/*!40000altertabletableenablekeys*/;语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合myisam表。?--extended-insert=true|false默认情况下,mysqldump开启--complete-insert模式,因此不想用它的的话,就使用本选项,设定它的值为false即可。?--hex-blob使用十六进制格式导出二进制字符串字段。

如果有二进制数据就必须使用本选项。影响到的字段类型有binary、varbinary、blob。?--lock-all-tables,-x在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction和--lock-tables选项。?--lock-tables它和--lock-all-tables类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。

本选项只适用于myisam表,如果是innodb表可以用--single-transaction选项。?--no-create-info,-t只导出数据,而不添加createtable语句。?--no-data,-d不导出任何数据,只导出数据库表结构。?--opt这只是一个快捷选项,等同于同时添加--add-drop-tables--add-locking--create-option--disable-keys--extended-insert--lock-tables--quick--set-charset选项。本选项能让mysqldump很快的导出数据,并且导出的数据能很快导回。

该选项默认开启,但可以用--skip-opt禁用。注意,如果运行mysqldump没有指定--quick或--opt选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。?--quick,-q该选项在导出大表时很有用,它强制mysqldump从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。?--routines,-r导出存储过程以及自定义函数。?--single-transaction该选项在导出数据之前提交一个beginsql语句,begin不会阻塞任何应用程序且能保证导出时数据库的一致性状态。

它只适用于事务表,例如innodb和bdb。本选项和--lock-tables选项是互斥的,还原数据库因为locktables会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick选项。?--triggers同时导出触发器。该选项默认启用,用--skip-triggers禁用它。其他参数详情请参考手册,我通常使用以下sql来备份myisam表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr--default-character-set=utf8--opt--extended-insert=false\--triggers-r--hex-blob-xdb_name>db_name.sql使用以下sql来备份innodb表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr--default-character-set=utf8--opt--extended-insert=false\--triggers-r--hex-blob--single-transactiondb_name>db_name.sql1.2还原用mysqldump备份出来的文件是一个可以直接倒入的sql脚本,有两种方法可以将数据导入。

?直接用mysql客户端例如:/usr/local/mysql/bin/mysql-uyejr-pyejrdb_namemysqldump--quickdb_name|gzip>db_name.contents.gz(该例子中创建的文件是压缩格式)。恢复/转移到另一台的命令如下:shell>gunzip

需要备份时,可以先执行一下sql语句,让mysqld终止对当前binlog的写入,就可以把文件直接备份,这样的话就能达到增量备份的目的了:flushlogs;如果是备份复制系统中的从服务器,还应该备份master.info和relay-log.info文件。备份出来的binlog文件可以用mysql提供的工具mysqlbinlog来查看,如:/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001该工具允许你显示指定的数据库下的所有sql语句,并且还可以限定时间范围,相当的方便,详细的请查看手册。恢复时,可以采用类似以下语句来做到:/usr/local/mysql/bin/mysqlbinlog/tmp/binlog.000001|mysql-uyejr-pyejrdb_name把mysqlbinlog输出的sql语句直接作为输入来执行它。如果你有空闲的机器,不妨采用这种方式来备份。由于作为slave的机器性能要求相对不是那么高,因此成本低,用低成本就能实现增量备份而且还能分担一部分数据查询压力,何乐而不为呢?5、直接备份数据文件相较前几种方法,备份数据文件最为直接、快速、方便,缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在靠背文件前,执行以下sql语句:flushtableswithreadlock;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。

这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。注意,对于innodb类型表来说,还需要备份其日志文件,即ib_logfile*文件。因为当innodb表损坏时,就可以依靠这些日志文件来恢复。6、备份策略对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。

为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在slave机器上做备份。7、数据维护和灾难恢复作为一名dba(我目前还不是,呵呵),最重要的工作内容之一是保证数据表能安全、稳定、高速使用。因此,需要定期维护你的数据表。以下sql语句就很有用:checktable或repairtable,检查或维护myisam表optimizetable,优化myisam表analyzetable,分析myisam表当然了,上面这些命令起始都可以通过工具myisamchk来完成,在这里不作详述。innodb表则可以通过执行以下语句来整理碎片,提高索引速度:altertabletbl_nameengine=innodb;这其实是一个null操作,表面上看什么也不做,实际上重新整理碎片了。通常使用的myisam表可以用上面提到的恢复方法来完成。

如果是索引坏了,可以用myisamchk工具来重建索引。而对于innodb表来说,就没这么直接了,因为它把所有的表都保存在一个表空间了。不过innodb有一个检查机制叫模糊检查点,只要保存了日志文件,就能根据日志文件来修复错误。可以在my.cnf文件中,增加以下参数,让mysqld在启动时自动检查日志文件:innodb_force_recovery=4关于该参数的信息请查看手册。有点长慢慢看对你应该有帮助。备份数据库使用mysqldump命令备份数据库还原数据库1、使用mysql命令还原数据库将game_backup.sql还原至game数据库:2、使用source命令还原数据库如果数据库过大,建议可以使用source命令。

MySQL有一种非常简单的备份方法,先将服务器停止,然后将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。*将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。恢复也一样,先将服务器停止,然后将备份的数据库覆盖同名的数据库即可。

3、mysql数据库备份恢复

如果里面是sql语句的话,直接建立一个数据库mysql-uroot-p密码库名

5.加入镜像复制技术,高速复制大文件备份,备份更快捷。6.存储介质更为丰富,最新加入对于磁带的支持。7.高效细致的备份保存策略,定期清理过期数据,节省存储空间和提高数据的可使用性。8.邮件报告、阴影卷复制、外部程序、病毒扫描等更多高级功能支持。9.支持ftp服务器备份,加强了online功能。10.隐藏式服务开启,备份更及时。

4、MYSQL数据库备份文件如何进行回恢复

很简单,把mySql服务停止,然后,在你安装的mysql安装目录下的data文件夹下复制出来,这个方法最简单,最方便,还原,就把它考在安装目录data文件夹下就行咯.。

5、mysql数据库怎么还原数据库备份

以下的文章主要介绍的是MySQLAdministrator备份与还原数据库,随着PHP技术的逐步发展,MySQL数据库的使用率也成上升趋势。可MySQL数据库的实际操作一般都是基于命令行的,而没有像微软MSSQL数据库的企业管理器这样的GUI可视图形化工具操作来的容易方便。一般的情况下,我们可以使用PHPMYADMIN这样的PHP脚本工具来操作MySQL数据库,可PHPMYADMIN也不是GUI工具。为了更方便地操作MySQL数据库,飘易今天就给大家介绍一款管理MySQL的可视化图形工具:MySQLAdministrator。这是一款和管理MSSQL的企业管理器一样方便的本地操作MySQL的有效工具。

很重要的是,MySQLAdministrator不会出现像使用SQLyog(同样是管理MySQL的GUI工具)时经常会遇到的中文乱码问题,要知道中文网站数据库使用不当的话都会出现中文乱码的问题。所以,我们使用MySQLAdministrator工具,就有效地避免出现中文乱码的问题了。飘易手里头使用的是MySQLAdministrator5.0r16这个版本。原始的官方网址选择Windows(x86)下载,目前最新版本是5.0-r17,大约17MB。利用这个软件备份mysql数据库,还原MySQL数据库,管理MySQL将变得十分简单易行,就像使用MSSQL的企业管理器一样方便。一,登陆,填写数据库IP,用户名和密码二,登陆成功后,显示以下信息:三,查看已经存在的数据库选择“Catalogs”将列出数据库。

点左下脚数据库列表中你开通的“数据库名”,右边将显示出数据库中已经存在的数据库表,如果是新数据库,右边是空的。四,备份数据库到本地计算机硬盘备份数据库到本地计算机硬盘,选择“Backup”备份数据库功能,然后点击“NewProject”建立新的备份项目。选择要备份的数据库,然后点>号,右边将显示出数据库表结构。备份选项:点“AdvancedOptions”高级选项,选择“Normalbackup”备份的时候选择正常备份,选择“Completebackup”选择完整备份,也可以选择“InnoDBOnlineBackup”,这是一种在线简单的备份方式;BackupType备份方式选择SQLFiles,点“ExecuteBackupNow”立刻开始备份数据库。五,选择“Restore”还原数据库功能点“OpenBackupFile”,找到以前备份的数据库脚本文件,选择并打开文件,点“StartRestore”后开始还原,还原成功。

这里在还原的时候需要注意的有两点:1,“TargetSchema”默认数据库项这里,如果你没有MySQL服务器root权限,比如你是虚拟主机分配的一个子账户,此时你必须选择“anotherschema”里的数据库名,而不能选择“originalschema”选项,否则还原失败出错;2,“FILECHARSET”选项默认utf8,请不要更改,否则也会出现中文乱码问题。MySQLAdministrator不仅可以备份、还原MySQL数据库,同样也可以对MySQL进行方便地维护和管理,比如修改增加字段等。另外,这里还有一篇如何使用MySQLAdministrator管理/备份/还原MySQL数据库的文章,大家也可以看看。可以用mysqldump工具简单用例说明:导入、导出数据库导出:mysqldump-urootdb1>db1.sql(注db1为database名)导入:mysql-uroottesttables.sql(注db1为database名,tb1tb2为要导出的表列表,中间用空格隔开)导入:mysql-uroottest

mysqldump-uroot-p--all-databases--all-tablespaces--no-tablespaces,-y不导出任何表空间信息。mysqldump-uroot-p--all-databases--no-tablespaces--add-drop-database每个数据库创建之前添加drop数据库语句。mysqldump-uroot-p--all-databases--add-drop-database--add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)mysqldump-uroot-p--all-databases(默认添加drop语句)mysqldump-uroot-p--all-databases–skip-add-drop-table(取消drop语句)--databases,-b导出几个数据库。参数后面所有名字参量都被看作数据库名。mysqldump-uroot-p--databasestestmysql--no-data,-d不导出任何数据,只导出数据库表结构。

mysqldump-uroot-p--host=localhost--all-databases--no-data--host,-h需要导出的主机信息mysqldump-uroot-p--host=localhost--all-databases--password,-p连接数据库密码--port,-p连接数据库端口号--set-charset添加'setnamesdefault_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。mysqldump-uroot-p--host=localhost--all-databasesmysqldump-uroot-p--host=localhost--all-databases--skip-set-charset--tables覆盖--databases(-b)参数,指定需要导出的表名。mysqldump-uroot-p--host=localhost--databasestest--tablestest--user,-u指定连接的用户名。

浏览更多:

网友留言

发表评论

◎欢迎参与讨论