1.数据备份
按期的备份数据库,使得在不测状况发作的时刻,只管的削减丧失。
1.运用mysqldump敕令备份
mysqldump是MySQL供应的一个数据库备份东西,mysqldump敕令实行的时刻,将数据库备份成一个文本文件,该文件中包含了多个CREATE 和INSERT语句,运用这些语句能够重新建立表和插进去数据;
【运用mysqldump备份单个数据库中】
mysqldump -u user -h host -p password dbname>filename.sql
【运用mysqldump备份数据库中的指定表】
mysqldump -u user -h host -p password dbname[tbname,[tbname…]]>filename.sql
【运用mysqldump备份多个数据库】
mysqldump -u user -h host -p password --databases[dbname,[dbname…]]>filename.sql
运用--databases参数以后,必需指定最少一个数据库的称号,多个数据库之间运用空格离隔;
【备份体系中一切的数据库】
mysqldump -u user -h host -p password --all-databases>filename.sql
提醒:假如在效劳器上举行备份,而且表均为MyISAM,应斟酌运用mysqlhotcopy,由于能够更快的举行备份和恢复;
2.直接复制悉数数据库目次
由于MySQL表保存为文件体式格局,所以能够直接复制MySQL数据库的存储目次以及文件举行备份。
这是一种简朴、疾速、有用的备份体式格局,要想坚持备份的一致性,备份前须要对相干表实行LOCK TABLES 操纵,然后对表实行FLUSH TABLES(确保最先备份前将一切激活的索引页写入硬盘)。如许当复制数据库目次的文件时,许可其他的用户继承查询表。
这类要领对InnoDB存储引擎的表不实用。运用这类要领备份数据最好复原到雷同版本的效劳器中,差别版本能够不兼容;
3.运用mysqlhotcopy东西疾速备份
mysqlhotcopy是一个Perl剧本。
只能运转在数据库目次地点的机械上,而且只能备份MyISAM和ARCHIVE范例的表;
2.数据复原
1.运用MySQL敕令复原
mysql -u username -p [dbname] < filename.sql
注重:假如filename.sql文件为mysqldump东西建立的包含建立数据库语句的文件,实行的时刻不须要指定数据库名;
假如已登录到MySQL效劳器,还能够运用source敕令导入SQL文件。
source filename
提醒:实行source敕令之前,必需运用use语句挑选数据库。不然,恢复历程中会涌现毛病;
2.直接复制到数据库目次
假如数据库经由过程复制数据库文件备份,能够直接复制备份的文件到MySQL数据目次下完成复原。
经由过程该体式格局复原的时刻,必需坚持备份数据库和待复原的数据库效劳器的主版本号雷同。而且这类体式格局只是对MyISAM引擎的表有用,关于InnoDB引擎的表不可用;
实行复原之前封闭MySQL效劳,将备份的文件或许目次掩盖MySQL的data目次,启动MySQL效劳。
关于Linux/Unix操纵体系来说,复制完文件须要将文件的用户或许用户组更改成mysql运转的用户和组,平常用户是mysql,组也是mysql;
3.mysqlhotcopy疾速恢复
mysqlhotcopy备份以后的文件也能够用来恢复数据库,在MySQL效劳器住手运转的时刻,将备份的数据库文件复制到MySQL寄存的位置(MySQL的data文件夹),重新启动MySQL效劳即可。
假如以根用户实行该操纵,必需指定数据库文件的一切者
chown -R mysql.mysql /var/lib/mysql/dbname cp -R /usr/backup/test usr/local/mysql/data
实行完该语句,重启效劳器,MySQL将恢复到备份状况
提醒:假如须要恢复的数据库已存在,则在运用DROP语句删除已存在的数据库以后,恢复才够胜利,别的MySQL差别版本之间必需兼容;
3.数据库迁徙
数据库迁徙就是把数据从一个体系挪动到另一个体系上。数据迁徙有以下缘由:
1.雷同版本的MySQL数据库之间的迁徙
雷同版本的MySQL数据库之间的迁徙就是指在主版本号雷同的MySQL数据库之间举行数据库挪动。
举例:
将www.abc.com主机上的MySQL数据库悉数迁徙到www.bcd.com主机上:
mysqldump -h www.abc.com -u root -ppassword dbname | mysql -h www.bcd.com -uroot -ppassword
申明:
mysqldump导入的数据直接经由过程管道符|,传给mysql敕令导入到主机www.bcd.com数据库中,dbname为须要迁徙的数据库称号,假如须要迁徙悉数的数据库,能够运用参数 --all-databases
2.差别版本的MySQL数据库之间的迁徙
MySQL效劳器升级的时刻,须要先住手效劳,然后卸载旧版本,并装置新版本MySQL,这类更新要领很简朴,假如想保存旧版本中的用户接见掌握信息,须要备份MySQL中的mysql数据库,在新版本MySQL装置完成以后,重新读入mysql备份文件中的信息;
旧版本与新版本的字符集差别时,迁徙历程须要对默许字符集举行修正,不然能够没法平常显现效果;
关于InnoDB引擎的表,平常只能运用mysqldump东西将数据导出,然后运用mysql敕令导入到目的效劳器上。
重新版本向旧版本迁徙数据的时刻,须要迥殊的警惕,最好运用mysqldump敕令导出,然后导入目的数据库中;
3.差别数据库之间的迁徙
数据库迁徙能够运用一些东西,例如在Windows体系下,能够运用MyODBC完成MySQL和SQL Server之间的迁徙。
MySQL官方供应的东西MySQL Migration Toolkit也能够完成在差别数据库间举行数据迁徙;
4.表的导出和导入
MySQL数据库中的数据能够导出成SQL文本文件、xml文件或许HTML文件。
1.运用SELECT…INTO OUTFILE导出文本文件
MySQL数据库导出数据的时刻,许可运用包含导出定义的SELECT语句举行数据导出操纵。该文件被建立到效劳器主机上,因而必需具有文件写入权限(FILE权限),才运用此语法。
语法花样:
SELECT columnlist FORM table WHERE condition INTO OUTFILE ‘filename’ [OPTIONS]
[OPTIONS]选项:
● FIELDS TERMINATED BY ‘value’
● FIELDS [OPTIONALLY] ENCLOSED BY ‘value’
● FIELDS ESCAPED BY ‘value’
● LINES STARTING BY ‘value’
● LINES TERMINATED BY ‘value’
申明:filename不能是一个已存在的文件;
OPTIONS部份语法包含FIELDS部份的语法和LINES子句,其能够的取值有:
FIELDS TERMINATED BY ‘value’:
设置字段之间的分开字符,能够为单个或许多个字符,默许状况下为制表符‘\t’
FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:
设置字段的围困字符,只能为单个字符,假如运用了OPTIONALLY,则只要CHAR和VERCHAR等字符数据字段被包含;
FIELDS ESCAPED BY ‘value’:
设置怎样写入或许读取特别字符,只能为单个字符,即设置转义字符,默许值为“\”
LINES STARTING BY ‘value’:
设置每行数据最先字符,能够为单个或许多个,默许不运用任何字符
LINES TERMINATED BY ‘value’:
设置每行数据末端的字符 能够为单个或许多个字符,默许值为‘\n’;
注重:FIELDS和LINES两个子句是可选的,假如同时指定,FIELDS必需位于LINES的前面;
2.运用mysqldump敕令导出文本文件
mysqldump东西不仅能够将数据导出为包含CREATE、INSERT的SQL文件,也能够导出为纯文本文件;
mysqldump -T path-u root -p dbname [tables] [OPTIONS]
--OPTIONS选项:
● --fields-terminated-by=value
● --fields-enclosed-by=value
● --fields-optionally-enclosed-by=value
● --fields-escaped-by=value
● --lines-terminated-end-by=value
申明:只要指定了T参数才够导出为纯文本文件;path示意导出数据的目次;tables为指定要导出表的称号;假如不指定,将导出数据库dbname中的一切的表;
[options]取值:
● --fields-terminated-by=value:
设置字段之间的分开字符,能够为单个或许多个字符,默许状况下为制表符‘\t’
● --fields-enclosed-by=value:
设置字段的围困字符;
● --fields-optionally-enclosed-by=value:
设置字段的围困字符,只能为单个字符,假如运用了OPTIONALLY,则只要CHAR和VERCHAR等字符数据字段被包含;
● --fields-escaped-by=value:
掌握怎样写入或许读取特别字符,只能为单个字符,及设置转义字符,默许为反斜线“\”;
● --lines-terminated-end-by=value:
设置每行数据末端的字符,能够为单个或许多个字符,默许值为‘\n’
3.运用MySQL敕令导出文本文件
mysql是一个功用雄厚的东西敕令,运用MySQL还能够在敕令行形式下实行SQL指令将查询效果导入到文本文件中。比拟mysqldump,MySQL东西导出的效果可读性更强。
假如MySQL效劳器是一个零丁的机械,用户是在一个client上举行操纵,用户要把数据导入到client机械上,能够运用mysql -e语句;
运用MySQL导出数据文本文件语句的基础花样以下:
mysql -u root -p --execute=”SELECT语句” dbname > filename.txt
运用MySQL敕令还能够指定查询效果的显现花样:
假如某行纪录字段许多,能够一行不能完整显现,能够运用--vartical参数,将每条纪录分为多行显现;
【将查询效果导出到HTML文件中】
mysql -u root -p --html --execute=”SELECT语句” dbname > filename.html
【将查询效果导出到xml文件中】
mysql -u root -p --xml --execute=”SELECT语句” dbname > filename.xml
4.运用LOAD DATA INFILE体式格局导入文本文件
LOAD DATA INFILE 语句用于高速的从一个文本文件中读取行,并装入一个表中。文件称号必需为笔墨字符串。
LOAD DATA INFILE ‘途径+文件名.txt’ INTO TABLE tablename [OPTIONS] [IGNORE number LINES]
注重:假如导出的.txt文件中指定了一些特别的字符,因而复原语句中也要指定这些字符,以确保复原以后数据的完整性和正确性;
--OPTIONS选项
● FIELDS TERMINATED BY ‘value’
● FIELDS [OPTIONALLY] ENCLOSED BY ‘value’
● FIELDS ESCAPED BY ‘value’
● LINES STARTING BY ‘value’
● LINES TERMINATED BY ‘value’
能够看到LOAD DATA 语句中,关键字INFILE背面的filename文件为导入数据的泉源;
tablename示意待导入的数据表称号;
OPTIONS部份语法包含FIELDS部份的语法和LINES子句,其能够的取值有:
FIELDS TERMINATED BY ‘value’:
设置字段之间的分开字符,能够为单个或许多个字符,默许状况下为制表符‘\t’
FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:
设置字段的围困字符,只能为单个字符,假如运用了OPTIONALLY,则只要CHAR和VERCHAR等字符数据字段被包含;
FIELDS ESCAPED BY ‘value’:
设置怎样写入或许读取特别字符,只能为单个字符,即设置转义字符,默许值为“\”
LINES STARTING BY ‘value’:
设置每行数据最先字符,能够为单个或许多个,默许不运用任何字符
LINES TERMINATED BY ‘value’:
设置每行数据末端的字符 能够为单个或许多个字符,默许值为‘\n’;
[IGNORE number LINES]
选项示意疏忽文件最先处的行数,number示意疏忽的行数。实行LOAD DATA语句须要FILE权限;
5.运用mysqlimport敕令导入文本文件
运用mysqlimport敕令能够导入文本文件,而且不须要登录MySQL客户端。
运用mysqlimport语句须要指定所需的选项、导入的数据库称号以及导入的数据文件的途径和称号。
mysqlimport敕令的基础语法以下:
mysqlimport -u root -p dbname filename.txt [OPTIONS]
[options]取值:
● --fields-terminated-by=value:
设置字段之间的分开字符,能够为单个或许多个字符,默许状况下为制表符‘\t’
● --fields-enclosed-by=value:
设置字段的围困字符;
● --fields-optionally-enclosed-by=value:
设置字段的围困字符,只能为单个字符,假如运用了OPTIONALLY,则只要CHAR和VERCHAR等字符数据字段被包含;
● --fields-escaped-by=value:
掌握怎样写入或许读取特别字符,只能为单个字符,及设置转义字符,默许为反斜线“\”;
● --lines-terminated-end-by=value:
设置每行数据末端的字符,能够为单个或许多个字符,默许值为‘\n’
● --ignore-lines=n
疏忽数据文件的前n行;
注重:mysqlimport敕令不能指定导入数据库的表称号,数据表的称号由导入文件称号决议,即文件名作为表名,导入数据之前该表必需存在。
相干引荐:
mysql 数据库 备份复原敕令
Mysql数据库备份和复原敕令备忘
以上就是mysql备份复原库敕令要领剖析(长文)的细致内容,更多请关注ki4网别的相干文章!