Mysql-数据备份与恢复


为什么要备份数据?

  1. 防止数据库意外崩溃或硬件损伤而导致的数据丢失
  2. 防止手误删库删表导致数据丢失

备份数据的方式

  1. 物理备份
  2. 逻辑备份(库、表)

备份数据的工具

  1. 利用navicate等第三方工具
  2. 利用mysql自带脚本(mysqldump 命令,由于mysqlhotcopy只能用于MyISAM,所以MySQL 5.7移除了 mysqlhotcopy 脚本)

mysqldump命令

mysqldump是MySQL自带的逻辑备份工具。

备份原理: 通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句

命令格式:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

备份所有数据库

mysqldump -h127.0.0.1 -P3306 -uroot -p --all-databases>local_all_databases.sql

备份指定数据库

mysqldump -h127.0.0.1 -P3306 -uroot -p --databases mysql_demo demo>mysql_demo_demo.sql

备份指定数据库指定表(多个表以空格间隔)

mysqldump -h127.0.0.1 -P3306 -uroot -p mysql_demo emp role>emp_role.sql

备份指定数据库排除某些表

mysqldump -h127.0.0.1 -P3306 -uroot -p mysql_demo --ignore-table=mysql_demo.emp --ignore-table=mysql_demo.emp_role_ref>ignore_emp_role_ref.sql

导出表数据

SELECT...INTO OUTFILE 语句基本格式如下:
SELECT 列名 FROM table [WHERE 语句] INTO OUTFILE '目标文件'[OPTIONS]
[OPTIONS] 为可选参数选项,OPTIONS 部分的语法包括 FIELDS 和 LINES 子句,其常用的取值有:
FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符,默认情况下为制表符‘\t’
FIELDS [OPTIONALLY] ENCLOSED BY '字符':设置字符来括上 CHAR、VARCHAR 和 TEXT 等字符型字段。如果使用了 OPTIONALLY 则只能用来括上 CHAR 和 VARCHAR 等字符型字段
FIELDS ESCAPED BY '字符':设置如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为‘\’
LINES STARTING BY '字符串':设置每行开头的字符,可以为单个或多个字符,默认情况下不使用任何字符
LINES TERMINATED BY '字符串':设置每行结尾的字符,可以为单个或多个字符,默认值为‘\n’ 

注: FIELDS 必须位于 LINES的前面

select * from dept into outfile 'E:/demo/dept.txt’;

select * from dept into outfile 'E:/demo/dept.txt' FIELDS TERMINATED BY  ',';

select * from dept into outfile 'E:/demo/dept.txt' FIELDS TERMINATED BY  ','  OPTIONALLY ENCLOSED BY '\“’;

select * from dept into outfile 'E:/demo/dept.txt' FIELDS TERMINATED BY  ','  OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\-';

数据恢复

基于备份恢复数据

mysql 命令语法格式如下:

    mysql -u username -p [dbname] < filename

dbname :数据库名称,该参数是可选参数。如果 filename 文件为 mysqldump 命令创建的包含创建数据库语句的文件,则执行时不需要指定数据库名。如果指定的数据库名不存在将会报错;
filename :备份文件的名称
mysql -uroot -p mysql_demo_copy < E:/demo/mysql_demo.log

soure 方法
mysql>source  E:/demo/mysql_demo.log;

基于binlog恢复数据

语法:

mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

mysqlbinlog D:\application\mysql-5.7.9-winx64\data\my-bin.000008 --start-position=859 --stop-position=1146| mysql -uroot –p

mysqlbinlog D:\application\mysql-5.7.9-winx64\data\my-bin.000008 --stop-position=1710| mysql -uroot -p

声明:微默网|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Mysql-数据备份与恢复


不以物喜,不以己悲! 不忘初心,方得始终!