search
HomeDatabaseMysql Tutorial巧用flashback database实现灵活的数据切换

按照一般的情况下,我们是建议对测试生产环境做一个备份,采用expdp即可,然后清空对应schema下的数据,然后倒入需要重现问题的数

客户今天有一个需求,因为开发现在在生产环境中遇到了一些困难,需要在测试生产环境中复现问题,这样就需要从生产环境抽取出一些数据,可能数据量相对比较小,有个1G左右。需要把这些数据加载到测试生产环境中,还是来张图更加清晰。我们需要把图中右边部分的生产环境中抽取部分数据导入到测试生产环境中,这里所说的测试生产环境是按照生产环境的结构来复制的。测试环境已经有一些测试数据,,很可能和生产环境中的数据冲突。

就如同图中下面的部分列出的细节一样,很可能会存在数据冲突导致数据加载出现问题。

巧用flashback database实现灵活的数据切换


 按照一般的情况下,我们是建议对测试生产环境做一个备份,采用expdp即可,然后清空对应schema下的数据,然后倒入需要重现问题的数据。问题复现之后,可以使用备份把数据恢复回来。
 但是这种固有的思想还是存在一定的问题。
 客户反馈的情况如下,说对应的schema下的数据量是相当大的,差不多2T多,如果做备份也是需要不少的空间,导出导入都是相当消耗时间和资源的。
OWNER                          SUM(BYTES)/1024/1024
 ------------------------------ --------------------
 APPO                                  2144666.63
这套环境借用的时间为3天,所以相对来说测试环境的高可用要求就没那么高了。
 我们可以尝试采用flashback database来完成这种需求。
 使用flashback database会有一些的顾虑和隐患,比如闪回时间的考虑,如果考虑不周很可能达不到预期的效果。
 数据库中默认是不会启用闪回数据库功能的,需要启用,完成数据恢复之后,再禁用,这些过程都是需要停库启库的,对于中间件来说就需要重新启动,需要和开发测试部分做协调,是否同意这种方式。
 数据库做闪回操作之后,闪回到了数据清除前的状态,这个时候如果要打开数据库,是需要使用open resetlogs这种方式的,这样的话这个时间点之前的备份就失效了。也需要做确认,确保不会出现业务上意料之外的情况。
 很快得到了回复,看来对于这种方式大家也是认可的,毕竟能够免去大量的备份和数据导入导出之苦。操作上也相对比较方便。

 我们使用下面的脚本来简单模拟一下。我们创建一个表,然后启用flashback database功能,做truncate操作,然后导入一些新的数据,之后再做闪回数据库操作,闪回到truncate之前的数据情况,最后启用数据库即可。
 修改闪回保留的时间,默认是1440分钟,即24小时
SQL> show parameter flashback
 NAME                                TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 db_flashback_retention_target        integer    1440
我们创建了一个表,大小为2G左右,这样能够简单验证一下闪回日志的增长情况。
SQL> select segment_name,bytes from user_segments where segment_name='AA';
 SEGMENT_NAME    BYTES
 --------------- ----------
 AA              2153775104

 SQL> SELECT COUNT(*)FROM AA;
  COUNT(*)
 ----------
  18340352
  我们开始启用闪回数据库功能。
SQL> shutdown immediate
 Database closed.
 Database dismounted.
 Oracle instance shut down.
 SQL> startup mount
 ORACLE instance started.
 Total System Global Area  435224576 bytes
 Fixed Size                  1337044 bytes
 Variable Size            272632108 bytes
 Database Buffers          155189248 bytes
 Redo Buffers                6066176 bytes
 Database mounted.
SQL> alter database flashback on;
 Database altered.
 SQL>
 SQL> alter database open;
 Database altered.
启用之后,得到一个时间戳,一次来作为我们完成闪回的时间点。
select systimestamp from dual;
接着我们来做一个清理工作。
SQL> truncate table aa;
 Table truncated.
我们尝试插入一部分
SQL> insert into aa select*from all_objects;
 71642 rows created.
 SQL> commit;
 Commit complete.
这个数据量相比原本的2G就小了很多。
 然后我们尝试使用闪回数据库功能,闪回到删除之前的状态。
SQL> shutdown immediate
 Database closed.
 Database dismounted.
 ORACLE instance shut down

 SQL> startup mount;
 ORACLE instance started.
 Total System Global Area  435224576 bytes
 Fixed Size                  1337044 bytes
 Variable Size            272632108 bytes
 Database Buffers          155189248 bytes
 Redo Buffers                6066176 bytes
 Database mounted.
SQL> Flashback database to timestamp to_timestamp('2015-04-17 17:42:29','yyyy-mm-dd hh24:mi:ss');
 Flashback complete.
以只读方式打开,做验证,保证闪回没有问题。
SQL> alter database open read only;
 Database altered.

 SQL> conn n1/n1
 Connected.
SQL> select count(*)from aa;
  COUNT(*)
 ----------
  18340352

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
MySQL: Essential Skills for Beginners to MasterMySQL: Essential Skills for Beginners to MasterApr 18, 2025 am 12:24 AM

MySQL is suitable for beginners to learn database skills. 1. Install MySQL server and client tools. 2. Understand basic SQL queries, such as SELECT. 3. Master data operations: create tables, insert, update, and delete data. 4. Learn advanced skills: subquery and window functions. 5. Debugging and optimization: Check syntax, use indexes, avoid SELECT*, and use LIMIT.

MySQL: Structured Data and Relational DatabasesMySQL: Structured Data and Relational DatabasesApr 18, 2025 am 12:22 AM

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

MySQL: Key Features and Capabilities ExplainedMySQL: Key Features and Capabilities ExplainedApr 18, 2025 am 12:17 AM

MySQL is an open source relational database management system that is widely used in Web development. Its key features include: 1. Supports multiple storage engines, such as InnoDB and MyISAM, suitable for different scenarios; 2. Provides master-slave replication functions to facilitate load balancing and data backup; 3. Improve query efficiency through query optimization and index use.

The Purpose of SQL: Interacting with MySQL DatabasesThe Purpose of SQL: Interacting with MySQL DatabasesApr 18, 2025 am 12:12 AM

SQL is used to interact with MySQL database to realize data addition, deletion, modification, inspection and database design. 1) SQL performs data operations through SELECT, INSERT, UPDATE, DELETE statements; 2) Use CREATE, ALTER, DROP statements for database design and management; 3) Complex queries and data analysis are implemented through SQL to improve business decision-making efficiency.

MySQL for Beginners: Getting Started with Database ManagementMySQL for Beginners: Getting Started with Database ManagementApr 18, 2025 am 12:10 AM

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

MySQL's Role: Databases in Web ApplicationsMySQL's Role: Databases in Web ApplicationsApr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

MySQL: Building Your First DatabaseMySQL: Building Your First DatabaseApr 17, 2025 am 12:22 AM

The steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.

MySQL: A Beginner-Friendly Approach to Data StorageMySQL: A Beginner-Friendly Approach to Data StorageApr 17, 2025 am 12:21 AM

MySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool