使用命令行工具进行MySQL逻辑备份及还原

一、前言

对MySQL数据库及其表数据进行备份、还原时,可以采用很多MySQL的数据库管理工具来完成,比如Navicat、SQLyog,等等。但是个人觉得,作为优秀的程序员,很有必要掌握命令行完成相关的备份及还原。

二、备份

mysqldump命令

1. mysqldump命令语法

-- 以下为3种用法,更加详细的信息参考mysqldump的帮助手册
mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
mysqldump [OPTIONS] --all-databases [OPTIONS]

2. mysqldump命令常用选项

	1. --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。
	2. --all-databases, -A:备份所有数据库
	3. -h, --host: 主机名(IP地址或域名)
	4. -P, --port: 端口号,不写默认3306
	5. -u, --user: 用户名
	6. -p, --password: 密码
	7. -d, --no-data: 备份数据库的表时,只备份表结构,不包含表数据
	8. -t, --no-create-info : 备份数据库的表时,不备份表结构(建表语句),只包含表数据
	9. -X, --xml :备份的数据格式为xml文件

3. mysqldump命令使用示例

  1. 备份单个数据库的多个表结构和数据
-- 假设数据库服务器地址为192.168.1.10,端口为3306,数据库用户/密码为root/123456。现在需要备份数据库*db1*中的表*table1*、*table2*,并且将相关内容备份到文件test.sql中
mysqldump -h192.168.1.10 -P3306 -uroot -p123456 db1 table1 table2 > test.sql
  1. 备份多个数据库
-- 默认MySQL服务器地址为127.0.0.1,端口为3306
mysqldump -uroot -p --databases db1 db2 > backup.sql
> {回车后,手输入数据库密码进行备份操作}

-- 如果需要顺便导出存储过程,可以加上 -R 参数
mysqldump -uroot -p --databases db1 db2 -R > backup.sql
  1. 备份所有数据库
-- 默认MySQL服务器地址为127.0.0.1,端口为3306
mysqldump -uroot -p123456 --all-databases > all_db.sql

三、还原

mysql命令、source命令。还原单个数据库的多个表或者单个数据库时需要指定数据库,而还原多个数据库时不用指定数据库。

1. mysql命令使用示例

-- 执行前,需确保数据库db1已创建,否则会报类似错误“ERROR 1049 (42000): Unknown database 'db1'”。
-- 还原时,由于数据库大小不同,恢复还原处理时间也不同,请耐心等待处理
mysql -h192.168.1.10 -P3306 -uroot -p123456 db1 < test.sql

-- 注1:如果提示还没创建相应数据库,先执行脚本创建
create database if not exists db1 default character set utf8;

-- 注2:如果相应文件test.sql为mysqldump工具创建的含创建并使用数据库语句的文件,执行时无需指定数据库名
mysql -h192.168.1.10 -P3306 -uroot -p123456 < test.sql

2. source命令使用示例

-- 注意先登录MySQL服务器进入命令行界面,才能执行
mysql > create database db1; # 创建数据库[简单]
mysql > create database if not exists db1 default character set utf8; # 或创建数据库[推荐]
mysql > use db1; # 使用已创建的数据库
mysql > set names utf8; # 设置编码(必选,在中文语境下,很多时候编码默认为GBK,应根据实际情况设好编码,否则出现中文乱码问题)
mysql > source test.sql;

四、参考

  1. https://www.cnblogs.com/nancyzhu/p/8511389.html
  2. https://www.cnblogs.com/chevin/p/5683281.html
  3. https://blog.csdn.net/qq_41573234/article/details/80587887
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值