博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL数据库的备份及恢复
阅读量:3758 次
发布时间:2019-05-22

本文共 3619 字,大约阅读时间需要 12 分钟。

采用mysqldump工具备份

mysqldump工具的备份和恢复

备份整个数据库

$> mysqldump -u root -h host -p dbname > backdb.sql

备份数据库中的某个表

$> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql

备份多个数据库

$> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql

备份系统中所有数据库

$> mysqldump -u root -h host -p --all-databases > backdb.sql

重新导回去只需要运行sql就行了

方法一、进入命令行

mysql –uroot –p -Dtest < /home/pearfl/create_table.sql

方法二、进入mysql控制台

source 【sql脚本文件的路径全名】

. 【sql脚本文件的路径全名】
直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份

windowns: installpath/mysql/datalinux: var/lib/mysql

在复制前需要先执行如下命令:

MYSQL> LOCK TABLES;

# 在复制过程中允许客户继续查询表,

MYSQL> FLUSH TABLES;

# 将激活的索引页写入硬盘。

mysqlhotcopy工具备份
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。

要使用该备份方法必须可以访问备份的表文件。

$> mysqlhotcopy -u root -p dbname path/to/new_directory;

#将数据库复制到new_directory目录。

mysql命令导入sql文件还原

$> mysql -u root -p [dbname] < backup.sql

# 执行前需要先创建dbname数据库,如果backup.sql是mysqldump创建的备份文件则执行是不需要dbname。

MYSQL> source backup.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 -h www.abc.com -uroot -p password dbname | $> mysqldump -h www.bcd.com -uroot -p password

# 将服务器www.abc.com的数据库dbname迁移到服务器www.bcd.com的相同版本数据库上。

不同版本的mysql数据库之间的迁移
备份原数据库。

卸载原数据库。

安装新数据库。

在新数据库中还原备份的数据库数据。

数据库用户访问信息需要备份mysql数据库。

默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。

不同数据库之间的迁移。

MyODBC工具实现MySQL和SQL Server之间的迁移。

MySQL Migration Toolkit工具

表的导出和导入

SELECT …… INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。

MYSQL> SELECT ...... INTO OUTFILE filename [OPTIONS]MYSQL> SELECT * FROM test.person INTO OUTFILE "C:\person0.txt";

# 将表person里的数据导入为文本文件person0.txt。

mysqldump文件导出文本文件(和INTO OUTFILE不一样的是该方法所有的选项不需要添加引号)

$> mysqldump -T path -u root -p dbname [tables] [OPTIONS]

# -T参数表明导出文本文件。path导出数据的目录。

$> mysqldump -T C:\test person -u root -p

# 将test表中的person表导出到文本文件。执行成功后test目录下会有两个文件,person.sql和person.txt

mysql命令导出文本文件

MYSQL> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt;

# 将test数据库中的person表数据导出到person3.txt文本文件中。–vartical参数可以将一行分为多行显示。

MYSQL> mysql -u root -p --vartical --execute="SELECT * FROM person;" test > C:\person3.txt;

# --html将表导出为html文件,–xml文件将表导出为xml文件

LOAD DATA INFILE导入文本文件

`MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS]` [IGNORE number LINES];

# [IGNORE number LINES]表示忽略行数

MYSQL> LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person;mysqlimport导入文本文件$> mysqlimport -u root -p dbname filename.txt [OPSTONS]

# 导入的表名由文件名决定,导入数据之前表必须存在

$> mysqlimport -uroot -p test C:\backup\person.txt

# 将数据导入到test数据库的person表中。

使用mysqlbinlog恢复数据

$> mysqlbinlog [option] filename | mysql -u user -p password

# filename为二进制日志文件,

$> mysqlbinlog --stop-date="2013-03-30 15:27:47" D:\MySQL\log\binlog\binlog.000008 | mysql -u root -p password

# 根据日志文件binlog.000008将数据恢复到2013-03-30 15:27:47以前的操作。

启动二进制日志

log-bin = path/filename  #日志文件存储目录和文件名expire_log_days = 10  #日志自动删除时间max_binlog_size = 100M  # 日志文件最大大小

查看二进制日志

MYSQL> SHOW VARIABLES LIKE 'log_%';MYSQL> SHOW BINARY LOGS;$> mysqlbinlog filename

# filename为二进制日志文件名。

删除二进制日志```javaMYSQL> RESET MASTER; #删除所有二进制日志MYSQL> PURGE {
MASTER | BINARY} LOGS TO 'log_name'; #删除文件编号小于log_name编号的文件MYSQL> PURGE {
MASTER | BINARY} LOGS BEFORE 'date'; #删除指定日期以前的文件

暂时停止二进制日志(不需要重启mysql服务)

MYSQL> SET sql_log_bin = {
0|1} #暂停或启动二进制日志。

转载地址:http://riesn.baihongyu.com/

你可能感兴趣的文章
Anaconda和PyCharm的下载、安装和配置
查看>>
Mockito单元测试简述
查看>>
GUAVA的常用方法汇总
查看>>
装饰器和门面设计模式介绍
查看>>
创建型模式——克隆模式
查看>>
JVM关闭和Hook钩子
查看>>
线程中断处理
查看>>
消息队列积压问题处理
查看>>
并行流使用注意事项
查看>>
泛型擦除机制及相关问题
查看>>
Jackson日期反序列化时区问题
查看>>
《设计模式》
查看>>
单例设计模式
查看>>
面试题集锦(一)
查看>>
Calendar类方法——编写万年历的两种方式
查看>>
File类的使用——遍历所有文件及子文件以及遍历删除
查看>>
内存流的使用——基本使用
查看>>
RandomAccessFile 类的使用——基本使用
查看>>
Properties实现类——基本使用
查看>>
结构型模式——装饰者设计模式
查看>>