
一、使用mysql相关命令进行简单的本地备份
1mysqllmp命令
mysqlmp是采用SQL级别的备份机制,它将数据表导成SQL脚本文件,在不同的MySQL版本之间升级时相对比较合适,这也是最常用的备份方法。
使用mysqlmp进行备份非常简单,如果要备份数据库”db_backup”,使用命令:
#mysqlmp_u-pphpbb_db_backup/backups/mysql/db_backup2008-1-6sql
还可以使用gzip命令对备份文件进行压缩:
#mysqlmpdb_backup|gzip/backups/mysql/db_backup2008-1-6sqlgz(备份后生成的sql不含建库语句!)
只备份一些频繁更新的数据库表:
##mysqlmpsample_dbarticlescommentslinks/backups/mysql/sample_dbart_comm_lin2008-1-6sql
上面的命令会备份articles,comments,和links三个表。
恢复数据使用命令:
#mysql_u-pdb_backup/backups/mysql/db_backup2008-1-6sql
注意使用这个命令时必须保证数据库正在运行。
2使用SOURCE语法
其实这不是标准的SQL语法,而是mysql客户端提供的功能,例如:
#SOURCE/tmp/db_namesql;
这里需要指定文件的绝对路径,并且必须是mysqld运行用户(例如nobody)有权限读取的文件。
3备份
只能用于备份MyISAM,并且只能运行在linux和Unix和NetWare系统上。支持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子:
#-h=localhost-u=goodcjh-p=goodcjhdb_name/tmp
(把数据库目录db_name拷贝到/tmp下)
注意,想要使用,必须要有SELECT、RELOAD(要执行FLUSHTABLES)权限,并且还必须要能够有读取datadir/db_name目录的权限。
还原数据库方法:
备份出来的是整个数据库目录,使用时可以直接拷贝到mysqld指定的目录(在这里是/usr/local/mysql/data/)目录下即可,同时要注意权限的问题,另外首先应当删除数据库旧副本如下例:
#/bin/rm-rf/mysql-backup///old
关闭mysql服务器、复制文件、查询启动mysql服务器的三个步骤:
#/etc/initd/mysqldstop
StoppingMySQL:[OK]
#cp-af/mysql-backup////var/lib/mysql/
#/etc/initd/mysqldstart
StartingMySQL:[OK]
#chown-Rnobody:nobody/usr/local/mysql/data/(将db_name目录的属主改成mysqld运行用户)
二、使用网络备份
将MYSQL数据放在一台计算机上是不安全的,所以应当把数据备份到局域网中其他Linux计算机中。假设Mysql服务器IP地址是:19216813。局域网使用Linux的远程计算机IP地址是19216814;类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。linux系统NFS服务端配置方法如下:
(1)修改/etc/exports,增加共享目录
/export/home/sunky19216814(rw)
/export/home/sunky1(rw)
/export/home/sunky2linux-client(rw)
exp和imp
1 获取帮助
imp help=y
2 导入一个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3 导入一个或一组指定用户所属的全部表、索引和其他对象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4 将一个用户所属的数据导入另一个用户
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
5 导入一个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6 从多个文件导入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7 使用参数文件
imp system/manager parfile=bible_tablespar
bible_tablespar参数文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8 增量导入
imp system/manager inctype= RECTORE FULL=Y FILE=A
-------------------------------------------------------------------------------------------------------------------------------------------
1 获取帮助
exp help=y
2 导出一个完整数据库
exp system/manager file=bible_db log=dible_db full=y
3 导出数据库定义而不导出数据
exp system/manager file=bible_db log=dible_db full=y rows=n
4 导出一个或一组指定用户所属的全部表、索引和其他对象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
注意:在导出用户时,尽管已经得到了这个用户的所有对象,但是还是不能得到这些对象引用的任何同义词。解决方法是用以下的SQLPlus命令创建一个脚本文件,运行这个脚本文件可以获得一个重建seapark所属对象的全部公共同义词的可执行脚本,然后在目标数据库上运行该脚本就可重建同义词了。
SET LINESIZE 132
SET PAGESIZE 0
SET TRIMSPOOL ON
SPOOL c:\seaparksyn
SELECT 'Create public synonym '||synonym_name
||' for '||table_owner||''||table_name||';'
FROM dba_synonyms
WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';
SPOOL OFF
5 导出一个或多个指定表
exp seapark/seapark file=tank log=tank tables=tank
exp system/manager file=tank log=tank tables=seaparktank
exp system/manager file=tank log=tank tables=(seaparktank,amyartist)
6 估计导出文件的大小
全部表总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE segment_type = 'TABLE';
seapark用户所属表的总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE';
seapark用户下的aquatic_animal表的字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE'
AND segment_name = 'AQUATIC_ANIMAL';
7 导出表数据的子集(oracle8i以上)
NT系统:
exp system/manager query='Where salad_type='FRUIT'' tables=amysalad_type
file=fruit log=fruit
UNIX系统:
exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amysalad_type
file=fruit log=fruit
8 用多个文件分割一个导出文件
exp system/manager
file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G tables=hrpaycheck
9 使用参数文件
exp system/manager parfile=bible_tablespar
bible_tablespar参数文件:
#Export the sample tables used for the Oracle8i Database Administrator's Bible
file=bible_tables
log=bible_tables
tables=(
amyartist
amybooks
seaparkcheckup
seaparkitems
)
10 增量导出
“完全”增量导出(complete),即备份整个数据库
exp system/manager inctype=complete file=990702dmp
“增量型”增量导出(incremental),即备份上一次备份后改变的数据
exp system/manager inctype=incremental file=990702dmp
“累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据
exp system/manager inctype=cumulative file=990702dmp
最好放过去,不然不管通过什么方式共享文件,都会比较慢,因为网络速度是有限制的,而且imp命令肯定会占据大量的带宽,而且一旦网络出现问题,那么就要重新开始,增加的出错的可能性,而且不容易判断。所以最好先放过去,这样直接走io2好很多。
exp help=y
imp help=y
说的很清楚
数据库归档不归档都可以,scott是一个用户名,tiger是这个用户的密码,举两个例子
exp scott/tiger owner=scott file=tempdmp log=templog
exp scott/tiger tables=(emp,dept) file=tempdmp log=templog
启动oracle数据库步骤:
首先使用oracle用户登录Linux,然后在shell命令行中执行下面的命令:
第一步:打开Oracle监听
$lsnrctlstart
第二步:进入sqlplus
$sqlplus/nolog
SQL
第三步:使用sysdab角色登录sqlplus
SQL
第四步:启动数据库
SQL
经过上面的四个步骤,oracle数据库就可以启动了。
关闭数据库用shutdown是要等待事物结束才关闭,强制关闭用shutdownabort。
以上就是关于linux怎么备份数据库(linux如何备份mysql数据库)全部的内容,包括:linux怎么备份数据库(linux如何备份mysql数据库)、linux中怎么实现导入导出oracle数据库中、linux下向oracle数据库用impd命令导入一个dmp文件 用不用把文件先用ssh放linux下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)