|
10 | 10 | import shutil
|
11 | 11 | import json
|
12 | 12 | from testgres import QueryException
|
| 13 | +from distutils.dir_util import copy_tree |
13 | 14 |
|
14 | 15 |
|
15 | 16 | module_name = 'incr_restore'
|
@@ -2390,5 +2391,114 @@ def test_incremental_partial_restore_exclude_tablespace_checksum(self):
|
2390 | 2391 | # Clean after yourself
|
2391 | 2392 | self.del_test_dir(module_name, fname, [node2])
|
2392 | 2393 |
|
| 2394 | + def test_incremental_pg_filenode_map(self): |
| 2395 | + """""" |
| 2396 | + fname = self.id().split('.')[3] |
| 2397 | + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') |
| 2398 | + node = self.make_simple_node( |
| 2399 | + base_dir=os.path.join(module_name, fname, 'node'), |
| 2400 | + initdb_params=['--data-checksums']) |
| 2401 | + |
| 2402 | + self.init_pb(backup_dir) |
| 2403 | + self.add_instance(backup_dir, 'node', node) |
| 2404 | + self.set_archiving(backup_dir, 'node', node) |
| 2405 | + node.slow_start() |
| 2406 | + |
| 2407 | + node1 = self.make_simple_node( |
| 2408 | + base_dir=os.path.join(module_name, fname, 'node1'), |
| 2409 | + initdb_params=['--data-checksums']) |
| 2410 | + node1.cleanup() |
| 2411 | + |
| 2412 | + node.pgbench_init(scale=5) |
| 2413 | + |
| 2414 | + # FULL backup |
| 2415 | + backup_id = self.backup_node(backup_dir, 'node', node) |
| 2416 | + |
| 2417 | + # in node1 restore full backup |
| 2418 | + self.restore_node(backup_dir, 'node', node1) |
| 2419 | + self.set_auto_conf(node1, {'port': node1.port}) |
| 2420 | + node1.slow_start() |
| 2421 | + |
| 2422 | + pgbench = node.pgbench( |
| 2423 | + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, |
| 2424 | + options=['-T', '10', '-c', '1']) |
| 2425 | + |
| 2426 | + pgbench = node1.pgbench( |
| 2427 | + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, |
| 2428 | + options=['-T', '10', '-c', '1']) |
| 2429 | + |
| 2430 | + node.safe_psql( |
| 2431 | + 'postgres', |
| 2432 | + 'reindex index pg_type_oid_index') |
| 2433 | + |
| 2434 | + # FULL backup |
| 2435 | + backup_id = self.backup_node(backup_dir, 'node', node) |
| 2436 | + |
| 2437 | + node1.stop() |
| 2438 | + |
| 2439 | + |
| 2440 | + # incremental restore into node1 |
| 2441 | + self.restore_node(backup_dir, 'node', node1, options=["-I", "checksum", '--log-level-file=VERBOSE']) |
| 2442 | + |
| 2443 | + self.set_auto_conf(node1, {'port': node1.port}) |
| 2444 | + node1.slow_start() |
| 2445 | + |
| 2446 | + node1.safe_psql( |
| 2447 | + 'postgres', |
| 2448 | + 'select 1') |
| 2449 | + |
| 2450 | + # Clean after yourself |
| 2451 | + self.del_test_dir(module_name, fname) |
| 2452 | + |
| 2453 | + |
| 2454 | + def test_incr_backup_filenode_map(self): |
| 2455 | + """""" |
| 2456 | + fname = self.id().split('.')[3] |
| 2457 | + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') |
| 2458 | + node = self.make_simple_node( |
| 2459 | + base_dir=os.path.join(module_name, fname, 'node'), |
| 2460 | + initdb_params=['--data-checksums']) |
| 2461 | + |
| 2462 | + self.init_pb(backup_dir) |
| 2463 | + self.add_instance(backup_dir, 'node', node) |
| 2464 | + self.set_archiving(backup_dir, 'node', node) |
| 2465 | + node.slow_start() |
| 2466 | + |
| 2467 | + node1 = self.make_simple_node( |
| 2468 | + base_dir=os.path.join(module_name, fname, 'node1'), |
| 2469 | + initdb_params=['--data-checksums']) |
| 2470 | + node1.cleanup() |
| 2471 | + |
| 2472 | + node.pgbench_init(scale=5) |
| 2473 | + |
| 2474 | + # FULL backup |
| 2475 | + backup_id = self.backup_node(backup_dir, 'node', node) |
| 2476 | + |
| 2477 | + pgbench = node.pgbench( |
| 2478 | + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, |
| 2479 | + options=['-T', '10', '-c', '1']) |
| 2480 | + |
| 2481 | + backup_id = self.backup_node(backup_dir, 'node', node, backup_type='delta') |
| 2482 | + |
| 2483 | + node.safe_psql( |
| 2484 | + 'postgres', |
| 2485 | + 'reindex index pg_type_oid_index') |
| 2486 | + |
| 2487 | + backup_id = self.backup_node( |
| 2488 | + backup_dir, 'node', node, backup_type='delta', options=['--log-level-file=VERBOSE']) |
| 2489 | + |
| 2490 | + # incremental restore into node1 |
| 2491 | + node.cleanup() |
| 2492 | + |
| 2493 | + self.restore_node(backup_dir, 'node', node) |
| 2494 | + node.slow_start() |
| 2495 | + |
| 2496 | + node.safe_psql( |
| 2497 | + 'postgres', |
| 2498 | + 'select 1') |
| 2499 | + |
| 2500 | + # Clean after yourself |
| 2501 | + self.del_test_dir(module_name, fname) |
| 2502 | + |
2393 | 2503 | # check that MinRecPoint and BackupStartLsn are correctly used in case of --incrementa-lsn
|
2394 | 2504 | # incremental restore + partial restore.
|
0 commit comments