Mysql数据库备份与还原
2021/6/18 19:34:26
本文主要是介绍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 | +------------+ row in set (0.00 sec) mysql> mysql> show tables; -- 查看数据库中的表,当前没有表 Empty set (0.00 sec) mysql>
![watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=](/upload/202106/18/202106181934259297.png)
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 | +------------+ row in set (0.00 sec) mysql> -- 查看当前db1中的数据库表,可以看到已经成功导入 mysql> show tables; +---------------+ | Tables_in_db1 | +---------------+ | product | | stu3 | +---------------+ rows in set (0.00 sec) mysql>
5. mysql 命令导入数据
在上面我们使用 source 命令来还原数据,但是这个缺陷是要先进行 mysql 登录。这个命令如果写在 shell 脚本中还没那么方便。
那么我们可以使用 mysql 命令来直接导入数据。
格式如下:
mysql -u用户名 -p密码 数据库名称 < 备份文件
执行示例如下:
[root@server01 opt]# mysql -uroot -p db1 < db1.sql Enter password: [root@server01 opt]#
这篇关于Mysql数据库备份与还原的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享