Linux-MySQL数据备份

一、导出

1、导出完整数据:表结构+数据

mysqldump -u用户名 -p 数据库名 > 数据库名.sql

如:mysqldump -uroot -p jek_release_20180815 > /home/databaseBackup/jek_release_20180815.sql

 

 

2、只导出表结构

mysqldump -u用户名 -p -d 数据库名 > 数据库名.sql

如:mysqldump -uroot -p -d jek_dev > /home/databaseBackup/jek_dev.sql

 

3、使用 SELECT ... INTO OUTFILE 语句导出数据

如:mysql>select * from doctor into ourfile ‘/home/databaseBackup/doctor.txt’;

 

4、Mysqldump全备

由于Mysql数据库默认的为MyISAM存储引擎所以只有使用温备(备份同时仅支持读请求)进行,所以我们要为所有数据库添加读锁

mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql

解析:–lock-all-tables表示为所有表施加读锁;–master-data=2表示在备份文件中记录当前二进制日志的位置;–events表示备份数据的同时备份时间调度器代码;–routines表示备份数据的同时备份存储过程和存储函数;–all-databases表示备份所有库。

 

二、导入

1、使用 mysql 命令导入

mysql -u用户名 -p 数据库名 < 数据库名.sql

如:mysql -uroot -p jek_release_temp < /home/databaseBackup/jek_release_20180815.sql

2、使用 source 命令导入

使用 source 命令需要我们先登录到 mysql 中,并创建一个空的数据库:

mysql> create database abc;      # 创建数据库

mysql> use abc;                  # 使用已创建的数据库

mysql> set names utf8;           # 设置编码

mysql> source /home/databaseBackup/abc.sql  # 导入备份数据库

 

 

三、复制表(结构+数据)

1.只复制表结构到新表

create table assess_stroke_temp like assess_stroke   

create table assess_stroke_temp select * from assess_stroke where 1=2;

PS:第一种复制方式包含主键类型和自增方式,第二种不会。

 

  1. 复制表结构及数据到新表

create table assess_stroke_temp select * from assess_stroke;

 

  1. 复制旧表的数据到新表(假设两个表结构一样)

insert into assess_stroke_temp select * from assess_stroke;

 

  1. 复制旧表的数据到新表(假设两个表结构不一样)

Insert into assess_stroke_temp(a, b) select c, d from assess_stroke;

posted on 2018-08-19 16:51  shmily广  阅读(99)  评论(0)    收藏  举报