您当前的位置:首页 > 互联网教程

有好的Mysql转换为Oracle转换工具没有

发布时间:2025-05-18 07:48:14    发布人:远客网络

有好的Mysql转换为Oracle转换工具没有

一、有好的Mysql转换为Oracle转换工具没有

Convert Mysql to Oracle是一个免费的数据库转换工具,实现快速安全地将Mysql数据库导入为ORACLE数据库。

Convert Mysql to Oracle功能特点

可以将数据合并到已经存在的ORACLE表中

对超大数据表的导出进行了优化处理

Convert Mysql to Oracle功能限制

Convert Mysql to Oracle运行需求

在机器中安装了ORACLE客户端,使得Convert Mysql to Oracle能够成功连接到ORACLE

这个软件是免费的,百度上一搜就出来了`

二、oracle历史数据迁移

Oracle数据库的数据迁移方法有哪些呢

Windows中oracle服务启动关闭脚本 oracle控制文件的管理随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

Windows中oracle服务启动关闭脚本 oracle控制文件的管理随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。数据迁移的一般步骤对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。进行数据模拟迁移根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。测试数据模拟迁移:根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移:数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。正式实施数据迁移:按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果:按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。移植系统应用软件:将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

正式运行应用系统:在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。

主要介绍了Oracle数据库的数据迁移方法,详细内容请大家参考下文:随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。数据迁移的一般步骤对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。进行数据模拟迁移根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。测试数据模拟迁移根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。正式实施数据迁移按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。移植系统应用软件将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

以上是我对于这个问题的解答,希望能够帮到大家。

我们常常需要对数据进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下……一、exp/imp:这也算是最常用最简单的方法了,一般是基于应用的owner级做导出导入。

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库做exp user/pwd owner=XXX file=exp_xxx。 dmp log=exp_xxx。

log buffer=6000000,传dmp文件到新库,在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx。dmp log=imp_xxx。

log ignore=y。优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

二、存储迁移:这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames。

ora,listener。ora,密码文件传到新库的对应位置。

将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为当库、切存储、起库的时间。

缺点是要求新老库都是同一平台,是相同的数据库版本。三、利用data guard迁移:用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

操作方法:可见://。oracleblog。

/study-note/dg-created-by-rman/或者://。 oracleblog。

/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他相关网文。注意switch over之后,可以将dg拆掉,去掉log_archive_dest_ 2、FAL_SERVER、FAL_CLIENT、standby_file_management参数。

另外还要注意如果用rman做dg,注意手工添加tempfile。优缺点:优点是停机时间短,停机时间为switch over的时间。

缺点:主机必须双份、存储必须双份。四、用rman做迁移: rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

操作方法: 1。停第三方的归档备份,如legato或dp 2。

backup数据库:在一次周末的课程试验中,频繁的看到 Data file init write等待事件。

等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。

在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、SQL用Datetime等。一关于ORACLE的透明网关配置 ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它是透明网关程序啦,同时在主目录中还有tgrmsql的一个目录,ORACLE_HOME\tg4msql\admin目录中的inittg4msql.ora就是需要进行配置才能在ORACLE中连接SQL。

1如何配置透明网关呢?打开inittg4msql.ora:# HS init parameters xzh代表SQL服务名,pubs代表要访问的SQL数据库。 HS_FDS_CONNECT_INFO="SERVER=xzh;DATABASE=pubs" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER 2监听的配置oracle_home\work\admin\Listiner.ora LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST= xzh)(PORT= 1521)))(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST= xzh)(PORT= 1527))))) SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= xzh.world)(ORACLE_HOME= D:\oracle\ora92)(SID_NAME= xzh))(SID_DESC=(GLOBAL_DBNAME= tg4msql)(PROGRAM= tg4msql)(SID_NAME= tg4msql)(ORACLE_HOME= D:\oracle\ora92)))。

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库执行:$ exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,导入dmp文件到新库,在新库执行如下命令:$ imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

Oracle SQL Developer是甲骨文公司免费提供的数据库开发工具,可帮助用户简化开发工作,提高编制和调试SQL和PL/SQL代码的效率。

现在,这个免费工具又增加了方便从第三方数据库向Oracle数据库迁移的新功能。甲骨文公司软件开发副总裁Michael Hichwa说:“自推出Oracle SQL Developer以来,我们一直致力于增加这个产品的功能,以满足开发人员社区的需求。

有了Oracle SQL Developer 1。2版,开发人员用一个工具软件,就既可以浏览第三方数据,又能以最低风险经济、无缝地将第三方数据迁移到Oracle数据库中。

1。2版极大地简化了数据、表格和存储程序从非Oracle数据库向Oracle数据库的迁移,有助于确保平滑迁移。

” Oracle SQL Developer迁移工作台实现了向Oracle数据库的自动迁移很久以来,甲骨文一直提供独立的迁移工作台工具,以帮助数据库开发人员从非Oracle数据库向Oracle数据库迁移。Oracle SQL Developer 1。

2版集成了一个更加强大的迁移工作台工具,即Oracle SQL Developer迁移工作台(Oracle SQL Developer Migration Workbench)。这个迁移工作台为数据库开发人员提供了单一的工具和环境,他们可以用这个工作台浏览第三方数据、迁移数据库对象和数据并浏览迁移后的数据库,从而降低从第三方数据库向Oracle数据库迁移所需的时间、成本以及有关风险。

Oracle SQL Developer迁移工作台具有广泛的数据库迁移功能。用户可用这个工作台迁移单个表格或几个数据库。

用户连接在数据库上时也可以进行迁移,或者用户可以生成项目表,将其作为迁移项目的组成部分,并用Oracle SQL Developer的SQL和PL/SQL编制与调试工具修改项目表。 Oracle SQL Developer迁移工作台具有新的语法分析程序,可以百分之百识别T-SQL语法。

该工作台还具有单个语句翻译器,用户可以将任何种类的T-SQL语句粘贴到编辑器中,并将其即时翻译成PL/SQL语句。 Oracle SQL Developer迁移工作台为数据库开发人员提供了两个迁移选项。

用户可以用该工作台附带的实用向导程序进行单步迁移,也可以将迁移过程分成几个部分,以在需要时对各个不同的部分进行统一修改。这个工作台可帮助用户将以下第三方数据库迁移到Oracle数据库:•Microsoft SQL Server(版本7。

0、2000和2005);•Microsoft Access(版本9 7、2000、2002和2003);•MySQL(版本3。 0、4。

ABB用Oracle SQL Developer迁移工作台节省时间 ABB是全球领先的工程公司,该公司正在用Oracle SQL Developer 1。2版迁移工作台实现从SQL Server向Oracle数据库的迁移。

世界各地有很多印刷所采用ABB的自动打印解决方案,就资产和价值链优化而言,这套解决方案具有非常多的优点。ABB的业务范围涵盖从页面规划、数字工作流、花轮滚压、印刷自动化直到整个生产过程的总体规划和跟踪。

ABB公司自动印刷业务部设计师Karl Doerig说:“对我们从SQL Server 2005向Oracle数据库的迁移来说,Oracle SQL Developer迁移工作台是一个完美的集成开发环境。我们用这个新的迁移工作台可以在不到两个小时的时间内迁移具有约350个表格和1000个存储过程的SQL Server 2005数据库框架,而且几乎不需要手工编辑工作。

以前完成同样的任务大约需要两天时间,光手动改变输出的说明就有两页纸长。”价格与供货 Oracle SQL Developer的运行版已经可以从Oracle技术网络下载,网址为:://。

oracle。/technology/software/products/sql/index。

。 Oracle SQL Developer可在Linux、Mac OS X和Windows平台上运行,免费提供,任何拥有Oracle数据库许可证的客户都可以获得对Oracle SQL Developer的支持。

有关的条款、条件和限制条件适用。甲骨文还为注册用户免费提供在线论坛,供用户探讨有关Oracle SQL Developer的话题。

Oracle SQL Developer可用于Oracle数据库11g,经过了在企业版、标准版和标准版1上的认证。这个工具软件还可用于Oracle数据库10g的所有版本和Oracle9i数据库第二版。

三、mysql 如何备份和还原数据库

目前 MySQL支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL语法进行备份:BACKUP TABLE或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb所有的表都保存在同一个数据文件 ibdata1中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。

mysqldump是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MySQL版本之间升级时相对比较合适,这也是最常用的备份方法。现在来讲一下 mysqldump的一些主要参数:

它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。

导出的数据采用包含字段名的完整 INSERT方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。

•--default-character-set=charset

指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。

告诉 mysqldump在 INSERT语句的开头和结尾增加/*!40000 ALTER TABLE table DISABLE KEYS*/;和/*!40000 ALTER TABLE table ENABLE KEYS*/;语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM表。

•--extended-insert= true|false

默认情况下,mysqldump开启--complete-insert模式,因此不想用它的的话,就使用本选项,设定它的值为 false即可。

使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。

在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction和--lock-tables选项。

它和--lock-all-tables类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM表,如果是 Innodb表可以用--single-transaction选项。

只导出数据,而不添加 CREATE TABLE语句。

不导出任何数据,只导出数据库表结构。

这只是一个快捷选项,等同于同时添加--add-drop-tables--add-locking--create-option--disable-keys--extended-insert--lock-tables--quick--set-charset选项。本选项能让 mysqldump很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用--skip-opt禁用。注意,如果运行 mysqldump没有指定--quick或--opt选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。

该选项在导出大表时很有用,它强制 mysqldump从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。

该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB和 BDB。本选项和--lock-tables选项是互斥的,因为 LOCK TABLES会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick选项。

同时导出触发器。该选项默认启用,用--skip-triggers禁用它。

其他参数详情请参考手册,我通常使用以下 SQL来备份 MyISAM表:

/usr/local/mysql/bin/mysqldump-uyejr-pyejr--default-character-set=utf8--opt--extended-insert=false\

--triggers-R--hex-blob-x db_name> db_name.sql

/usr/local/mysql/bin/mysqldump-uyejr-pyejr--default-character-set=utf8--opt--extended-insert=false\

--triggers-R--hex-blob--single-transaction db_name> db_name.sql

用 mysqldump备份出来的文件是一个可以直接倒入的 SQL脚本,有两种方法可以将数据导入。

/usr/local/mysql/bin/mysql-uyejr-pyejr db_name< db_name.sql

其实这不是标准的 SQL语法,而是 mysql客户端提供的功能,例如:

这里需要指定文件的绝对路径,并且必须是 mysqld运行用户(例如 nobody)有权限读取的文件。

mysqlhotcopy是一个 PERL程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLES和 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/tmp

root#/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(要执行 FLUSH TABLES)权限,并且还必须要能够有读取 datadir/db_name目录的权限。

mysqlhotcopy备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld指定的 datadir(在这里是/usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:

root#cp-rf db_name/usr/local/mysql/data/

root#chown-R nobody:nobody/usr/local/mysql/data/(将 db_name目录的属主改成 mysqld运行用户)

BACKUP TABLE语法其实和 mysqlhotcopy的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。例子:

BACK TABLE tbl_name TO'/tmp/db_name/';

注意,必须要有 FILE权限才能执行本SQL,并且目录/tmp/db_name/必须能被 mysqld用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。

SELECT INTO OUTFILE则是把数据导出来成为普通的文本文件,可以自定义字段间隔的方式,方便处理这些数据。例子:

SELECT INTO OUTFILE'/tmp/db_name/tbl_name.txt' FROM tbl_name;

注意,必须要有 FILE权限才能执行本SQL,并且文件/tmp/db_name/tbl_name.txt必须能被 mysqld用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。

用 BACKUP TABLE方法备份出来的文件,可以运行 RESTORE TABLE语句来恢复数据表。例子:

RESTORE TABLE FROM'/tmp/db_name/';

用 SELECT INTO OUTFILE方法备份出来的文件,可以运行 LOAD DATA INFILE语句来恢复数据表。例子:

LOAD DATA INFILE'/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name;

权限要求类似上面所述。倒入数据之前,数据表要已经存在才行。如果担心数据会发生重复,可以增加 REPLACE关键字来替换已有记录或者用 IGNORE关键字来忽略他们。

shell> mysqldump--quick db_name| gzip> db_name.contents.gz(该例子中创建的文件是压缩格式)。

shell> gunzip< db_name.contents.gz| mysql db_name以上命令,适用于*nix操作系统的机器

采用 binlog的方法相对来说更灵活,省心省力,而且还可以支持增量备份。

启用 binlog时必须要重启 mysqld。首先,关闭 mysqld,打开 my.cnf,加入以下几行:

然后启动 mysqld就可以了。运行过程中会产生 binlog.000001以及 binlog.index,前面的文件是 mysqld记录所有对数据的更新操作,后面的文件则是所有 binlog的索引,都不能轻易删除。关于 binlog的信息请查看手册。

需要备份时,可以先执行一下 SQL语句,让 mysqld终止对当前 binlog的写入,就可以把文件直接备份,这样的话就能达到增量备份的目的了:

FLUSH LOGS;如果是备份复制系统中的从服务器,还应该备份 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-pyejr db_name

把 mysqlbinlog输出的 SQL语句直接作为输入来执行它。

如果你有空闲的机器,不妨采用这种方式来备份。由于作为 slave的机器性能要求相对不是那么高,因此成本低,用低成本就能实现增量备份而且还能分担一部分数据查询压力,何乐而不为呢?

相较前几种方法,备份数据文件最为直接、快速、方便,缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在靠背文件前,执行以下 SQL语句:

FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。

注意,对于 Innodb类型表来说,还需要备份其日志文件,即 ib_logfile*文件。因为当 Innodb表损坏时,就可以依靠这些日志文件来恢复。

对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave机器上做备份。

作为一名DBA(我目前还不是,呵呵),最重要的工作内容之一是保证数据表能安全、稳定、高速使用。因此,需要定期维护你的数据表。以下 SQL语句就很有用:

CHECK TABLE或 REPAIR TABLE,检查或维护 MyISAM表

当然了,上面这些命令起始都可以通过工具 myisamchk来完成,在这里不作详述。

Innodb表则可以通过执行以下语句来整理碎片,提高索引速度:

ALTER TABLE tbl_name ENGINE= Innodb;

这其实是一个 NULL操作,表面上看什么也不做,实际上重新整理碎片了。

通常使用的 MyISAM表可以用上面提到的恢复方法来完成。如果是索引坏了,可以用 myisamchk工具来重建索引。而对于 Innodb表来说,就没这么直接了,因为它把所有的表都保存在一个表空间了。不过 Innodb有一个检查机制叫模糊检查点,只要保存了日志文件,就能根据日志文件来修复错误。可以在 my.cnf文件中,增加以下参数,让 mysqld在启动时自动检查日志文件: