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)
标签:tmp,+------+------+------+,轻量,备份,sql,msyqldump,mysql,tmp1 来源: https://blog.csdn.net/weixin_45939085/article/details/121272169