it编程 > 数据库 > Mysql

MySQL逻辑备份的实现步骤

7人参与 2025-03-05 Mysql

mysql 的逻辑备份指的是使用 sql 语句备份数据库的结构和数据,而不是直接备份数据库文件。通常使用 mysqldump 工具进行逻辑备份。

一.mysqldump

mysqldump是最常用的逻辑备份工具,能够生成sql脚本文件,这些文件可以用来重建数据库结构和数据。

基本命令:

mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件.sql]

参数选项:

示例

备份整个数据库 

mysqldump -u root -p mydatabase > mydatabase_backup.sql

备份多个数据库 

mysqldump -u root -p --databases db1 db2 > multi_database_backup.sql

备份所有数据库 

mysqldump -u root -p --all-databases > all_databases_backup.sql

仅备份数据库结构

mysqldump -u root -p --no-data mydatabase > mydatabase_structure_backup.sql

仅备份特定表

mysqldump -u root -p mydatabase table1 table2 > mydatabase_tables_backup.sql

添加选项以有效处理锁表问题

mysqldump -u root -p --single-transaction --quick --lock-tables=false mydatabase > mydatabase_backup.sql

恢复数据

恢复数据库

语法

mysql -u [用户名] -p[密码] [数据库名] < [备份文件.sql]

示例

mysql -u root -p mydatabase < mydatabase_backup.sql

恢复库中的表 

mysqldump -u root -p[密码] [库名] [表名] > staff_backup.sql

使用source恢复 

首先登录到mysql中,在mysql中使用下述语法恢复

source 文件路径;

例: 

source /path/to/employees_backup.sql;

注意事项

二. mysqlpump

mysqlpump是mysql 5.7引入的备份工具,支持多线程,能够更快地进行备份。它是 mysqldump 的增强版本。

mysqlpump 特点

基本命令:

mysqlpump -u [用户名] -p[密码] [数据库名] > [备份文件.sql]

常用选项:

示例

备份单个数据库

mysqlpump -u root -p mydatabase > mydatabase_backup.sql

备份多个数据库 

mysqlpump -u root -p --databases db1 db2 > multi_database_backup.sql

备份所有数据库

mysqlpump -u root -p --all-databases > all_databases_backup.sql

并发处理

mysqlpump -u root -p --default-parallelism=4 --databases db1 db2 > multi_database_backup.sql

使用 --default-parallelism 参数可以设定并发线程数,加快备份速度。 

过滤表

mysqlpump -u root -p mydatabase --exclude-tables=table1,table2 > mydatabase_backup.sql

使用 --exclude-tables 可以排除特定的表 

仅备份表结构

mysqlpump -u root -p mydatabase --skip-dump-data > mydatabase_structure_backup.sql

压缩备份文件

mysqlpump -u root -p mydatabase | gzip > mydatabase_backup.sql.gz

备份数据目录

mysqlpump --users --routines --databases db1 db2 > backup_with_users_routines.sql

使用 --users 备份用户账户,使用 --routines 备份存储函数和存储过程。

恢复数据库

解压缩备份文件

gunzip < mydatabase_backup.sql.gz | mysql -u root -p mydatabase

恢复备份

mysql -u [用户名] -p [数据库名] < [备份文件.sql]

示例

mysql -u root -p mydatabase < mydatabase_backup.sql

注意事项

逻辑备份的优缺点

优点

缺点

只备份表数据扩展

/var/lib/mysql-files 是 mysql 默认用于存储导出的文件的目录。这个目录通常用于 select into outfile 等操作所生成的文件。

mysqldump -n

介绍

mysqldump 是一个用于备份 mysql 数据库的工具。-n 参数让你只备份表中数据,不包括表结构。备份得到的文件是纯 sql 语句,可以用来恢复数据。

举例

场景: 有一个名为 employees 的数据库,其中包含 staff 表。备份 staff 表中的数据,但不包括表结构。

步骤:

进入命令行。

执行以下命令:

mysqldump -u root -p[密码] --no-create-info employees staff > staff_data_only.sql

3.结果: 生成的 staff_data_only.sql 文件内容:

insert into `staff` (`id`, `name`, `position`, `salary`) values (1, 'alice', 'manager', 50000);
insert into `staff` (`id`, `name`, `position`, `salary`) values (2, 'bob', 'engineer', 40000);
insert into `staff` (`id`, `name`, `position`, `salary`) values (3, 'charlie', 'technician', 30000);

恢复:

source /path/to/staff_data_only.sql;

select into outfile

介绍

select into outfile 是一条sql语句,用于将查询结果导出到文件中。文件格式可以根据需要来定义(如csv格式,也可以是xlsx结尾的格式),通常用于数据分析和传输。

举例

1.场景: 有一个名为 employees 的数据库,其中包含 staff 表。导出 staff 表中的数据作为csv文件来分析。

2.步骤:

进入 mysql 客户端。

执行以下 sql 语句:

select * from staff into outfile '/var/lib/mysql-files/staff_data.csv'
fields terminated by ',' 
enclosed by '"'
lines terminated by '\n';

命令解读(也可以使用默认,后面就不用那么多指定要求语句了):
-- 从 staff 表中选择所有列和行
select * from staff 

-- 将查询结果写入指定路径的文件中
into outfile '/var/lib/mysql-files/staff_data.csv'

-- 每个字段(列)的数据使用逗号分隔
fields terminated by ',' 

-- 每个字段的值都用双引号包围
enclosed by '"'

-- 每行记录之间以换行符分隔
lines terminated by '\n';

3.结果: 生成的 staff_data.csv 文件内容:

    "1","alice","manager","50000"
    "2","bob","engineer","40000"
    "3","charlie","technician","30000"

恢复:

      load data infile '/var/lib/mysql-files/staff_data.csv'
      into table staff
      fields terminated by ',' 
      enclosed by '"'
      lines terminated by '\n';

总结

用途不同:

恢复指定表:

便捷性和灵活性:

到此这篇关于mysql逻辑备份的实现步骤的文章就介绍到这了,更多相关mysql逻辑备份内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Nginx中location实现多条件匹配的方法详解

03-05

MySQL高可用与扩展方式

03-05

MySQL DATE_SUB()函数的实现示例

03-05

MySQL5.7.35双主搭建的实现

03-05

MySQL修改密码的四种方式详解

03-06

MySQL中如何开启二进制日志(Binlog)

03-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论