mysql学习笔记之十六(数据库维护)
来源:程序员人生 发布时间:2015-06-01 08:28:41 阅读次数:2760次
数据备份
数据损失缘由:存储介质鼓掌,用户操作毛病(误删除全部数据库),服务器完全瘫痪
1、文件复制
需要先停止服务器服务,在停止之前,履行flushtables将所有数据写入到数据文件,停止以后,将数据文件拷贝到其他地方
只合适MyISAM存储引擎,对其他引擎其实不适合
2、mysqldump
mysqldump将包括数据的表结构和数据内容保存在相应的文本文件。具体履行时,首先检查备份数据的表结构,在相应的文本文件中生成create语句。然后检查数据内容,在相应的文本文件中生成insert into 语句。将来需要进行还原时,只需要履行文本文件中的create和insert into
3种情势:
备份1个数据库
mysqldump -u username -p dname table1,table2,... >backupname.sql
不指定table则会备份全部数据库
">"两边要有空格。
例:
C:Users208⑴>mysqldump -u root -p123456 leetcode t_scores t_employee > D:AppServMySQLackupleetcode.sql
C:Users208⑴>mysqldump -u root -p123456 leetcode > D:AppServMySQLackupleetcode1.sql
mysqldump不能再mysql>后面输入,直接在dos窗口履行
备份多个数据库
mysqldump -u username -p --databases dbname1 dbname2 ... > backupname.sql
各个数据库之间不能加逗号直接用空格隔开就行
备份所有数据库
mysqldump -u username -p --all-databases > backupname.sql
all-databases是连在1起的。
数据还原
1、复制备份文件还原数据库
这类方式必须保证两个mysql数据库的主版本号1致,由于只有主版本号相同时,才能保证两个mysql数据库的文件类型是相同的
仅对MyISAM类型的表有效
主版本号,MySQL 5.5.21和MySQL 5.5.01主版本号是相同的,第1个数字是主版本号
2、mysql
mysql -u username -p [dbname]<backup.sql
指定dbname,则还原该数据库下的表,不指定,则还原备份文件中所有的数据库
导出
通过数据库中表的导入和导出操作,可以在mysql数据库服务器与其他数据库服务器间(sql server 、Oracle)轻松移动数据
导出:
将数据从mysql数据表里复制到文本文件
导入
将数据从文本文件加载到mysql数据库表里
1、select...into outfile
select [filename] from table_name [where condition] into outfile 'filename' [option]
两部份:普通查询语句(查询要导出的数据)和导出位置
option的取值:
fileds terminated by "string" 用来设置字段的分隔符字符串对象(string),默许为制表符
fields enclosed by "char" 用来设置括上字段值的字符符号,默许不使用任何符号
fields optionally enclosed by 'char' 用来括上char,varchar和text等字段的字符符号,默许不使用任何符号
fieles escaped by 'char' 设置转义字符的字符符号,默许情况下使用""字符
lines starting by 'char' 设置每行开头的字符符号,默许不使用任何符号
lines terminated by 'string' 设置每行结束的字符串符号,默许使用'
'
2、mysqldump
mysqldump -u root -p -T file_directory dbname tablename[option]
option的取值:
--fileds-terminated-by=string
--fileds-enclosed-by=char
--fileds-optionally-enclosed-by=char
--lines-terminated-by=string
导入
1、load data infile
load data[local] infile filename into table table_name[option]
local:指定在本地计算机中查找文本文件;
filename:用来指定文本文件的路径和名称;
tablename:用来指定表的名称
oprion的取值
fileds terminated by "string" 用来设置字段的分隔符字符串对象(string),默许为制表符
fields enclosed by "char" 用来设置括上字段值的字符符号,默许不使用任何符号
fields optionally enclosed by 'char' 用来括上char,varchar和text等字段的字符符号,默许不使用任何符号
fieles escaped by 'char' 设置转义字符的字符符号,默许情况下使用""字符
lines starting by 'char' 设置每行开头的字符符号,默许不使用任何符号
lines terminated by 'string' 设置每行结束的字符串符号,默许使用'
'
ignore n lines 实现疏忽文件的前n行记录
(字段列表) 实现根据字段列表中的字段温柔序来加载记录
set column=expr 用来设置列的转换条件,即所指定的列经过相应的转换后会被加载
2、mysqlimport
mysqlimport -u root -p [--local] dbname file_name[oiption]
option的取值:
--fileds-terminated-by=string
--fileds-enclosed-by=char
--fileds-optionally-enclosed-by=char
--lines-terminated-by=string
--ignrs-lines=n
注意:命令里没有指定导入到哪一个表里。依照书上的意思,依照文件名寻觅表,然后导入进去。
数据库迁移
1、相同版本间的mysql数据库之间的迁移
mysqldump -h hostname -u root -password=password1 --all-databases
|mysql -h hostname2 -u root -password=password2
备份和还原同时操作。
对相同版本间的mysql数据库之间的迁移,先使用mysqldump进行备份,然后使用mysql命令将备份文件还原到新的mysql数据库。
2、不同版本间的mysql数据库之间的迁移
低版本->高版本最是容易实现,由于高版本兼容低版本
对MyISAM的表
使用文件直接复制的方式或mysqlhotcopy
对InnoDB的表
使用mysqldump备份,使用mysql命令还原
3、不同数据库间的迁移
mysql->sql server :通过MyODBC实现迁移
mysql->oracle:先通过mysqldump命令导出sql文件,手动修改
sql中的create语句
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠