Mysql数据库备份(逻辑备份)

准备三个测试表

表company.employee

create database company;
use company;
create table employee( 
emp_id int auto_increment primary key not null, 
emp_name varchar(50), 
age int, 
dept_id int);
insert into employee(emp_name,age,dept_id) values
('tianyun',19,200),
('tom',26,201),
('jack',30,201),
('alice',24,202),
('robin',40,200),
('natasha',28,204);
select * from employee;

表company.department

create table department(
dept_id int,
dept_name varchar(100)
);
insert into department values
(200,'hr'),
(201,'it'),
(202,'sale'),
(203,'fd');
select * from department;

表school.student

create database school;
use school;
create table student(
id int,
name varchar(30),
date varchar(10)
);
insert into student values
(1,'jack','Monday'),
(2,'tom','Tuesday'),
(3,'alice','Wednesday');
select * from student;

逻辑备份

备份的是建表、建库、插入等操作所执行SQL语句

不论是什么存储引擎,都可以用mysqldump备成SQL语句

速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份

1.1 常用备份选项

-A, --all-databases                                备份所有库

-B, --databases bbs test mysql           备份多个数据库

--no-data,-d                                         不导出任何数据,只导出数据库表结构

1.2 备份表

注:在Linux命令行操作

创建备份目录

mkdir /opt/back

备份单个表

mysqldump -uroot -p'Linyunxi@123' company employee > /opt/back/company.employee.back

备份多个表

mysqldump -uroot -p'Linyunxi@123' company employee department > /opt/back/company.emp_dep.back

1.3 备份库

备份单个库

mysqldump -uroot -p'Linyunxi@123' company > /opt/back/company.back

备份多个库

mysqldump -uroot -p'Linyunxi@123' -B company school > /opt/back/company_school.back

备份所有库

mysqldump -uroot -p'Linyunxi@123' -A > /opt/back/allbase.back

1.4 删除数据库和表

为保证数据一致性,应在恢复数据之前停止数据库对外的服务,停止binlog日志 因为binlog使用binlog日志恢复数据时也会产生binlog日志

为实验效果删除company和school两个数据库

show databases;

drop database company;
drop database school;
show databases;

1.5 恢复库

登陆mysql创建一个库

create database company;

在Linux命令行恢复

mysql -uroot -p'Linyunxi@123' company < /opt/back/company.back

登陆mysql查看

1.6 恢复表

登陆到刚才恢复的库中将其中的一个表删除掉

drop table employee;
show tables;

开始恢复

方式一(sql语句恢复)

source /opt/back/company.employee.back

show tables;

方式二(Linux命令行恢复)

mysql -uroot -p'Linyunxi@123' company < company.employee.back
1.7 备份及恢复表结构

备份表结构

mysqldump  -uroot -p'Linyunxi@123' -d company employee > /opt/back/emp.back

登陆数据库创建一个库

create database t1;

恢复表结构

mysql -uroot -p'Linyunxi@123' -D t1 < /opt/back/emp.back

登录数据库查看

1.8 数据的导入导出(没有表结构)

表的导出和导入只备份表内记录,不会备份表结构,需要通过mysqldump备份表结构,恢复时先恢复表结构,再导入数据

查询导入导出的目录

show variables like "secure_file_priv";

修改安全文件目录

        ①创建一个目录

mkdir /sql

        ②修改权限

chown mysql.mysql /sql

        ③编辑配置文件

vim /etc/my.cnf

        在[mysqld]里追加如下内容:

secure_file_priv=/sql

        ④重启mysql

systemctl restart mysqld

导出数据

select * from employee;

select * from employee into outfile '/sql/test.emp.back' fields terminated by ',' lines terminated by '\n';

解释:

fields terminated by ','         字段以逗号分割

lines terminated by '\n'        结尾换行

导入数据

delete from employee;

load data local infile "/sql/test.emp.back" into table employee fields terminated by ',' lines terminated by '\n';

注:如果将数据导入别的表,需要创建这个表并创建相应的表结构

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值