MySql数据库备份的几种方式
mysqldump工具备份
备份整个数据库
$>mysqldump-uroot-hhost-pdbname>backdb.sql
备份数据库中的某个表
$>mysqldump-uroot-hhost-pdbnametbname1,tbname2>backdb.sql
备份多个数据库
$>mysqldump-uroot-hhost-p--databasesdbname1,dbname2>backdb.sql
备份系统中所有数据库
$>mysqldump-uroot-hhost-p--all-databases>backdb.sql
直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份
windowns:installpath/mysql/data
linux:/var/lib/mysql
在复制前需要先执行如下命令:
MYSQL>LOCKTABLES; #在复制过程中允许客户继续查询表, MYSQL>FLUSHTABLES; #将激活的索引页写入硬盘。
mysqlhotcopy工具备份
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。
要使用该备份方法必须可以访问备份的表文件。
$>mysqlhotcopy-uroot-pdbname/path/to/new_directory; #将数据库复制到new_directory目录。
mysql命令导入sql文件还原
$>mysql-uroot-p[dbname]sourcebackup.sql; #执行source命令前需要先选择数据库。
直接复制数据库目录还原
注:该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。
- 关闭mysql服务。
- 将备份的文件或目录覆盖mysql的data目录。
- 启动mysql服务。
- 对于linux系统,复制完文件后需要将文件的用户和组更改为mysql运行的用户和组。
mysqlhotcopy快速恢复
停止mysql服务,将备份数据库文件复制到存放数据的位置(mysql的data文件夹),重先启动mysql服务即可(可能需要指定数据库文件的所有者)。
$>cp-R/usr/backup/test/usr/local/mysql/data #如果恢复的数据库已经存在,则使用DROP语句删除已经存在的数据库之后,恢复才能成功,还需要保证数据库版本兼容。
相同版本数据库之间迁移
$>mysqldump-hwww.abc.com-uroot-ppassworddbname| $>mysqldump-hwww.bcd.com-uroot-ppassword #将服务器www.abc.com的数据库dbname迁移到服务器www.bcd.com的相同版本数据库上。
不同版本的mysql数据库之间的迁移
备份原数据库。
卸载原数据库。
安装新数据库。
在新数据库中还原备份的数据库数据。
数据库用户访问信息需要备份mysql数据库。
默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。
不同数据库之间的迁移
MyODBC工具实现MySQL和SQLServer之间的迁移。
MySQLMigrationToolkit工具。
表的导出和导入
SELECT......INTOOUTFILE导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。
MYSQL>SELECT......INTOOUTFILEfilename[OPTIONS] MYSQL>SELECT*FROMtest.personINTOOUTFILE"C:\person0.txt"; #将表person里的数据导入为文本文件person0.txt。
mysqldump文件导出文本文件(和INTOOUTFILE不一样的是该方法所有的选项不需要添加引号)
$>mysqldump-Tpath-uroot-pdbname[tables][OPTIONS] #-T参数表明导出文本文件。path导出数据的目录。 $>mysqldump-TC:\testperson-uroot-p #将test表中的person表导出到文本文件。执行成功后test目录下会有两个文件,person.sql和person.txt
mysql命令导出文本文件
MYSQL>mysql-uroot-p--execute="SELECT*FROMperson;"test>C:\person3.txt; #将test数据库中的person表数据导出到person3.txt文本文件中。--vartical参数可以将一行分为多行显示。 MYSQL>mysql-uroot-p--vartical--execute="SELECT*FROMperson;"test>C:\person3.txt; #--html将表导出为html文件,--xml文件将表导出为xml文件
LOADDATAINFILE导入文本文件
MYSQL>LOADDATAINFILE'filename.txt'INTOTABLEtablename[OPTIONS][IGNOREnumberLINES]; #[IGNOREnumberLINES]表示忽略行数 MYSQL>LOADDATAINFILE'C:\person0.txt'INTOTABLEtest.person;
mysqlimport导入文本文件
$>mysqlimport-uroot-pdbnamefilename.txt[OPSTONS] #导入的表名有文件名决定,导入数据之前表必须存在 $>mysqlimport-uroot-ptestC:\backup\person.txt #将数据导入到test数据库的person表中。
使用mysqlbinlog恢复数据
$>mysqlbinlog[option]filename|mysql-uuser-ppassword #filename为二进制日志文件, $>mysqlbinlog--stop-date="2013-03-3015:27:47"D:\MySQL\log\binlog\binlog.000008|mysql-uroot-ppassword #根据日志文件binlog.000008将数据恢复到2013-03-3015:27:47以前的操作。
启动二进制日志
log-bin=path/filename#日志文件存储目录和文件名 expire_log_days=10#日志自动删除时间 max_binlog_size=100M#日志文件最大大小
查看二进制日志
MYSQL>SHOWVARIABLESLIKE'log_%'; MYSQL>SHOWBINARYLOGS; $>mysqlbinlogfilename #filename为二进制日志文件名。
删除二进制日志
MYSQL>RESETMASTER;#删除所有二进制日志 MYSQL>PURGE{MASTER|BINARY}LOGSTO'log_name';#删除文件编号小于log_name编号的文件 MYSQL>PURGE{MASTER|BINARY}LOGSBEFORE'date';#删除指定日期以前的文件
暂时停止二进制日志(不需要重启mysql服务)
MYSQL>SETsql_log_bin={0|1}#暂停或启动二进制日志。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。