msyqldump实现mysql逻辑轻量备份

2021/11/12 2:11:08

本文主要是介绍msyqldump实现mysql逻辑轻量备份,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

逻辑备份
备份的是建表、建库、插入等操作所执行的sql语句
适用于中小型数据、效率相对较低,一般在数据库正常提供服务下进行:mysqldump、mydumper、into outfile等
备份实质:是把要备份的数据导出为.sql文件(里面存放的是当前数据库实现的sql语言)

数据准备:

创建一个tmp的数据库,在tmp库下创建tmp1表,分别写入数据
msyql> create database tmp;
msyql> use tmp;
mysql> create table test1( id int not null, name varchar(20),age int(10),primary key(id)) engine=innodb default charset=utf8;
msyql> insert into tmp1 values(1,'tmp',22);
mysql> select *from tmp1;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   22 |
+------+------+------+
1 row in set (0.00 sec)

逻辑全量备份

表级别备份

语法格式:
mysqldump 库名 表名列表 > 备份到的地址 -p
如果要备份多个表,表与表之间用空格隔开

将tmp库tmp1表逻辑备份
[root@localhost bin]# mysqldump tmp tmp1 > /tmp/sqlbak/tmp1.sql -p
Enter password:   这里输入数据库用户的密码

如果没有添加MySQL到环境变量,执行mysqldump需要到mysq/bin目录下执行
这里可以打开tmp1.sql看一看
cat tmp1.sql
在这里插入图片描述可以看出这个文件里面存入的都是这张表的sql语句。
现在可以模拟MySQL数据丢失

删除表模拟数据丢失
mysql> drop table tmp1;
Query OK, 0 rows affected (0.00 sec)

利用备份恢复

mysql> source /tmp/sqlbak/tmp1.sql
Enter password:
或者使用这个命令
[root@localhost sqlbak]# mysql -p tmp < /tmp/sqlbak/tmp1.sql
Enter password:

查询数据是否恢复

mysql> select *from tmp1;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   22 |
+------+------+------+
1 row in set (0.00 sec)

库级别备份与还原

语法格式:
mysqldump [选项] --databases [选项] 库名

[root@localhost bin]# mysqldump --databases tmp > /tmp/sqlbak/tmp.txt -p
Enter password:

模拟数据故障

删除数据库模拟故障
mysql> drop database tmp;
Query OK, 1 rows affected (0.01 sec)

利用备份恢复

mysql> source /tmp/sqlbak/tmp.txt 
或者使用这个命令
[root@localhost sqlbak]# mysql -p tmp < /tmp/sqlbak/tmp1.txt
Enter password:

查询恢复数据

mysql> select *from tmp.tmp1;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   22 |
+------+------+------+
1 row in set (0.00 sec)

全库级备份

mysqldump [选项] --all-databases [选项]
语法格式:mysqldump [选项] 数据库名 表名列表
mysqldump选项说明
在这里插入图片描述–master-data 选项说明:
1、在恢复数据时选择,默认是1
2、需要RELOAD privilege并必须打开二进制文件
3、这个选项会自动打开–lock-all-tables,关闭–lock-tables

如果要用mysqldump进行全库级备份,必须开启二进制日志
vim /etc/my.cnf
在这里插入图片描述修改完后重启mysql
service mysql restart
开始全库备份

[root@localhost data]# mysqldump --all-databases --master-data --single-transaction > /tmp/sqlbak/all.sql -p
Enter password:

删除一些数据用于测试

删除数据库模拟故障
mysql> drop database tmp;
Query OK, 1 rows affected (0.01 sec)

利用备份恢复数据

mysql> source /tmp/sqlbak/all.sql 
或者使用这个命令
[root@localhost data]# mysql < /tmp/sqlbak/all.sql -p
Enter password:

查询数据是否以及恢复

mysql> select *from tmp.tmp1;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   22 |
+------+------+------+
1 row in set (0.00 sec)


这篇关于msyqldump实现mysql逻辑轻量备份的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程