
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。
1Win32下MySQL的备份与还原
11 备份
开始菜单 | 运行 | cmd |利用“cd /Program Files/MySQL/MySQL Server 50/bin”命令进入bin文件夹 | 利用“mysqldump -u 用户名 -p databasename >exportfilename”导出数据库到文件,如mysqldump -u root -p voice>voicesql,然后输入密码即可开始导出。
12 还原
进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voicesql;",回车,开始导入,再次出现"mysql>"并且没有提示错误即还原成功。
2Linux下MySQL的备份与还原
21 备份
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysqldump -u root -p voice>voicesql,输入密码即可。
22 还原
法一:
[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同12还原。
法二:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysql -u root -p voice<voicesql,输入密码即可。
可以用mysqldump工具 简单用例说明: 导入、导出数据库 导出: mysqldump -uroot db1 > db1sql (注db1为database名) 导入:mysql -uroot test < db1sql (注test为database名,将db1中所有的表及数据导入到test数据库) 导入、导出表 导出:
备份数据库主要是备份数据库里面的各个表,因为如果移植到其他主机上,数据库名和用户都可以新建而且网站新的数据库名和用户不同名,所以只要进入phpmyadmin里面,选中自己的数据库,然后点击上方的导出就可以了,导出的格式默认是sql的,也很容易导入到其他数据库里面。望采纳
方法/步骤
开始——运行——输入cmd,确定
进入Dos命令行下,输入mysqldump
--help,可以先熟悉mysqldump的帮助信息
注意:
如果安装时配置了bin路径则可以直接输入mysqldump
--help命令
如果安装时没有配置了bin路径则需要切换到mysql安装目录下的bin目录下输入mysqldump
--help命令
在帮助信息里可以看到命令的基本格式如下:
Usage:
mysqldump
[OPTIONS]
database
[tables]
OR
mysqldump
[OPTIONS]
--databases
[OPTIONS]
DB1
[DB2
DB3]
OR
mysqldump
[OPTIONS]
--all-databases
[OPTIONS]
备份或导出整个数据库
输入mysqldump
-uroot
-p
test
>
testsql
回车后输入输入root的密码即可
命令解释:
mysqldump
-u
用户名
-p
数据库名
>
导出的文件名
这样打开我的电脑就可以在当前目录看到导出的文件了
备份或导出数据库中一个表
输入mysqldump
-uroot
-p
phpmyadmin
pma_bookmark
>
pma_bookmarksql
回车后输入输入root的密码即可
命令解释:
mysqldump
-u
用户名
-p
数据库名
表名>
导出的文件名
这样就可以在当前目录看到导出的文件了。
就可以还原或导入到别的数据库服务器上了。
补充:
关于msyql其他命令怎么使用,可以点击作者名片,在经验列表中找到。
1、首先打开mysql数据库软件进入软件主界面。
2、然后再左侧树里打开自己的的数据库。
3、然后需要点击需要备份的数据库名。
4、如图所示为打开数据库后界面。
5、然后需要点击转储sql文件选项。
6、然后需要打开选择存储文件路径并选择保存。
7、点击保存即可在路径备份好格式为sql的数据库文件。
用到MySQL的mysqldump工具,基本用法是:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
11、mysqldump支持下列选项:
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
--add-drop-table
在每个create语句之前增加一个drop table。
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c, --complete-insert
使用完整的insert语句(用列名字)。
-C, --compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e, --extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#, --debug[=option_string]
跟踪程序的使用(为了调试)。
--help
显示一条帮助消息并且退出。
LOAD DATA INFILE
--fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--fields-terminated-by=
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F, --flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f, --force,
即使我们在一个表导出期间得到一个SQL错误,继续。
-h, --host=
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l, --lock-tables
为开始导出锁定所有表。
-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, --password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, --port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q, --quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, --socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。
-T, --tab=path-to-some-directory
对于每个给定的表,创建一个 table_namesql文件,它包含SQL CREATE 命令,和一个table_nametxt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。txt文件的格式根据--fields-xxx和 --lines--xxx选项来定。
-u user_name, --user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。
-v, --verbose
冗长模式。打印出程序所做的更多的信息。
-V, --version
打印版本信息并且退出。
-w, --where=''''where-condition''''
只导出被选择了的记录;注意引号是强制的!
"--where=user=''''jimf''''" "-wuserid>1" "-wuserid<1"
12、最常见的mysqldump的一个备份:
虽然mysqldump支持的命令有很多,对于大多数人而言,我们只需要使用-opt这个命令就已经足够了,为你的数据库做一个完整的备份:
mysqldump --opt database > backup-filesql
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump --opt database | mysql --host=remote-host -C database
13、使用mysqldump导出的文件恢复数据库
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-filesql
就是
shell> mysql 库名 < 文件名
二、使用mysqldump定时备份数据库的脚本
21、备份脚本
使用脚本每天定期执行数据库备份 *** 作,对每个使用mysql数据库的人来说都很有必要,这样的脚本网上有很多,这里摘抄一个朋友的脚本 dbbackup:
这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
dbbackup代码:
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz
#2004-09
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxxtgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/dblog
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date +%y%m%d)tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date=''''5 days ago'''')tgz
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can''''t Backup!" >> $LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName > $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
)
/etc/initd/mysqld stop >/dev/null 2>&1
tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
/etc/initd/mysqld start >/dev/null 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
;;
esac
fi
echo "-------------------------------------------" >> $LogFile
22、放入crontab定期执行dbbackup
假定dbbackup在/root目录下。我们通过使用crontab命令,设置每天0点10分执行/root/dbbakup脚本。
1、 使用 crontab –e编辑crontab
2、 在crontab中加入:
#back for jabber database
10 0 /root/dbbackup
一、数据备份的重要性
工作中,如果意外删除了重要的文件或者目录的话,那结果可就惨了。尤其是当误删除的数据涉及重要的客户或者关键项目,并且这些数据无法轻易重新创建的时候,那滋味,不用我说你也能想象得到。不巧的是,像这样的数据在公司环境中随处可见,例如销售记录、客户****,等等。
二、关于mysqldump
MySQL自身提供了许多命令行工具,例如mysql工具可以用来与MySQL的数据库模式、数据、用户和配置变量进行交互,而mysqladmin工具则可以进行各种管理任务,还有就是下面将要介绍的mysqldump。此外还有很多,不过那超出了本文的讨论范围。工具mysqldump既可以用来备份数据库模式,还可以用来备份数据;利用它,我们不仅可以对一个服务器上的所有数据库进行地毯式的备份,同时我们还可以选择性地备份某个数据库,甚至数据库中指定的某些表。
当在服务器上安装MySQL的时候,应修改系统路径以便使全局命令行可以访问各个客户程序。打开终端窗口,并执行下列命令:%>mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS]
databases [OPTIONS] DB1 [DB2 DB3] OR mysqldump [OPTIONS] all-databases [OPTIONS]
For more options, use mysqldump help
这里给出了使用mysqldump程序的方法。举例来说,若要备份所有数据库模式和数据至文件backup092210sql的话,可以执行如下所示的命令:%>mysqldump -u root -p all-databases > backup092210sql Enter password:
这里,为了能够访问所有数据库,我们需要一个root权限,所以这里需要在提示符后面输入相应口令。此外,如果你是在开发用的服务器上练习这些命令的话,不妨花一些时间看看备份文件的内容。这时您会看到一系列的SQL语句,先是删除各个表后重新创建的语句,然后是重新创建相关数据的语句。另外,由于上面的例子中我们对所有数据库进行备份,所以您还会发现,备份文件将创建每个数据库(如果它还没有存在的话),然后通过USE命令切换到该数据库,进而创建与该数据库相关的表跟数据。
若要备份单个数据库,例如要备份名为wiki的数据库到一个名为wiki-backup092210sql的文件中,我们可以使用如下所示的命令:%>mysqldump -u root -p wiki > wiki-backup092210sql Enter password:
最后,若要备份数据库中名为users的表的话,例如要把它备份到名为wikiusers-backup092210sql的文件中,我们可以使用如下所示的命令:%>mysqldump -u root -p wiki users > wikiusers-backup092210sql Enter password:
三、调整备份内容
有时候,我们可能只想备份数据库的模式,或者只想备份数据库的数据。为了备份数据库模式,可以向mysqldump传递参数no-data,如下所示:%>mysqldump -u root -p no-data wiki > wiki-backup092210sql
为了只备份数据库的数据,可以向mysqldump使用参数no-create-info,如下所示:%>mysqldump -u root -p no-create-info wiki > wiki-backup092210sql
对于前面所举的例子,仅需要少量的击键次数就能执行mysqldump命令。然而,工作中要干的活还有很多,并且如果老是执行这些命令的话,那么生活就会变得太单调了。因此,我们可以设法使这些过程自动化,这时我们可以借助cron工具来达成我们的目标,这个工具在所有类UNIX *** 作系统上都能找到。为了自动执行备份任务,我们需要新建一个正确命名的文件。例如nightly-backupsh,具体命令如下所示:#!/bin/sh mysqldump -uroot -psecret wiki > /home/backup/sql/wiki-backup-`date +%m%d%Y`sql
接下来,我们将这个脚本提供交给cron,方法是使用crontab。为此,我们可以执行如下所示的命令:%>crontab -e
这将打开当前登录用户的crontab文件,如果该文件不存在的话就会自动新建一个。在这个文件中,我们可以添加如下内容,来确保每天上午3时运行该备份脚本:0 3 /home/backup/scripts/nightly-backupsh
如果您对crontab的语法很陌生的话,这里的参数可能让您摸不着头脑。这里前五个参数分别对应于执行脚本的时间,依次为分、时、日、月和星期几。因此,要想在每星期二的4:45am执行脚本的话,可以使用参数45 4 3。
插入上面所示的一行内容后,保存文件,那么我们的任务就会开始按照给定时间调度执行。 需要注意的是,第二天早上一定要查看相应的目录,看看事情是否一切正常。
五、其它备份方案
就像本文前面所说的那样,mysqldump只是MySQL众多备份方案中的一个。此外,您还可以使用MySQL的二进制日志文件进行增量备份,或者使用从MySQL主服务器中将数据复制到从服务器中。
六、小结本文中,我们与读者一道建立了一个简单的MySQL备份解决方案。如果您之前还未实施任何解决方案的话,不妨立即动手试一下。重要的是,这只需要花费您几分钟的时间,我想这是很划得来的。
一、使用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)
以上就是关于如何进行数据库备份和恢复 mysql全部的内容,包括:如何进行数据库备份和恢复 mysql、如何把mysql数据库备份命令、本地mysql数据库,怎么备份整个数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)