前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql数据库备份与还原

Mysql数据库备份与还原

作者头像
Devops海洋的渔夫
发布2022-01-17 14:26:44
1.7K0
发布2022-01-17 14:26:44
举报
文章被收录于专栏:Devops专栏Devops专栏

9. Mysql数据库备份与还原

1. 备份的应用场景

在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。

2. mysqldump 命令备份数据

我们在导出数据的时候会有不同的场景需求,大概有几种情况:

导出 mysql 中的所有数据库的 表结构 以及 表数据

代码语言:javascript
复制
mysqldump --all-databases --master-data -u用户名 -p'密码' > dbdump.db

导出 mysql 中某个单独数据库的 表结构 以及 表数据

代码语言:javascript
复制
mysqldump -u用户名 -p密码 -h127.0.0.1 -P3306 数据库实例名称 > 备份文件.sql

导出 mysql 中的数据库 表结构,不包含 表数据

代码语言:javascript
复制
mysqldump -u用户名 -p密码 -h127.0.0.1 -P3306 --add-locks -q -d 数据库实例名称 > 备份文件.sql

-- 参数说明:
-h:指定访问主机
-P:指定端口号
-q:不缓冲查询,直接导出至标准输出
--add-locks :导出过程中锁定表,完成后回解锁。
-d :只导出表结构,不含数据

2.1 使用 mysqldump 的 前提:需要开启 binlog 日志功能

代码语言:javascript
复制
# 1. 修改mysql的配置文件
vim /etc/my.cnf

[mysqld]
# binlog
# 配置log-bin后,必须配置server-id,MySQL才能启动;
# server-id在所有的主从服务之间要保证唯一;
log-bin=mysql-bin
server-id=1

# 2.配置完毕之后,重启mysql服务
service mysqld restart

2.2 导出 mysql 中的所有数据库的 表结构 以及 表数据

代码语言:javascript
复制
[root@server01 opt]# mysqldump --all-databases --master-data -uroot -p > dbdump.db
Enter password: 

2.3 导出 mysql 中某个单独数据库的 表结构 以及 表数据

代码语言:javascript
复制
[root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306  test > test.sql
Enter password: 

2.4 导出 mysql 中的数据库 表结构,不包含 表数据

代码语言:javascript
复制
[root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306 --add-locks -q -d test > test.sql
Enter password: 

3. source命令备份与还原

代码语言:javascript
复制
#还原格式:
SOURCE 导入文件的路径;

2. 还原
 要先登录
 create database db1;
 use db1;
 source 路径/备份.sql; 
  执行这个sql脚本文件

“注意:还原的时候需要先登录MySQL,并选中对应的数据库 ”

4. 备份、还原db1数据库中的数据

4.1 备份 db1 数据库

代码语言:javascript
复制
[root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306 db1 > db1.sql
Enter password: 
[root@server01 opt]# 
[root@server01 opt]# ls -ll -h db1.sql 
-rw-r--r-- 1 root root 3.3K Feb  8 15:12 db1.sql
[root@server01 opt]# 

4.2 删除db1数据库中所有的内容

代码语言:javascript
复制
mysql> drop database db1;
Query OK, 2 rows affected (0.02 sec)

4.3 创建一个新的db1数据库

导入数据之前,需要创建数据库。

代码语言:javascript
复制
mysql> create database db1 charset utf8;
Query OK, 1 row affected (0.01 sec)

4.4 选中数据库

代码语言:javascript
复制
mysql> use db1; -- 使用db1数据库
Database changed
mysql> 
mysql> select database(); -- 查看当前使用的数据库
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

mysql> 
mysql> show tables; -- 查看数据库中的表,当前没有表
Empty set (0.00 sec)

mysql> 

1590461051865

4.5 使用SOURCE命令还原数据

代码语言:javascript
复制
-- 使用 source 命令导入数据
mysql> source /opt/db1.sql;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

...
-- 查看当前使用的数据库为 db1
mysql> select database();
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

mysql> 
-- 查看当前db1中的数据库表,可以看到已经成功导入
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| product       |
| stu3          |
+---------------+
2 rows in set (0.00 sec)

mysql> 

5. mysql 命令导入数据

在上面我们使用 source 命令来还原数据,但是这个缺陷是要先进行 mysql 登录。这个命令如果写在 shell 脚本中还没那么方便。

那么我们可以使用 mysql 命令来直接导入数据。

格式如下:

代码语言:javascript
复制
mysql -u用户名 -p密码 数据库名称 < 备份文件

执行示例如下:

代码语言:javascript
复制
[root@server01 opt]# mysql -uroot -p db1 < db1.sql 
Enter password: 
[root@server01 opt]# 
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 9. Mysql数据库备份与还原
    • 1. 备份的应用场景
      • 2. mysqldump 命令备份数据
        • 2.1 使用 mysqldump 的 前提:需要开启 binlog 日志功能
        • 2.2 导出 mysql 中的所有数据库的 表结构 以及 表数据
        • 2.3 导出 mysql 中某个单独数据库的 表结构 以及 表数据
        • 2.4 导出 mysql 中的数据库 表结构,不包含 表数据
      • 3. source命令备份与还原
        • 4. 备份、还原db1数据库中的数据
          • 4.1 备份 db1 数据库
          • 4.2 删除db1数据库中所有的内容
          • 4.3 创建一个新的db1数据库
          • 4.4 选中数据库
          • 4.5 使用SOURCE命令还原数据
        • 5. mysql 命令导入数据
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档