重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
第一种 导出为 sql语句,然后到新的服务器上,导入(好像是要新建立数据库,数据库有了之后,再导入sql语句)
创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宝山做网站,已为上家服务,为宝山各地企业和个人服务,联系电话:13518219792
然后拷贝到新的服务器的 mysql的data文件夹,并给于mysql账户的运行权限(一般只用给 administrator 和 mysql 账号的运行权限,其他的例如 users 和 system 以及 来宾 都不用给权限,因为这个是 数据库)
这个时候进入 phpmyadmin ,在左侧,就可以看到了你原来的数据库了,但是这个时候,还不能用,因为还没有用户名。我们点击数据库,然后在右侧,点击权限,一般默认只有 root权限
这个时候,我们添加 添加新用户
用户名和密码,就选择为以前的用户名和密码就可以了
这样,数据库就恢复成功了
一、数据备份
1、使用mysqldump命令备份
mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。
1、备份一个数据库
mysqldump基本语法:
mysqldump -u username -p dbname table1 table2 ...- BackupName.sql
其中:
dbname参数表示数据库的名称;
table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;
使用root用户备份test数据库下的person表
mysqldump -u root -p test person D:\backup.sql
其生成的脚本如下:
文件的开头会记录MySQL的版本、备份的主机名和数据库名。
文件中以“--”开头的都是SQL语言的注释,以"/*!40101"等形式开头的是与MySQL有关的注释。40101是MySQL数据库的版本号,如果MySQL的版本比1.11高,则/*!40101和*/之间的内容就被当做SQL命令来执行,如果比4.1.1低就会被当做注释。
2、备份多个数据库
语法:
mysqldump -u username -p --databases dbname2 dbname2 Backup.sql
加上了--databases选项,然后后面跟多个数据库
mysqldump -u root -p --databases test mysql D:\backup.sql
3、备份所有数据库
mysqldump命令备份所有数据库的语法如下:
mysqldump -u username -p -all-databases BackupName.sql
示例:
mysqldump -u -root -p -all-databases D:\all.sql
2、直接复制整个数据库目录
MySQL有一种非常简单的备份方法,就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。
不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。
注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同。
3、使用mysqlhotcopy工具快速备份
一看名字就知道是热备份。因此,mysqlhotcopy支持不停止MySQL服务器备份。而且,mysqlhotcopy的备份方式比mysqldump快。mysqlhotcopy是一个perl脚本,主要在Linux系统下使用。其使用LOCK TABLES、FLUSH TABLES和cp来进行快速备份。
原理:先将需要备份的数据库加上一个读锁,然后用FLUSH TABLES将内存中的数据写回到硬盘上的数据库,最后,把需要备份的数据库文件复制到目标目录。
命令格式如下:
[root@localhost ~]# mysqlhotcopy [option] dbname1 dbname2 backupDir/
dbname:数据库名称;
backupDir:备份到哪个文件夹下;
常用选项:
--help:查看mysqlhotcopy帮助;
--allowold:如果备份目录下存在相同的备份文件,将旧的备份文件加上_old;
--keepold:如果备份目录下存在相同的备份文件,不删除旧的备份文件,而是将旧的文件更名;
--flushlog:本次辈分之后,将对数据库的更新记录到日志中;
--noindices:只备份数据文件,不备份索引文件;
--user=用户名:用来指定用户名,可以用-u代替;
--password=密码:用来指定密码,可以用-p代替。使用-p时,密码与-p之间没有空格;
--port=端口号:用来指定访问端口,可以用-P代替;
--socket=socket文件:用来指定socket文件,可以用-S代替;
mysqlhotcopy并非mysql自带,需要安装Perl的数据库接口包;下载地址为:
目前,该工具也仅仅能够备份MyISAM类型的表。
二、数据还原
1、还原使用mysqldump命令备份的数据库的语法如下:
mysql -u root -p [dbname] backup.sq
示例:
mysql -u root -p C:\backup.sql
2、还原直接复制目录的备份
通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制。
前提是把MYSQL的安装路径\bin添加到系统环境变量PATH中了。
备份:mysqldump -u root -p123456 kcgl c:\20090219.sql
mysqldump 备份命令
root 用户名(root管理员)
123456 密码
kcgl 备份的数据库名;
备份符号
20090219.sql 备份的文件名
还原:
mysql -u root -p123456 kcgl c:\20090219.sql
mysql 还原命令
root 用户名(root管理员)
123456 密码
dbcurr 备份的数据库名;
还原符号
20090219.sql还原的文件名
注意:首先要确保你的mysql 中有kcgl这个库,还原命令是不会自动建库的。
mysqldump 远程备份
mysqldump -h ip -uroot -proot database c:\data.sql
---------其他---------
mysqldump备份:
mysqldump -u用户名 -p密码 -h主机 数据库 a -w "sql条件" --lock-all-tables 路径
案例:
mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables c:\aa.txt
mysqldump还原:
mysqldump -u用户名 -p密码 -h主机 数据库 路径
案例:
mysql -uroot -p1234 db1 c:\aa.txt
mysqldump按条件导出:
mysqldump -u用户名 -p密码 -h主机 数据库 a --where "条件语句" --no-建表 路径
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info c:\a.sql
mysqldump按导入:
mysqldump -u用户名 -p密码 -h主机 数据库 路径
案例:
mysql -uroot -p1234 db1 c:\a.txt
mysqldump导出表:
mysqldump -u用户名 -p密码 -h主机 数据库 表
案例:
mysqldump -uroot -p sqlhk9 a --no-data
-------------------------------------------------
mysqldump命令介绍
--all-databases, -A: 备份所有数据库
--databases, -B: 用于备份多个数据库,如果没有该选项,mysql dump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysql dum把每个名字都当作为数据库名。
--force, -f:即使发现sql错误,仍然继续备份
--host=host_name, -h host_name:备份主机名,默认为localhost
--no-data, -d:只导出表结构
--password[=password], -p[password]:密码
--port=port_num, -P port_num:制定TCP/IP连接时的端口号
--quick, -q:快速导出
--tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
--user=user_name, -u user_name:用户名
--xml, -X:导出为xml文件
1.备份全部数据库的数据和结构
mysql dump -uroot -p123456 -A F:\all.sql
2.备份全部数据库的结构(加 -d 参数)
mysql dump -uroot -p123456 -A -dF:\all_struct.sql
3.备份全部数据库的数据(加 -t 参数)
mysql dump -uroot -p123456 -A -tF:\all_data.sql
4.备份单个数据库的数据和结构(,数据库名mydb)
mysql dump -uroot -p123456 mydbF:\mydb.sql
5.备份单个数据库的结构
mysql dump -uroot -p123456 mydb -dF:\mydb.sql
6.备份单个数据库的数据
mysql dump -uroot -p123456 mydb -tF:\mydb.sql
7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysql dump -uroot -p123456 mydb t1 t2 f:\multables.sql
8.一次备份多个数据库
mysql dump -uroot -p123456 --databases db1 db2 f:\muldbs.sql
还原部分分(1)mysql 命令行source方法 和 (2)系统命令行方法
1.还原全部数据库:
(1) mysql 命令行:mysql source f:\all.sql
(2) 系统命令行: mysql -uroot -p123456 f:\all.sql
2.还原单个数据库(需指定数据库)
(1) mysql use mydb
mysql source f:\mydb.sql
(2) mysql -uroot -p123456 mydb f:\mydb.sql
3.还原单个数据库的多个表(需指定数据库)
(1) mysql use mydb
mysql source f:\multables.sql
(2) mysql -uroot -p123456 mydb f:\multables.sql
4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
(1) mysql 命令行:mysql source f:\muldbs.sql
(2) 系统命令行: mysql -uroot -p123456 f:\muldbs.sql
目前需要手动还原,把数据库备份文件解压到mysql数据库文件目录下,默认的mysql数据库文件目录:/www/wdlinux/mysql/var.具体操作步骤如下:
把备份好的数据库下载到本地,然后在需要搬迁网站还原数据的时候,先建立数据库用户,然后需要先暂停数据库链接。
service
mysqld
stop
然后把我们备份好的数据库压缩包上传到所在当前MYSQL版本中的var目录中对应的数据库名称中,需要解压到当下文件。
service
mysqld
restart
然后还需要重启MYSQL链接。
备注:这样备份MySQL感觉很麻烦,可以借用第三方工具来备份MySQL,如多备份、帝国备份王之类的