mysqldump还原指定的库

从一个全备的数据恢复指定的数据,方法有很多,可以通过特殊方法从全备的数据文件取出数据数据库名和表名等等,还可以通过一个全备指定库名的方式恢复指定的数据,这个方法简单快速,这个方法会恢复不需要的库,但不会恢复数据.

过程如下:

1、查看数据库还没备份前的状况

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| bb                 |

| cc                 |

| dd                 |

| grafana            |

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

MariaDB [(none)]> use grafana;

MariaDB [grafana]> show tables;

+--------------------+

| Tables_in_grafana  |

+--------------------+

| api_key            |

| dashboard          |

| dashboard_snapshot |

| dashboard_tag      |

| data_source        |

| migration_log      |

| org                |

| org_user           |

| star               |

| user               |

+--------------------+

10 rows in set (0.00 sec)

MariaDB [test]> select * from aa;

+------+-------+

| id   | s_num |

+------+-------+

|    1 | 1     |

|    2 | 2     |

|    3 | 33331 |

|    4 | 33334 |

+------+-------+

4 rows in set (0.00 sec)

2、全备一个实例的数据mysqldump方式

/usr/local/mysql/bin/mysqldump -S /tmp/mysql3306.sock -p --all-databases >aa.sql

3、删除业务库:

drop database xxxx

4、还原指定的库,在还原指定的库的时候,需要在库里添加好被还原的库,不然会提示ERROR 1049 (42000): Unknown database ‘test‘

MariaDB [(none)]> create database test;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.00 sec)

5、再来还原指定的库

/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -p --one-database test <aa.sql

总结存在的现象:

通过检查备份集信息grep "CREATE DATABASE" all.sql |grep -v "VERSION"

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cc` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test01` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test02` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `wl_tj56_dict` /*!40100 DEFAULT CHARACTER SET utf8 */;

可以看到数据库执行的信息(这个说法不一定对的),指定还原某个库,根据全备后检查备份集的数据的信息grep "CREATE DATABASE" all.sql |grep -v "VERSION",当还原的库在中间位置,还原数据会同时还原第一个库记录和还原库的下一个库信息,若是还原的库在最后一行,只会还原第一个库和被还原的库,这里被还原的不是指定的库只会返回库名,不返回数据。

快速还原某库下的某表方法:http://suifu.blog.51cto.com/9167728/1830651

时间: 2024-10-03 00:41:17

mysqldump还原指定的库的相关文章

gcc -rpath 指定动态库路径

gcc -rpath 指定动态库路径 http://blog.csdn.net/v6543210/article/details/44809405

mysqldump导出指定表和部分指定数据

mysqldump -u用户名 -p密码 库名 表名 --where="筛选条件" > 导出文件路径 mysqldump命令中的 --where/-w参数,是用来设定数据导出的条件,使用方式和sql查询命令中的where基本一致,可以从数据中导出需要的部分数据 从meteo数据库的sdata表中导出sensorid=11 且 fieldid=0的数据到 /home/xyx/Temp.sql 这个文件中mysqldump -uroot -p123456 meteo sdata --

Oracle数据库从RMAN备份集片段还原指定单个归档日志进行日志挖掘分析

起因:业务已知在之前某个时间点范围内发生了可疑异常操作,希望通过日志挖掘来审查SQL动作 现状:生产库在线归档已备份后删除,RMAN归档备份已经刷出超期的备份集文件 需求:通过RMAN还原归档到线上以进行日志挖掘 定位归档日志涉及范围: select * from v$archived_log l where to_date('2018-11-12 16:18:51','yyyy-mm-dd hh24:mi:ss') between L.FIRST_TIME and L.NEXT_TIME; 假

mysqldump备份指定mysql数据库脚本

前几天有朋友让帮忙写一个mysql数据备份脚本,于是就有了下文通过mysqldump命令备份数据库的脚本,贴出来跟大家交流,若有问题,请指正,谢谢. 实现功能: 1 备份指定的数据库 2 删除指定天数前的备份文件,默认设定了7天 #!/bin/bash # # 文件名:mysql_bak.sh # #数据库备份文件的目录,若没有请创建目录或指定备份目录 BACKUP_DIR="/bak/mysqlbak" #指定mysql所在主机的主机名 DB_HOSTNAME='hostname'

基于mysqldump快速搭建从库

mysql主从搭建总的来说大致分为3个步骤,一是为主从实例添加复制所需参数以及创建复制用的账户,二在是需要在主库建立快照,三是在从库上添加指向主库IP,端口,用户名,密码,binlog位置等.而对于主从搭建的快照方式有很多种,如使用InnoDB hotbak,xtrabackup,mysqldump以及直接使用tar方式来建立快照.本文主要介绍使用mysqldump方式来建立快照,适用于不超过20GB左右的数据库. 与本文有关的相关参考:        使用mysqldump导出数据库     

MySQL主从复制指定不同库表同步参数说明

replication 中通过以下参数减少binlog数据量 master端: --binlog-do-db 二进制日志记录的数据库(多数据库用逗号,隔开) --binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开) 以下是mysql主从忽略授权表的方法案例: in master: binlog-do-db=YYY 需要同步的数据库.不添加这行表示同步所有 binlog-ignore-db = mysql   这是不记录binlog,来达到从库不同步mysql库,以确

【mysqldump备份指定数据库表】my_dump.sh

#!/bin/bash # # 2014/12/12 function dump_db_table() {     local d_db_base='/data/svr/mysql'     local s_datetime=$(date +%Y%m%d_%H%M%S)     local s_port=3306     local s_password='xxx'     local s_db=$1     if [ -z ${s_port} ]; then         echo "Usa

bacula初使用备份(完全备份,增量备份,和还原指定数据)

备份: console端 [[email protected] ~]# /usr/local/bacula/sbin/bconsole Connecting to Director XXXXXX:9101 1000 OK: JD-dir Version: 5.2.13 (19 February 2013) Enter a period to cancel a command. *label##使用label创建卷组 Automatically selected Catalog: MyCatalo

Mysql DBA 高级运维学习笔记-MySQL主从复制指定不同库表参数说明

1.同步少量库 binlog-do-db=db_px replicate-do-db=db_px---如需跨数据库更新并且不想复制这些跟新,应使用该选项 replicate-do-table=db_px----允许跨数据库更新 replicate-wild-do-table=db_px---用于跨数据库更新 2.ignore:排除 binlog-ignore-db=mysql replicate-ignore-db=mysql-如需跨数据库更新并且不想复制这些更新应使用该选项 replicate