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:第一种复制方式包含主键类型和自增方式,第二种不会。
- 复制表结构及数据到新表
create table assess_stroke_temp select * from assess_stroke;
- 复制旧表的数据到新表(假设两个表结构一样)
insert into assess_stroke_temp select * from assess_stroke;
- 复制旧表的数据到新表(假设两个表结构不一样)
Insert into assess_stroke_temp(a, b) select c, d from assess_stroke;
浙公网安备 33010602011771号