达梦数据库重演操作

数据库重演是DM数据库管理系统提供的一种问题诊断和性能优化工具。通过sp_start_capture和sp_stop_capture系统过程捕获并回放数据库操作,可以在测试环境中重现生产环境的工作负载,帮助DBA诊断问题和确保系统变更的安全性。在示例中,创建了一个测试表,记录了插入操作,然后使用dreplay工具成功重演了这些操作,验证了数据库重演的效率和准确性。
摘要由CSDN通过智能技术生成

对系统的任何配置更改和升级通常需要进行在测试环境中全面的测试和验证,然后在生产环境中实施这些更改。在移到生产系统之前为了保证安全,数据库管理员(DBA) 需要让测试系统承受与生产环境中的工作量很近似的工作量。另外,为了重现存在问题,需要重现当时场景,此时则需要用到数据库重演技术。
数据库重演(Database Replay)是 DM 中用来重现、定位和分析问题的一个重要手段,其基本原理是在数据库系统上捕获所有负载(记录外部客户端对服务器的请求),保存到二进制捕获文件,然后通过 DM 提供的数据库重演工具将捕获文件中的请求发送给捕获前由原始数据库备份恢复而来的重演测试系统上,从而帮助重现当时的场景。
用户可以调用系统过程 sp_start_capture 来启动捕获发往数据库的所有负载,并将该阶段收到的所有请求保存到二进制捕获文件中,然后使用 DM 提供的数据库重演客户端工具重放二进制捕获文件,再现当时真实环境的负载及运行情况,帮助进行问题跟踪和诊断。
使用系统过程 sp_stop_capture 可以停止捕获。调用系统存储过程SP_START_CAPTURE 和 SP_STOP_CAPTURE,可以获得数据重演文件。重演文件用于数据重演,存储了从抓取开始到抓取结束时,DM 数据库与客户端的通信消息。使用数据重演文件,可以多次重复抓取这段时间内的数据库操作,为系统调试和性能调优提供了另一种分析手段。

本文通过一个较为简单了操作将重演功能进行演示。
创建一个简单测试表:

create table replay_test (id number,name varchar(16));
executed successfully
used time: 61.481(ms). Execute id is 7.

开启数据库重演:指定生成重演文件路径和重演时间,-1代表重演由用户手动停止。

call sp_start_capture('/dm8/replay-test.cpt',-1);
DMSQL executed successfully
used time: 37.347(ms). Execute id is 5.

此时,做一些简单的操作,重演进程则会将这些操作完整记录到指定文件中去。

SQL> insert into replay_test values (100,'test1');
affect rows 1

used time: 6.936(ms). Execute id is 37.
insert into replay_test values (200,'test2');
affect rows 1

used time: 0.327(ms). Execute id is 38.
insert into replay_test values (300,'test3');
affect rows 1

used time: 0.343(ms). Execute id is 39.
insert into replay_test values (400,'test4');
affect rows 1

used time: 0.281(ms). Execute id is 40.
insert into replay_test values (500,'test5');
affect rows 1

used time: 0.276(ms). Execute id is 41.
SQL> commit;
executed successfully
used time: 1.335(ms). Execute id is 42.

检查插入的数据:

SQL> select * from replay_test;

LINEID     ID  NAME 
---------- --- -----
1          100 test1
2          200 test2
3          300 test3
4          400 test4
5          500 test5

used time: 1.261(ms). Execute id is 43.
commit;

手动停止数据库重演工作。

SQL> call sp_stop_capture();
DMSQL executed successfully
used time: 104.839(ms). Execute id is 44.

利用达梦提供的dreplay工具来重演数据(命令如下)
该工具帮助信息如下,主要参数是SERVER和FILE这两个分别用来指定主机IP和端口及文件路径。

[root@localhost bin]# ./dreplay help
dreplay V8

Format:                 ./dreplay  KEYWORD=value

Example:               ./dreplay  SERVER=LOCALHOST:5236 FILE=./test.cpt

Necessary Arguments:   FILE

Keyword                Explanation(Default)
--------------------------------------------------------------------------------
SERVER                 server address. Format: SERVER:PORT(LOCALHOST:5236)
FILE                   capture file path.
HELP                   show this usage help.

利用dreplay 工具对数据库进行重演操作:

[root@localhost bin]# ./dreplay server=localhost:5236 file=/dm8/replay-test.cpt 
dreplay V8

1 of 12 operation start...
1 of 12 operation succeed...
2 of 12 operation start...
2 of 12 operation succeed...
3 of 12 operation start...
3 of 12 operation succeed...
4 of 12 operation start...
4 of 12 operation succeed...
5 of 12 operation start...
5 of 12 operation succeed...
6 of 12 operation start...
6 of 12 operation succeed...
7 of 12 operation start...
7 of 12 operation succeed...
8 of 12 operation start...
8 of 12 operation succeed...
9 of 12 operation start...
9 of 12 operation succeed...
10 of 12 operation start...
10 of 12 operation succeed...
11 of 12 operation start...
11 of 12 operation succeed...
12 of 12 operation start...
12 of 12 operation succeed...
replay successfully

查看操作是否生效,可以看到表中数据又重新执行了数据插入操作。

SQL> select * from replay_test;

LINEID     ID  NAME 
---------- --- -----
1          100 test1
2          200 test2
3          300 test3
4          400 test4
5          500 test5
6          100 test1
7          200 test2
8          300 test3
9          400 test4
10         500 test5

10 rows got

used time: 0.174(ms). Execute id is 58.

通过上面的例子可以看到,达梦数据库重演操作还是比较易操作的,使用起来也比较方便。对于DBA诊断、重现故障、以及变更前测试都很有帮助,可以有效地提高工作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值