本文主要介绍了MySql数据库备份的几种方式,通过实例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
Mysqldump工具备份
备份整个数据库
$ MySQL dump-u root-h host-p dbname backdb . SQL
备份数据库中的表
$ MySQL dump-u root-h host-p dbname tbname 1,tbname2 backdb.sql
备份多个数据库
$ MySQL dump-u root-h host-p-databases dbname 1,dbname2 backdb.sql
备份系统中的所有数据库。
$ MySQL dump-u root-h host-p-all-databases backdb . SQL
直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份
windowns:installpath/MySQL/data
linux: /var/lib/mysql
在复制之前,您需要执行以下命令:
MYSQL锁表;
#允许客户在复制过程中继续查询表,
MYSQL刷新表;
#将激活的索引页写入硬盘。
mysqlhotcopy工具备份
备份数据库或表的最快方法只能在数据库目录所在的计算机上运行,并且只能备份MyISAM类型的表。
要使用这种备份方法,您必须能够访问备份的表文件。
$ mysqlhotcopy-u root-p dbname/path/to/new _ directory;
#将数据库复制到new_directory目录。
mysql命令导入sql文件还原
$ MySQL-u root-p[数据库名] backup.sql
# dbname数据库需要在执行前创建。如果backup.sql是mysqldump创建的备份文件,则执行时不需要dbname。
MYSQL源码backup.sql
#在执行source命令之前,您需要选择一个数据库。
直接复制数据库目录还原
注意:此方法必须确保原始数据库和要恢复的数据库的主版本号相同,并且仅适用于MyISAM引擎的表。
关闭mysql服务。
在mysql的数据目录上覆盖备份的文件或目录。
启动mysql服务。
对于linux系统,复制完文件后,需要将文件的用户和组改为mysql运行的用户和组。
mysqlhotcopy快速恢复
停止mysql服务,将备份的数据库文件复制到存储数据的位置(mysql的data文件夹),再次启动mysql服务(可能需要指定数据库文件的所有者)。
$ CP-R/usr/backup/test/usr/local/MySQL/data
#如果还原的数据库已经存在,则必须使用DROP语句删除现有数据库,恢复才能成功,并且数据库版本必须兼容。
相同版本数据库之间的迁移
$ MySQL dump-h www.abc.com-u root-p密码数据库名|
$ mysqldump-h www.bcd.com-u root-p密码
#将www.abc.com服务器的数据库dbname迁移到www.bcd.com服务器的相同版本的数据库中。
不同版本的mysql数据库之间的迁移
备份原始数据库。
卸载原始数据库。
安装新的数据库。
在新数据库中恢复备份的数据库数据。
数据库用户需要备份mysql数据库来访问信息。
默认字符集问题,MySQL4.x使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据,需要更改默认字符集。
不同数据库之间的迁移
MyODBC工具实现了MySQL和SQL Server之间的迁移。
MySQL迁移工具包工具。
表的导出和导入
挑选.INTO OUTFILE导出文本文件。此方法只能导出到数据库服务器,并且导出的文件不能已经存在。
MYSQL选择.到输出文件文件名[选项]
MYSQL SELECT * FROM test.person到OUTFILE ' C:\ person 0 . txt ';
#将表person中的数据导入文本文件person0.txt
mysqldump文件导出一个文本文件(与INTO OUTFILE不同,该方法中的所有选项都不需要引号)
$ MySQL dump-T path-u root-p dbname[表][选项]
# -T参数表示文本文件已导出。路径导出数据的目录。
$ MySQL dump-T C:\ test person-u root-p
#将测试表中的person表导出到一个文本文件中。成功执行后,测试目录中会有两个文件,person.sql和person.txt
Mysql命令导出文本文件
MYSQL MYSQL-u root-p-execute=' SELECT * FROM person;'测试C:\ person 3 . txt;
#将人员表数据从测试数据库导出到person3.txt文本文件。- vartical参数可以显示多行中的一行。
MYSQL MYSQL-u root-p-vartical-execute=' SELECT * FROM person;'测试C:\人3。txt
# - html将表导出为超文本标记语言文件,- xml文件将表导出为可扩展标记语言文件
将数据装入文件导入文本文件
关系型数据库将文件'文件名. txt '中数据加载到表表名[选项][忽略行数];
#[忽略数字行]表示忽略行数
关系型数据库将文件" C:\person0.txt "中的数据加载到表测试人员中;
mysqlimport导入文本文件
$ MySQL import-u root-p dbname文件名。操作吨
# 导入的表名有文件名决定,导入数据之前表必须存在
$ mysqlimport -uroot -p测试C:\backup\person.txt
# 将数据导入到试验数据库的人表中。
使用mysqlbinlog恢复数据
$ mysqlbinlog[选项]文件名mysql -u用户密码
#文件名为二进制日志文件,
$ mysqlbinlog-stop-date=' 2013-03-30 15:27:47 ' D:\ MySQL \ log \ bin log \ bin log。000008 | MySQL-u root-p密码
# 根据日志文件binlog.000008将数据恢复到2013-03-30 15:27:47以前的操作。
启动二进制日志
日志箱=路径/文件名#日志文件存储目录和文件名
expire_log_days=10 #日志自动删除时间
max_binlog_size=100M #日志文件最大大小
查看二进制日志
关系型数据库显示日志_ % '这样的变量;
关系型数据库显示二进制日志;
$ mysqlbinlog文件名
#文件名为二进制日志文件名。
删除二进制日志
关系型数据库重置大师;#删除所有二进制日志
关系型数据库将{主|二进制}日志清除到”日志名称”;#删除文件编号小于日志名称编号的文件
关系型数据库在"日期"之前清除{主|二进制}日志;#删除指定日期以前的文件
暂时停止二进制日志(不需要重启mysql服务)
MYSQL SET sql_log_bin={0|1} #暂停或启动二进制日志。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。