mysql rem 还原命令_Mysql数据库备份与还原

9. Mysql数据库备份与还原

1. 备份的应用场景

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

2. mysqldump 命令备份数据

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

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

mysqldump --all-databases --master-data -u用户名 -p'密码' > dbdump.db

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

mysqldump -u用户名 -p密码 -h127.0.0.1 -P3306 数据库实例名称 > 备份文件.sql

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

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

-- 参数说明:

-h:指定访问主机

-P:指定端口号

-q:不缓冲查询,直接导出至标准输出

--add-locks :导出过程中锁定表,完成后回解锁。

-d :只导出表结构,不含数据

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

# 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 中的所有数据库的 表结构 以及 表数据

[root@server01 opt]# mysqldump --all-databases --master-data -uroot -p > dbdump.db

Enter password:

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

[root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306  test > test.sql

Enter password:

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

[root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306 --add-locks -q -d test > test.sql

Enter password:

3. source命令备份与还原

#还原格式:

SOURCE 导入文件的路径;

2.还原

要先登录

create database db1;

use db1;

source 路径/备份.sql;

执行这个sql脚本文件

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

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

4.1 备份 db1 数据库

[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数据库中所有的内容

mysql> drop database db1;

Query OK, 2 rows affected (0.02 sec)

4.3 创建一个新的db1数据库

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

mysql> create database db1 charset utf8;

Query OK, 1 row affected (0.01 sec)

4.4  选中数据库

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>

b5e1dfa98dcdb58d50c6cc111b088d94.png

1590461051865

4.5 使用SOURCE命令还原数据

-- 使用 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 命令来直接导入数据。

格式如下:

mysql -u用户名 -p密码 数据库名称 

执行示例如下:

[root@server01 opt]# mysql -uroot -p db1 

Enter password:

[root@server01 opt]#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值