<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>IT study</title>
    <link>https://bintech.tistory.com/</link>
    <description>개인 학습 기록장</description>
    <language>ko</language>
    <pubDate>Sun, 28 Jun 2026 13:33:07 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>DBnA</managingEditor>
    <item>
      <title>[RDS Oracle] Data Pump와 Amazon S3 버킷으로 데이터 내보내기, 가져오기</title>
      <link>https://bintech.tistory.com/entry/RDS-Oracle-Data-Pump%EC%99%80-Amazon-S3-%EB%B2%84%ED%82%B7%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEd1KE/dJMcagqP1YT/zUQpaiQYRLYlbhAfSts9r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEd1KE/dJMcagqP1YT/zUQpaiQYRLYlbhAfSts9r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEd1KE/dJMcagqP1YT/zUQpaiQYRLYlbhAfSts9r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEd1KE%2FdJMcagqP1YT%2FzUQpaiQYRLYlbhAfSts9r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스서버에서 타겟서버로 특정 스키마 이관&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.사전 작업&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 122px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 122px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 122px;&quot;&gt;--s3관련 패키지 확인 없으면 RDS 옵션그룹에 S3_INTEGRATION 추가 (유지보수잇으면 같이반영될수 있음)&lt;br /&gt;&amp;nbsp;&lt;a href=&quot;https://repost.aws/knowledge-center/rds-oracle-s3-integration&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://repost.aws/knowledge-center/rds-oracle-s3-integration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;object_name,&amp;nbsp;object_type &lt;br /&gt;FROM&amp;nbsp;dba_objects &lt;br /&gt;WHERE&amp;nbsp;owner&amp;nbsp;=&amp;nbsp;'RDSADMIN' &lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;object_name&amp;nbsp;LIKE&amp;nbsp;'%S3%';&lt;br /&gt;&lt;br /&gt;--s3 iam 역할 생성 후&amp;nbsp; &amp;gt; RDS 연결&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.소스서버 테스트데이터 생성&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;--&amp;nbsp;ts&amp;nbsp;생성 &lt;br /&gt;CREATE&amp;nbsp;TABLESPACE&amp;nbsp;TS_TEST; &lt;br /&gt;&lt;br /&gt;--스키마생성 &lt;br /&gt;CREATE USER test_user IDENTIFIED BY test DEFAULT&amp;nbsp;TABLESPACE&amp;nbsp;TS_TEST &lt;br /&gt;TEMPORARY TABLESPACE TEMP QUOTA&amp;nbsp;UNLIMITED&amp;nbsp;ON&amp;nbsp;TS_TEST; &lt;br /&gt;&lt;br /&gt;--권한부여 &lt;br /&gt;GRANT CONNECT, RESOURCE, &amp;nbsp;CREATE VIEW, CREATE SEQUENCE, CREATE TRIGGER TO&amp;nbsp;test_user; &lt;br /&gt;&lt;br /&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;test_user.tb_article&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;article_id&amp;nbsp;&amp;nbsp;&amp;nbsp;NUMBER&amp;nbsp;PRIMARY&amp;nbsp;KEY, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VARCHAR2(200), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLOB, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;created_at&amp;nbsp;&amp;nbsp;&amp;nbsp;DATE&amp;nbsp;DEFAULT&amp;nbsp;SYSDATE &lt;br /&gt;) &lt;br /&gt;TABLESPACE TS_TEST LOB (content) &lt;br /&gt;STORE AS ( TABLESPACE TS_TEST ENABLE STORAGE IN ROW ); &lt;br /&gt;&lt;br /&gt;CREATE INDEX test_user.idx_tb_article_title ON test_user.tb_article(title) TABLESPACE&amp;nbsp;TS_TEST; &lt;br /&gt;&lt;br /&gt;CREATE SEQUENCE test_user.seq_tb_article START WITH 1 INCREMENT BY 1 NOCACHE; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;FOR&amp;nbsp;i&amp;nbsp;IN&amp;nbsp;1..100&amp;nbsp;LOOP &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INSERT INTO test_user.tb_article (article_id,&amp;nbsp; title,&amp;nbsp; content&amp;nbsp; &amp;nbsp; )&amp;nbsp;&lt;br /&gt;VALUES (i, 'Test Title ' || i, 'This is CLOB test content for article #' || i || '. ' ||&amp;nbsp; &amp;nbsp; &amp;nbsp; RPAD('CLOB_DATA_', 2000, 'X')&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;END&amp;nbsp;LOOP; &lt;br /&gt;&amp;nbsp;&amp;nbsp;COMMIT; &lt;br /&gt;END;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 소스 작업&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;br /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;table(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR'))&amp;nbsp;order&amp;nbsp;by&amp;nbsp;mtime;&amp;nbsp;--기본데이터덤프 &lt;br /&gt;&lt;br /&gt;--export&amp;nbsp;진행 &lt;br /&gt;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp;v_hdnl&amp;nbsp;NUMBER; &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;v_hdnl&amp;nbsp;:=&amp;nbsp;DBMS_DATAPUMP.OPEN( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;operation&amp;nbsp;=&amp;gt;&amp;nbsp;'EXPORT',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job_mode&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'SCHEMA',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job_name&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;null &lt;br /&gt;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.ADD_FILE(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;v_hdnl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_expdp_260204.dmp'&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;directory&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filetype&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;dbms_datapump.ku$_file_type_dump_file &lt;br /&gt;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.ADD_FILE(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;v_hdnl,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_expdp_260204.log',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;directory&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR'&amp;nbsp;,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filetype&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;dbms_datapump.ku$_file_type_log_file &lt;br /&gt;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN&amp;nbsp;(''TEST_USER'')'); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.METADATA_FILTER( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v_hdnl, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'EXCLUDE_NAME_EXPR', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;q'[IN&amp;nbsp;(SELECT&amp;nbsp;NAME&amp;nbsp;FROM&amp;nbsp;SYS.OBJ$&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;TYPE#&amp;nbsp;IN&amp;nbsp;(66,67,74,79,59,62,46)&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;OWNER#&amp;nbsp;IN&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(SELECT&amp;nbsp;USER#&amp;nbsp;FROM&amp;nbsp;SYS.USER$&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;NAME&amp;nbsp;IN&amp;nbsp;('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'PROCOBJ' &lt;br /&gt;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.START_JOB(v_hdnl); &lt;br /&gt;END; &lt;br /&gt;/ &lt;br /&gt;&lt;br /&gt;--생성&amp;nbsp;파일&amp;nbsp;확인 &lt;br /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;table(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR'))&amp;nbsp;order&amp;nbsp;by&amp;nbsp;mtime; &lt;br /&gt;&lt;br /&gt;--s3에&amp;nbsp;업로드 &lt;br /&gt;SELECT&amp;nbsp;rdsadmin.rdsadmin_s3_tasks.upload_to_s3( &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_bucket_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'sbn-bucket-test',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_prefix&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_expdp_260204.dmp',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_s3_prefix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'oracle_dump/', &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_directory_name&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'DATA_PUMP_DIR'&amp;nbsp;)&amp;nbsp; &lt;br /&gt;AS&amp;nbsp;TASK_ID&amp;nbsp;FROM&amp;nbsp;DUAL; &lt;br /&gt;&lt;br /&gt;--&amp;gt;taskid나오면&amp;nbsp;확인 &lt;br /&gt;SELECT&amp;nbsp;text&amp;nbsp;FROM&amp;nbsp;table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1770169906983-178.log'));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 타겟 작업&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 958px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 958px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 958px;&quot;&gt;--타겟db&amp;nbsp;dump&amp;nbsp;파일&amp;nbsp;다운로드 &lt;br /&gt;SELECT&amp;nbsp;rdsadmin.rdsadmin_s3_tasks.download_from_s3( &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_bucket_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'sbn-bucket-test', &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_s3_prefix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'oracle_dump/', &lt;br /&gt;&amp;nbsp;&amp;nbsp;p_directory_name&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;nbsp;'DATA_PUMP_DIR') &lt;br /&gt;AS&amp;nbsp;TASK_ID&amp;nbsp;FROM&amp;nbsp;DUAL; &lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;text&amp;nbsp;FROM&amp;nbsp;table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1770170979421-189.log')); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;--&amp;nbsp;Directory&amp;nbsp;Dump&amp;nbsp;파일&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;SELECT&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) &lt;br /&gt;&amp;nbsp;&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;mtime; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;--특정스키마 지정, 테이블스페이스 remap 안할시 타겟에 TS, 스키마 먼저 생성&lt;br /&gt;&amp;nbsp;CREATE&amp;nbsp;TABLESPACE&amp;nbsp;TS_TEST; &lt;br /&gt;&lt;br /&gt;--스키마생성 &lt;br /&gt;CREATE USER test_user IDENTIFIED BY test DEFAULT TABLESPACE TS_TEST TEMPORARY&amp;nbsp;TABLESPACE&amp;nbsp;TEMP &lt;br /&gt;QUOTA&amp;nbsp;UNLIMITED&amp;nbsp;ON&amp;nbsp;TS_TEST; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;--&amp;nbsp;import&amp;nbsp;진행 &lt;br /&gt;&amp;nbsp;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp;v_hdnl&amp;nbsp;NUMBER; &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;v_hdnl&amp;nbsp;:=&amp;nbsp;DBMS_DATAPUMP.OPEN(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;operation&amp;nbsp;=&amp;gt;&amp;nbsp;'IMPORT',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job_mode&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'SCHEMA',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;job_name&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;null); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.ADD_FILE(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;v_hdnl,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_expdp_260204.dmp',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;directory&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filetype&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;dbms_datapump.ku$_file_type_dump_file); &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.ADD_FILE(&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;v_hdnl,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_impdp_260204.log',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;directory&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filetype&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;dbms_datapump.ku$_file_type_log_file); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN&amp;nbsp;(''TEST_USER'')');&amp;nbsp;--특정스키마&amp;nbsp;지정시 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--DBMS_DATAPUMP.METADATA_REMAP(handle=&amp;gt;v_hdnl,&amp;nbsp;name=&amp;gt;&amp;nbsp;'REMAP_SCHEMA',&amp;nbsp;old_value=&amp;gt;'TEST_USER',&amp;nbsp;value=&amp;gt;'ADMIN');&amp;nbsp;--스키마변경필요시&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--DBMS_DATAPUMP.METADATA_REMAP(handle=&amp;gt;v_hdnl,&amp;nbsp;name=&amp;gt;&amp;nbsp;'REMAP_TABLESPACE',&amp;nbsp;old_value=&amp;gt;'TS_TEST',&amp;nbsp;value=&amp;gt;'USERS');--테이블스페이스&amp;nbsp;변경&amp;nbsp;필요시 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--작업건너뛰기&amp;nbsp;설정도&amp;nbsp;가능 &lt;br /&gt;&amp;nbsp;&amp;nbsp;DBMS_DATAPUMP.START_JOB(v_hdnl); &lt;br /&gt;END; &lt;br /&gt;&lt;br /&gt;--log파일&amp;nbsp;확인 &lt;br /&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;TABLE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(rdsadmin.rds_file_util.read_text_file( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_directory&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_filename&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'test_user_impdp_260204.log'));&lt;br /&gt;&lt;br /&gt;--확인 &lt;br /&gt;SELECT * FROM DBA_objects WHERE OWNER=' TEST_USER ';&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KLtml/dJMcacorjvD/kej9Xpt30Q2T7Ab0b5y4R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KLtml/dJMcacorjvD/kej9Xpt30Q2T7Ab0b5y4R1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KLtml/dJMcacorjvD/kej9Xpt30Q2T7Ab0b5y4R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKLtml%2FdJMcacorjvD%2Fkej9Xpt30Q2T7Ab0b5y4R1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;975&quot; height=&quot;232&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 추후 불필요 파일 삭제&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 144px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 144px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 144px;&quot;&gt;--생성&amp;nbsp;파일&amp;nbsp;확인 &lt;br /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;table(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR'))&amp;nbsp;order&amp;nbsp;by&amp;nbsp;mtime; &lt;br /&gt;&lt;br /&gt;--생성&amp;nbsp;파일&amp;nbsp;삭제 &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp; UTL_FILE.FREMOVE('DATA_PUMP_DIR', 'test_user_expdp_260204.log'); &lt;br /&gt;&amp;nbsp;&amp;nbsp;UTL_FILE.FREMOVE('DATA_PUMP_DIR',&amp;nbsp;'test_user_expdp_260204.dmp'); &lt;br /&gt;END;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>DATABASE/Oracle</category>
      <category>datapump</category>
      <category>oracle</category>
      <category>rds</category>
      <category>S3</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/86</guid>
      <comments>https://bintech.tistory.com/entry/RDS-Oracle-Data-Pump%EC%99%80-Amazon-S3-%EB%B2%84%ED%82%B7%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0#entry86comment</comments>
      <pubDate>Wed, 4 Feb 2026 11:35:14 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 물리 백업과 복구 2 - pg_basebackup</title>
      <link>https://bintech.tistory.com/entry/PostgreSQL-%EB%AC%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC-2-pgbasebackup</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/umJdB/dJMcacuYRxx/cv4iaIERkbVRKxGuCukpc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/umJdB/dJMcacuYRxx/cv4iaIERkbVRKxGuCukpc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/umJdB/dJMcacuYRxx/cv4iaIERkbVRKxGuCukpc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FumJdB%2FdJMcacuYRxx%2Fcv4iaIERkbVRKxGuCukpc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. pg_basebackup을 이용한 전체 백업&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;pg_basebackup은 postgresql이 제공하는 기본 백업 도구로 전체 백업 간편하게 수행할 수 있다.&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;pg_hba.conf&amp;nbsp;파일에&amp;nbsp;로컬&amp;nbsp;복제&amp;nbsp;항목&amp;nbsp;추가&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svcdb]$&amp;nbsp;vi&amp;nbsp;$PGDATA/pg_hba.conf&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;TYPE&amp;nbsp;&amp;nbsp;DATABASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;USER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;METHOD&lt;br /&gt;local&amp;nbsp;&amp;nbsp;&amp;nbsp;replication&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;postgres&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;peer&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;archive_command&amp;nbsp;설정&lt;br /&gt;&lt;br /&gt;archive_mode&amp;nbsp;=&amp;nbsp;on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;archive_command&amp;nbsp;=&amp;nbsp;'dd&amp;nbsp;if=%p&amp;nbsp;of=/dbbackup/svc01/archive/tmp/%f.tmp&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;mv&amp;nbsp;/dbbackup/svc01/archive/tmp/%f.tmp&amp;nbsp;/dbbackup/svc01/archive/%f'&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;아카이브&amp;nbsp;디렉토리&amp;nbsp;생성&amp;nbsp;후&amp;nbsp;인스턴스&amp;nbsp;재기동&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;mkdir&amp;nbsp;-p&amp;nbsp;/dbbackup/svc01/archive/tmp/&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;restart&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#백업&amp;nbsp;수행&lt;br /&gt;-D&amp;nbsp;옵션으로&amp;nbsp;디렉토리&amp;nbsp;경로&amp;nbsp;설정&amp;nbsp;&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;~]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/20251229F&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P&lt;br /&gt;&lt;br /&gt;테이블스페이스&amp;nbsp;사용시&amp;nbsp;--tablespace-mapping&amp;nbsp;옵션으로&amp;nbsp;테이블스페이스별로&amp;nbsp;백업&amp;nbsp;경로&amp;nbsp;명시적으로&amp;nbsp;지정해줘야한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. pg_basebackup 증분 백업&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;V17부터는&amp;nbsp;pg_basebackup은&amp;nbsp;블록&amp;nbsp;단위&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;기능을&amp;nbsp;지원한다.&amp;nbsp;&lt;br /&gt;블록&amp;nbsp;단위&amp;nbsp;증분&amp;nbsp;백업을&amp;nbsp;위해서는&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;기반으로&amp;nbsp;변경된&amp;nbsp;블록&amp;nbsp;위치를&amp;nbsp;식별해야한다.&amp;nbsp;&lt;br /&gt;변경된&amp;nbsp;블록위치&amp;nbsp;저장하기&amp;nbsp;위해&amp;nbsp;walsummarize&amp;nbsp;백그라운드&amp;nbsp;프로세스가&amp;nbsp;추가되어있으며,&amp;nbsp;summarize_wal&amp;nbsp;파라미터를&amp;nbsp;on으로&amp;nbsp;설정하면&amp;nbsp;해당&amp;nbsp;프로세스가&amp;nbsp;기동된다.&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;summarize_wal&amp;nbsp;파라미터&amp;nbsp;on&amp;nbsp;설정&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;20251230F]$&amp;nbsp;echo&amp;nbsp;&quot;summarize_wal&amp;nbsp;=&amp;nbsp;on&quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;$PGDATA/postgresql.conf&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;20251230F]$&amp;nbsp;pg_ctl&amp;nbsp;reload&lt;br /&gt;&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;20251230F]$&amp;nbsp;cd&amp;nbsp;$PGDATA/pg_wal/summaries&lt;br /&gt;디렉토리에&amp;nbsp;저장됨&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#테스트&amp;nbsp;데이터&amp;nbsp;생성&lt;br /&gt;svcdb=#&amp;nbsp;drop&amp;nbsp;table&amp;nbsp;t1&amp;nbsp;cascade;&lt;br /&gt;DROP&amp;nbsp;TABLE&lt;br /&gt;svcdb=#&amp;nbsp;create&amp;nbsp;table&amp;nbsp;t1(c1&amp;nbsp;char(100));&lt;br /&gt;CREATE&amp;nbsp;TABLE&lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'A'&amp;nbsp;from&amp;nbsp;generate_series(1,1000000);&lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#전체&amp;nbsp;백업&amp;nbsp;1회&amp;nbsp;수행&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/20251230F&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P&lt;br /&gt;&lt;br /&gt;#테스트&amp;nbsp;데이터&amp;nbsp;1건&amp;nbsp;입력&lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;values&amp;nbsp;('B');&lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1&lt;br /&gt;&lt;br /&gt;#증분&amp;nbsp;백업&amp;nbsp;진행&amp;nbsp;&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/20251230I&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P&amp;nbsp;--incremental=/dbbackup/svc01/20251230F/backup_manifest&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#확인&lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;pg_relation_filepath('t1');&lt;br /&gt;&amp;nbsp;pg_relation_filepath&lt;br /&gt;----------------------&lt;br /&gt;&amp;nbsp;base/57359/65551&lt;br /&gt;(1&amp;nbsp;row)&lt;br /&gt;&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;57359]$&amp;nbsp;pwd&lt;br /&gt;/dbbackup/svc01/20251230I/base/57359&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;57359]$&amp;nbsp;ls&amp;nbsp;-alh&amp;nbsp;*65551*&lt;br /&gt;-rw-------&amp;nbsp;1&amp;nbsp;postgres&amp;nbsp;postgres&amp;nbsp;16K&amp;nbsp;Dec&amp;nbsp;30&amp;nbsp;00:50&amp;nbsp;INCREMENTAL.65551&lt;br /&gt;-rw-------&amp;nbsp;1&amp;nbsp;postgres&amp;nbsp;postgres&amp;nbsp;&amp;nbsp;12&amp;nbsp;Dec&amp;nbsp;30&amp;nbsp;00:50&amp;nbsp;INCREMENTAL.65551_vm&lt;br /&gt;&lt;br /&gt;16K로&amp;nbsp;변경된&amp;nbsp;블록만&amp;nbsp;저장됨을&amp;nbsp;확인&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3.&amp;nbsp;pg_basebackup&amp;nbsp;을&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;(전체&amp;nbsp;백업)&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;pg_basebackup을&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구는&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;or&amp;nbsp;증분&amp;nbsp;백업을&amp;nbsp;이용하는&amp;nbsp;방식이&amp;nbsp;있다. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.1 전체 백업 을 이용한 완전 복구&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1)&amp;nbsp;데이터베이스&amp;nbsp;클러스터&amp;nbsp;내의&amp;nbsp;모든&amp;nbsp;파일을&amp;nbsp;삭제한다 &lt;br /&gt;2)&amp;nbsp;백업본을&amp;nbsp;원래&amp;nbsp;위치로&amp;nbsp;복사한다 &lt;br /&gt;3)&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성 &lt;br /&gt;4)&amp;nbsp;recovery.signal&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;5)&amp;nbsp;restore_command&amp;nbsp;파라미터&amp;nbsp;설정 &lt;br /&gt;6)&amp;nbsp;인스턴스&amp;nbsp;시작 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#복구&amp;nbsp;테스트&amp;nbsp;위해&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;수행 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/20260114F&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P &lt;br /&gt;Password: &lt;br /&gt;pg_basebackup:&amp;nbsp;initiating&amp;nbsp;base&amp;nbsp;backup,&amp;nbsp;waiting&amp;nbsp;for&amp;nbsp;checkpoint&amp;nbsp;to&amp;nbsp;complete &lt;br /&gt;... &lt;br /&gt;&lt;br /&gt;#백업&amp;nbsp;후&amp;nbsp;테스트&amp;nbsp;테이블에&amp;nbsp;100만건&amp;nbsp;추가&amp;nbsp;입력&amp;nbsp; &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'B'&amp;nbsp;from&amp;nbsp;generate_series(1,1000000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000000 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#$PGDATA&amp;nbsp;볼륨&amp;nbsp;디스크&amp;nbsp;장애로&amp;nbsp;모든&amp;nbsp;데이터&amp;nbsp;파일&amp;nbsp;손상&amp;nbsp;가정 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;$PGDATA &lt;br /&gt;&lt;br /&gt;#백업된&amp;nbsp;$PGDATA&amp;nbsp;파일&amp;nbsp;원래&amp;nbsp;위치로&amp;nbsp;복사&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;/dbbackup/svc01 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cp&amp;nbsp;-rp&amp;nbsp;20260114F&amp;nbsp;/data/svc01 &lt;br /&gt;&lt;br /&gt;#pg_wal&amp;nbsp;디렉토리에&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성&amp;nbsp;-&amp;nbsp;WAL파일&amp;nbsp;별도&amp;nbsp;디렉토리에&amp;nbsp;저장되므로&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;pg_wal &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/pg_wal/svc01&amp;nbsp;./pg_wal &lt;br /&gt;&lt;br /&gt;-&amp;gt;복구준비&amp;nbsp;완료 &lt;br /&gt;#&amp;nbsp;$PGDATA에&amp;nbsp;recovery.signal&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;touch&amp;nbsp;recovery.signal &lt;br /&gt;&lt;br /&gt;#아카이브&amp;nbsp;적용&amp;nbsp;설정&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;echo&amp;nbsp;&quot;restore_command&amp;nbsp;='cp&amp;nbsp;/dbbackup/svc01/archive/%f&amp;nbsp;%p'&quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;postgresql.auto.conf &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;인스턴스&amp;nbsp;기동&amp;nbsp;-&amp;gt;&amp;nbsp;restore_command&amp;nbsp;파라미터에&amp;nbsp;지정된&amp;nbsp;디렉토리에서&amp;nbsp;아카이브된&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;모두&amp;nbsp;적용하고,&amp;nbsp;이어서&amp;nbsp;$PGDATA/pg_wal&amp;nbsp;디렉토리의&amp;nbsp;Current&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;적용한다. &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;start &lt;br /&gt;waiting&amp;nbsp;for&amp;nbsp;server&amp;nbsp;to&amp;nbsp;start....2026-01-14&amp;nbsp;07:49:44.167&amp;nbsp;UTC&amp;nbsp;[4341]&amp;nbsp;LOG:&amp;nbsp;&amp;nbsp;redirecting&amp;nbsp;log&amp;nbsp;output&amp;nbsp;to&amp;nbsp;logging&amp;nbsp;collector&amp;nbsp;process &lt;br /&gt;2026-01-14&amp;nbsp;07:49:44.167&amp;nbsp;UTC&amp;nbsp;[4341]&amp;nbsp;HINT:&amp;nbsp;&amp;nbsp;Future&amp;nbsp;log&amp;nbsp;output&amp;nbsp;will&amp;nbsp;appear&amp;nbsp;in&amp;nbsp;directory&amp;nbsp;&quot;log&quot;. &lt;br /&gt;&amp;nbsp;done &lt;br /&gt;server&amp;nbsp;started &lt;br /&gt;&lt;br /&gt;#확인 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;psql &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;postgres=#&amp;nbsp;\c&amp;nbsp;svcdb &lt;br /&gt;You&amp;nbsp;are&amp;nbsp;now&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;database&amp;nbsp;&quot;svcdb&quot;&amp;nbsp;as&amp;nbsp;user&amp;nbsp;&quot;postgres&quot;. &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;2000001 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.2 증분 백업을 이용한 완전 복구&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;pg_combinebackup&amp;nbsp;명령어&amp;nbsp;이용&amp;nbsp;외에&amp;nbsp;전체복구와&amp;nbsp;비슷&amp;nbsp; &lt;br /&gt;&lt;br /&gt;1)&amp;nbsp;데이터베이스&amp;nbsp;클러스터&amp;nbsp;내의&amp;nbsp;모든&amp;nbsp;파일을&amp;nbsp;삭제한다 &lt;br /&gt;2)&amp;nbsp;pg_combinebackup&amp;nbsp;명령어를&amp;nbsp;이용해서&amp;nbsp;전체,증분&amp;nbsp;백업&amp;nbsp;파일을&amp;nbsp;합쳐서&amp;nbsp;복원한다. &lt;br /&gt;3)&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성 &lt;br /&gt;4)&amp;nbsp;recovery.signal&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;5)&amp;nbsp;restore_command&amp;nbsp;파라미터&amp;nbsp;설정 &lt;br /&gt;6)&amp;nbsp;인스턴스&amp;nbsp;시작 &lt;br /&gt;&lt;br /&gt;#테스트&amp;nbsp;데이터&amp;nbsp;insert &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'C'&amp;nbsp;from&amp;nbsp;generate_series(1,1000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000 &lt;br /&gt;&lt;br /&gt;#전체백업&amp;nbsp;이후&amp;nbsp;첫번째&amp;nbsp;증분백업&amp;nbsp;&amp;nbsp;(전체백업은&amp;nbsp;직전&amp;nbsp;생성한&amp;nbsp;20260114F&amp;nbsp;이용) &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/2026011417I&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P&amp;nbsp;--incremental=/dbbackup/svc01/20260114F/backup_manifest &lt;br /&gt;&lt;br /&gt;#테스트&amp;nbsp;데이터&amp;nbsp;insert&amp;nbsp;2&amp;nbsp;(복수개의&amp;nbsp;증분파일&amp;nbsp;생성위함) &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'D'&amp;nbsp;from&amp;nbsp;generate_series(1,1000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000 &lt;br /&gt;&lt;br /&gt;#2번째&amp;nbsp;증분백업&amp;nbsp;(&amp;nbsp;이전&amp;nbsp;증분백업의&amp;nbsp;backup_manifest&amp;nbsp;사용) &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_basebackup&amp;nbsp;-D&amp;nbsp;/dbbackup/svc01/2026011418I&amp;nbsp;-U&amp;nbsp;postgres&amp;nbsp;-c&amp;nbsp;fast&amp;nbsp;-v&amp;nbsp;-P&amp;nbsp;--incremental=/dbbackup/svc01/2026011417I/backup_manifest &lt;br /&gt;&lt;br /&gt;#$PGDATA&amp;nbsp;볼륨&amp;nbsp;삭제&amp;nbsp;-장애 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;$PGDATA &lt;br /&gt;&lt;br /&gt;#pg_combinebackup&amp;nbsp;으로&amp;nbsp;전체백업과&amp;nbsp;증분백업을&amp;nbsp;순서대로&amp;nbsp;조합하여&amp;nbsp;복원한다.&amp;nbsp;전체백업&amp;nbsp;-&amp;gt;&amp;nbsp;가장오래된&amp;nbsp;증분백업&amp;nbsp;-&amp;gt;&amp;nbsp;최근&amp;nbsp;증분백업&amp;nbsp;순&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_combinebackup&amp;nbsp;-o&amp;nbsp;/data/svc01&amp;nbsp;/dbbackup/svc01/20260114F&amp;nbsp;/dbbackup/svc01/2026011417I&amp;nbsp;/dbbackup/svc01/2026011418I &lt;br /&gt;&lt;br /&gt;--이하&amp;nbsp;과정&amp;nbsp;전체증분&amp;nbsp;복구과정과&amp;nbsp;동일 &lt;br /&gt;#pg_wal&amp;nbsp;디렉토리에&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성&amp;nbsp;-&amp;nbsp;WAL파일&amp;nbsp;별도&amp;nbsp;디렉토리에&amp;nbsp;저장되므로&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;pg_wal &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/pg_wal/svc01&amp;nbsp;./pg_wal &lt;br /&gt;&lt;br /&gt;-&amp;gt;복구준비&amp;nbsp;완료 &lt;br /&gt;#&amp;nbsp;$PGDATA에&amp;nbsp;recovery.signal&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;touch&amp;nbsp;recovery.signal &lt;br /&gt;&lt;br /&gt;#아카이브&amp;nbsp;적용&amp;nbsp;설정&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;echo&amp;nbsp;&quot;restore_command&amp;nbsp;='cp&amp;nbsp;/dbbackup/svc01/archive/%f&amp;nbsp;%p'&quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;postgresql.auto.conf &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;인스턴스&amp;nbsp;기동&amp;nbsp;-&amp;gt;&amp;nbsp;restore_command&amp;nbsp;파라미터에&amp;nbsp;지정된&amp;nbsp;디렉토리에서&amp;nbsp;아카이브된&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;모두&amp;nbsp;적용하고,&amp;nbsp;이어서&amp;nbsp;$PGDATA/pg_wal&amp;nbsp;디렉토리의&amp;nbsp;Current&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;적용한다. &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;start &lt;br /&gt;waiting&amp;nbsp;for&amp;nbsp;server&amp;nbsp;to&amp;nbsp;start....2026-01-14&amp;nbsp;08:39:00.718&amp;nbsp;UTC&amp;nbsp;[5077]&amp;nbsp;LOG:&amp;nbsp;&amp;nbsp;redirecting&amp;nbsp;log&amp;nbsp;output&amp;nbsp;to&amp;nbsp;logging&amp;nbsp;collector&amp;nbsp;process &lt;br /&gt;2026-01-14&amp;nbsp;08:39:00.718&amp;nbsp;UTC&amp;nbsp;[5077]&amp;nbsp;HINT:&amp;nbsp;&amp;nbsp;Future&amp;nbsp;log&amp;nbsp;output&amp;nbsp;will&amp;nbsp;appear&amp;nbsp;in&amp;nbsp;directory&amp;nbsp;&quot;log&quot;. &lt;br /&gt;&amp;nbsp;done &lt;br /&gt;server&amp;nbsp;started &lt;br /&gt;&lt;br /&gt;#확인 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;psql &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;2002001&lt;/p&gt;</description>
      <category>DATABASE/Postgresql</category>
      <category>pg_basebackup</category>
      <category>PostgreSQL</category>
      <category>postgresql물리백업과 복구</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/85</guid>
      <comments>https://bintech.tistory.com/entry/PostgreSQL-%EB%AC%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC-2-pgbasebackup#entry85comment</comments>
      <pubDate>Tue, 30 Dec 2025 10:16:33 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 물리 백업과 복구 1 - pgBackRest</title>
      <link>https://bintech.tistory.com/entry/PostgreSQL-%EB%AC%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC-pgBackRest-pgbasebackup</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ErX0M/dJMcaajC1t7/nM3KRA2gXIAJML6EkQxkU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ErX0M/dJMcaajC1t7/nM3KRA2gXIAJML6EkQxkU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ErX0M/dJMcaajC1t7/nM3KRA2gXIAJML6EkQxkU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FErX0M%2FdJMcaajC1t7%2FnM3KRA2gXIAJML6EkQxkU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리&amp;nbsp;백업&amp;nbsp;:&amp;nbsp;데이터베이스&amp;nbsp;클러스터를&amp;nbsp;구성하는&amp;nbsp;파일&amp;nbsp;단위의&amp;nbsp;백업 &lt;br /&gt;온라인&amp;nbsp;백업&amp;nbsp;-&amp;nbsp;인스턴스가&amp;nbsp;기동&amp;nbsp;중인&amp;nbsp;상태에서&amp;nbsp;수행 &lt;br /&gt;오프라인&amp;nbsp;백업&amp;nbsp;-&amp;nbsp;인스턴스를&amp;nbsp;종료한&amp;nbsp;뒤&amp;nbsp;수행 &lt;br /&gt;&lt;br /&gt;장애시점까지의&amp;nbsp;'완벽한&amp;nbsp;복구'를&amp;nbsp;지원하며,&amp;nbsp; &lt;br /&gt;사용자의&amp;nbsp;실수로&amp;nbsp;데이터가&amp;nbsp;삭제되었을&amp;nbsp;경우에도&amp;nbsp;손실&amp;nbsp;직전&amp;nbsp;시점까지&amp;nbsp;복구할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;시점&amp;nbsp;복구(Point-in-Time&amp;nbsp;Recovery)&amp;nbsp;기능&amp;nbsp;제공&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.&amp;nbsp;백업&amp;nbsp;및&amp;nbsp;복구&amp;nbsp;개요&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 백업 유형 &lt;br /&gt;-&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;(&amp;nbsp;Full&amp;nbsp;Backup&amp;nbsp;)&amp;nbsp;:&amp;nbsp;데이터베이스&amp;nbsp;클러스터&amp;nbsp;내의&amp;nbsp;모든&amp;nbsp;파일을&amp;nbsp;백업 &lt;br /&gt;-&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;(&amp;nbsp;Incremental&amp;nbsp;Backup&amp;nbsp;)&amp;nbsp;:&amp;nbsp;마지막&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;이후에&amp;nbsp;변경된&amp;nbsp;내용만&amp;nbsp;백업 &lt;br /&gt;-&amp;nbsp;차등&amp;nbsp;백업&amp;nbsp;(&amp;nbsp;Differential&amp;nbsp;Backup&amp;nbsp;)&amp;nbsp;:&amp;nbsp;마지막&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;이후에&amp;nbsp;변경된&amp;nbsp;내용만&amp;nbsp;백업 &lt;br /&gt;&lt;br /&gt;2)&amp;nbsp;복구에&amp;nbsp;필요한&amp;nbsp;백업&amp;nbsp;데이터&amp;nbsp;세트&amp;nbsp; &lt;br /&gt;최근&amp;nbsp;백업&amp;nbsp;파일&amp;nbsp;+&amp;nbsp;장애시점까지&amp;nbsp;생성된&amp;nbsp;모든&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp; &lt;br /&gt;-&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;:&amp;nbsp;마지막&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;+&amp;nbsp;모든&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;+&amp;nbsp;마지막&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;이후의&amp;nbsp;WAL&amp;nbsp;파일 &lt;br /&gt;-&amp;nbsp;차등&amp;nbsp;백업&amp;nbsp;:&amp;nbsp;마지막&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;+&amp;nbsp;마지막&amp;nbsp;차등&amp;nbsp;백업&amp;nbsp;+&amp;nbsp;해당&amp;nbsp;시점&amp;nbsp;이후의&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp; &lt;br /&gt;&lt;br /&gt;증분&amp;nbsp;백업의&amp;nbsp;경우&amp;nbsp;이전&amp;nbsp;백업&amp;nbsp;이후&amp;nbsp;변경분만&amp;nbsp;백업하므로&amp;nbsp;백업속도는&amp;nbsp;빠르나,&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;주기가&amp;nbsp;길어질수록&amp;nbsp;복구&amp;nbsp;대상이&amp;nbsp;많아지고&amp;nbsp;북구시간이&amp;nbsp;늘어날&amp;nbsp;수&amp;nbsp;있음. &lt;br /&gt;차등백업&amp;nbsp;:&amp;nbsp;전체&amp;nbsp;백업&amp;nbsp;이후의&amp;nbsp;변경분을&amp;nbsp;백업하므로&amp;nbsp;백업속도는&amp;nbsp;느리나,&amp;nbsp;하나의&amp;nbsp;전체백업과&amp;nbsp;하나의&amp;nbsp;차등&amp;nbsp;백업만&amp;nbsp;있으면&amp;nbsp;복구가&amp;nbsp;가능하므로,&amp;nbsp;복구&amp;nbsp;속도&amp;nbsp;측면에서는&amp;nbsp;차등&amp;nbsp;백업&amp;nbsp;방식이&amp;nbsp;더&amp;nbsp;유리 &lt;br /&gt;&lt;br /&gt;3)&amp;nbsp;백업&amp;nbsp;주기 &lt;br /&gt;복구시간&amp;nbsp;관점에서&amp;nbsp;전체&amp;nbsp;백업을&amp;nbsp;매일&amp;nbsp;수행하는&amp;nbsp;것이&amp;nbsp;이상적.&amp;nbsp;최근&amp;nbsp;수행&amp;nbsp;전체백업과&amp;nbsp;이후&amp;nbsp;WAL파일만&amp;nbsp;있으면&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;가능. &lt;br /&gt;어려운&amp;nbsp;경우&amp;nbsp; &lt;br /&gt;전체백업&amp;nbsp;주&amp;nbsp;1회&amp;nbsp;+&amp;nbsp;차등&amp;nbsp;or&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;매일&amp;nbsp;수행하는&amp;nbsp;방식으로&amp;nbsp;운영 &lt;br /&gt;&lt;br /&gt;4)&amp;nbsp;백업&amp;nbsp;파일&amp;nbsp;보관&amp;nbsp;기간 &lt;br /&gt;필요에&amp;nbsp;따라&amp;nbsp;1주일&amp;nbsp;~&amp;nbsp;1개월&amp;nbsp;범위&amp;nbsp;내에서&amp;nbsp;파일&amp;nbsp;보관 &lt;br /&gt;&lt;br /&gt;5)&amp;nbsp;백업&amp;nbsp;툴&amp;nbsp;선정 &lt;br /&gt;v16&amp;nbsp;이하&amp;nbsp;&amp;nbsp;:&amp;nbsp;pgBackRest&amp;nbsp;모든&amp;nbsp;측면에서&amp;nbsp;유리 &lt;br /&gt;v17&amp;nbsp;이상&amp;nbsp;:&amp;nbsp;pg_basebackup&amp;nbsp;강력한&amp;nbsp;증분&amp;nbsp;백업&amp;nbsp;기능&amp;nbsp;지원 &lt;br /&gt;&lt;br /&gt;pgBackRest&amp;nbsp;:&amp;nbsp;변경된&amp;nbsp;파일&amp;nbsp;단위의&amp;nbsp;증분&amp;nbsp;백업,&amp;nbsp;1GB&amp;nbsp;파일에서&amp;nbsp;1바이트만&amp;nbsp;변경돼도&amp;nbsp;1GB파일을&amp;nbsp;다시&amp;nbsp;백업하므로&amp;nbsp;증분or&amp;nbsp;차등&amp;nbsp;백업&amp;nbsp;사용해도&amp;nbsp;백업&amp;nbsp;디스크&amp;nbsp;사용률&amp;nbsp;절감&amp;nbsp;효과&amp;nbsp;크지&amp;nbsp;않음. &lt;br /&gt;pg_basebackup&amp;nbsp;:&amp;nbsp;'변경된&amp;nbsp;블록&amp;nbsp;단위',&amp;nbsp;백업&amp;nbsp;시간과&amp;nbsp;백업&amp;nbsp;용량&amp;nbsp;모두&amp;nbsp;줄일&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.&amp;nbsp;pgBackRest&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;환경&amp;nbsp;파일&amp;nbsp;설정&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#EPEL&amp;nbsp;저장소&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;pgBackRest설치 &lt;br /&gt;[root@11039b77a76b /]# dnf install epel-release-9-10.el9.noarch.rpm&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[root@ &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;11039b77a76b&lt;span&gt; &lt;/span&gt;&lt;/span&gt;/]# dnf install -y epel-release&lt;br /&gt;[root@11039b77a76b&amp;nbsp;/]#&amp;nbsp;dnf&amp;nbsp;install&amp;nbsp;pgbackrest &lt;br /&gt;&lt;br /&gt;#백업파일&amp;nbsp;생성 &lt;br /&gt;[root@11039b77a76b&amp;nbsp;/]#&amp;nbsp;mkdir&amp;nbsp;dbbackup &lt;br /&gt;[root@11039b77a76b&amp;nbsp;/]#&amp;nbsp;chown&amp;nbsp;-R&amp;nbsp;postgres:postgres&amp;nbsp;/dbbackup &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;mkdir&amp;nbsp;log &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;mkdir&amp;nbsp;spool &lt;br /&gt;&lt;br /&gt;#pgBackRest&amp;nbsp;환경&amp;nbsp;설정&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;vi&amp;nbsp;pgbackrest.conf &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;mkdir&amp;nbsp;log &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;mkdir&amp;nbsp;spool &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;cat&amp;nbsp;pgbackrest.conf &lt;br /&gt;&lt;br /&gt;[global] &lt;br /&gt;repo1-path=/dbbackup &lt;br /&gt;log-path=/dbbackup/log &lt;br /&gt;spool-path=/dbbackup/spool &lt;br /&gt;repo1-retention-full=2 &lt;br /&gt;repo1-retention-diff=2 &lt;br /&gt;&lt;br /&gt;[svcdb] &lt;br /&gt;pg1-path=/data/svc01 &lt;br /&gt;pg1-port=5432 &lt;br /&gt;start-fast=y &lt;br /&gt;compress-type=gz &lt;br /&gt;compress-level=1 &lt;br /&gt;process-max=4 &lt;br /&gt;&lt;br /&gt;#스탠자&amp;nbsp;생성 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;stanza-create&amp;nbsp;--config=/dbbackup/pgbackrest.conf &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;dbbackup]$&amp;nbsp;ls&amp;nbsp;-al &lt;br /&gt;total&amp;nbsp;28 &lt;br /&gt;.. &lt;br /&gt;drwxr-x---&amp;nbsp;3&amp;nbsp;postgres&amp;nbsp;postgres&amp;nbsp;4096&amp;nbsp;Dec&amp;nbsp;29&amp;nbsp;04:41&amp;nbsp;archive &lt;br /&gt;drwxr-x---&amp;nbsp;3&amp;nbsp;postgres&amp;nbsp;postgres&amp;nbsp;4096&amp;nbsp;Dec&amp;nbsp;29&amp;nbsp;04:41&amp;nbsp;backup &lt;br /&gt;.. &lt;br /&gt;&lt;br /&gt;#postgresql.conf&amp;nbsp;파일&amp;nbsp;설정&amp;nbsp;추가&amp;nbsp;후&amp;nbsp;재시작&amp;nbsp; &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;svc01]$&amp;nbsp;vi&amp;nbsp;postgresql.conf &lt;br /&gt;&lt;br /&gt;archive_mode&amp;nbsp;=&amp;nbsp;on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;enables&amp;nbsp;archiving;&amp;nbsp;off,&amp;nbsp;on,&amp;nbsp;or&amp;nbsp;always &lt;br /&gt;archive_command&amp;nbsp;=&amp;nbsp;'pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;archive-push&amp;nbsp;%p&amp;nbsp;--config=/dbbackup/pgbackrest.conf'&amp;nbsp; &lt;br /&gt;&lt;br /&gt;[postgres@11039b77a76b svc01]$ pg_ctl restart&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3&lt;/b&gt;&lt;b&gt;.&amp;nbsp;pgBackRest&amp;nbsp;이용한&amp;nbsp;백업&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--type에&amp;nbsp;따라&amp;nbsp;full(전체)&amp;nbsp;/&amp;nbsp;diff(차등)&amp;nbsp;/&amp;nbsp;incr&amp;nbsp;(증분) &lt;br /&gt;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;--type=full&amp;nbsp;backup&amp;nbsp;--config=/dbbackup/pgbackrest.conf &lt;br /&gt;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;--type=diff&amp;nbsp;backup&amp;nbsp;--config=/dbbackup/pgbackrest.conf &lt;br /&gt;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;--type=incr&amp;nbsp;backup&amp;nbsp;--config=/dbbackup/pgbackrest.conf&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. pgBackRest&amp;nbsp;를&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완전&amp;nbsp;복구를&amp;nbsp;위해서는&amp;nbsp;최근&amp;nbsp;백업본&amp;nbsp;+&amp;nbsp;아카이브된&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;+&amp;nbsp;Current&amp;nbsp;WAL&amp;nbsp;파일이&amp;nbsp;필요하다. &lt;br /&gt;&lt;br /&gt;$PGDATA&amp;nbsp;디렉토리와&amp;nbsp;테이블스페이스&amp;nbsp;디렉토리&amp;nbsp;존재하는&amp;nbsp;모든&amp;nbsp;데이터&amp;nbsp;파일&amp;nbsp;삭제된&amp;nbsp;상황에서도 &lt;br /&gt;위&amp;nbsp;파일을&amp;nbsp;통해&amp;nbsp;완전&amp;nbsp;복구가&amp;nbsp;가능하다. &lt;br /&gt;&lt;br /&gt;WAL디스크볼륨손상으로&amp;nbsp;Current&amp;nbsp;Wal&amp;nbsp;파일&amp;nbsp;유실된&amp;nbsp;경우,&amp;nbsp;완전&amp;nbsp;복구할&amp;nbsp;수&amp;nbsp;없으며&amp;nbsp;백업된&amp;nbsp;WAL&amp;nbsp;까지만&amp;nbsp;복구가능하다. &lt;br /&gt;이를&amp;nbsp;불완전&amp;nbsp;복구라고&amp;nbsp;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&amp;nbsp;pgBackRest&amp;nbsp;사용시에는&amp;nbsp;summarize_wal&amp;nbsp;파라미터를&amp;nbsp;off로&amp;nbsp;유지해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4-1. pgBackRest&amp;nbsp;를&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;(전체&amp;nbsp;복원&amp;nbsp;방식)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;$PGDATA&amp;nbsp;볼륨&amp;nbsp;자체가&amp;nbsp;손상된&amp;nbsp;경우에&amp;nbsp;사용한다. &lt;br /&gt;&amp;nbsp;1)&amp;nbsp;pgbackrest&amp;nbsp;restore&amp;nbsp;명령어&amp;nbsp;실행 &lt;br /&gt;&amp;nbsp;2)&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;저장&amp;nbsp;디렉토리에&amp;nbsp;대한&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성 &lt;br /&gt;&amp;nbsp;3)&amp;nbsp;인스턴스&amp;nbsp;시작 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#테스트&amp;nbsp;데이터&amp;nbsp;입력 &lt;br /&gt;svcdb=#&amp;nbsp;drop&amp;nbsp;table&amp;nbsp;t1&amp;nbsp;cascade; &lt;br /&gt;DROP&amp;nbsp;TABLE &lt;br /&gt;svcdb=#&amp;nbsp;create&amp;nbsp;table&amp;nbsp;t1&amp;nbsp;(c1&amp;nbsp;char(100)); &lt;br /&gt;CREATE&amp;nbsp;TABLE &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'A'&amp;nbsp;from&amp;nbsp;generate_series(1,1000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000 &lt;br /&gt;&lt;br /&gt;#전체백업&amp;nbsp;수행 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;dbbackup]$&amp;nbsp;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;--type=full&amp;nbsp;backup&amp;nbsp;--config=/dbbackup/pgbackrest.conf &lt;br /&gt;&lt;br /&gt;#추가&amp;nbsp;데이터&amp;nbsp;입력&amp;nbsp; &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'B'&amp;nbsp;from&amp;nbsp;generate_series(1,1000000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1000000 &lt;br /&gt;&lt;br /&gt;#장애가정1)&amp;nbsp;볼륨&amp;nbsp;디스크&amp;nbsp;장애로&amp;nbsp;모든&amp;nbsp;데이터파일&amp;nbsp;손상된&amp;nbsp;-&amp;nbsp;$PGDATA&amp;nbsp;디렉토리&amp;nbsp;삭제 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svcdb]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;$PGDATA &lt;br /&gt;&lt;br /&gt;#복원명령어&amp;nbsp;수행 &lt;br /&gt;&lt;br /&gt;[postgres@c05692802685&amp;nbsp;svcdb]$&amp;nbsp;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;restore&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--log-level-console=info &lt;br /&gt;&lt;br /&gt;2025-12-30&amp;nbsp;01:51:55.399&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;command&amp;nbsp;begin&amp;nbsp;2.57.0:&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--exec-id=1319-ed377784&amp;nbsp;--log-level-console=info&amp;nbsp;--log-path=/dbbackup/log&amp;nbsp;--pg1-path=/data/svc01&amp;nbsp;--proc &lt;br /&gt;ess-max=4&amp;nbsp;--repo1-path=/dbbackup&amp;nbsp;--spool-path=/dbbackup/spool&amp;nbsp;--stanza=svcdb &lt;br /&gt;2025-12-30&amp;nbsp;01:51:55.404&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;repo1:&amp;nbsp;restore&amp;nbsp;backup&amp;nbsp;set&amp;nbsp;20251230-014945F,&amp;nbsp;recovery&amp;nbsp;will&amp;nbsp;start&amp;nbsp;at&amp;nbsp;2025-12-30&amp;nbsp;01:49:45 &lt;br /&gt;2025-12-30&amp;nbsp;01:51:55.404&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;WARN:&amp;nbsp;contents&amp;nbsp;of&amp;nbsp;directory&amp;nbsp;link&amp;nbsp;'pg_wal'&amp;nbsp;will&amp;nbsp;be&amp;nbsp;restored&amp;nbsp;in&amp;nbsp;a&amp;nbsp;directory&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;location &lt;br /&gt;2025-12-30&amp;nbsp;01:51:58.069&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;write&amp;nbsp;updated&amp;nbsp;/data/svc01/postgresql.auto.conf &lt;br /&gt;2025-12-30&amp;nbsp;01:51:58.084&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;global/pg_control&amp;nbsp;(performed&amp;nbsp;last&amp;nbsp;to&amp;nbsp;ensure&amp;nbsp;aborted&amp;nbsp;restores&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;started) &lt;br /&gt;2025-12-30&amp;nbsp;01:51:58.087&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;size&amp;nbsp;=&amp;nbsp;197.9MB,&amp;nbsp;file&amp;nbsp;total&amp;nbsp;=&amp;nbsp;1286 &lt;br /&gt;2025-12-30&amp;nbsp;01:51:58.088&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;command&amp;nbsp;end:&amp;nbsp;completed&amp;nbsp;successfully&amp;nbsp;(2691ms) &lt;br /&gt;&lt;br /&gt;복구&amp;nbsp;완료시,&amp;nbsp;복구를&amp;nbsp;위한&amp;nbsp;아래&amp;nbsp;사항이&amp;nbsp;자동&amp;nbsp;적용됨 &lt;br /&gt;-&amp;nbsp;복구모드로&amp;nbsp;인스턴스&amp;nbsp;기동하도록&amp;nbsp;$PGDATA&amp;nbsp;디렉토리에&amp;nbsp;recovery.signal&amp;nbsp;파일&amp;nbsp;생성 &lt;br /&gt;-&amp;nbsp;$PGDATA/postgresql.auto.conf&amp;nbsp;파일에&amp;nbsp;restore_command&amp;nbsp;파라미터&amp;nbsp;설정&amp;nbsp; &lt;br /&gt;&lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;cat&amp;nbsp;$PGDATA/postgresql.auto.conf &lt;br /&gt;#&amp;nbsp;Do&amp;nbsp;not&amp;nbsp;edit&amp;nbsp;this&amp;nbsp;file&amp;nbsp;manually! &lt;br /&gt;#&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;overwritten&amp;nbsp;by&amp;nbsp;the&amp;nbsp;ALTER&amp;nbsp;SYSTEM&amp;nbsp;command. &lt;br /&gt;synchronous_standby_names&amp;nbsp;=&amp;nbsp;'' &lt;br /&gt;primary_conninfo&amp;nbsp;=&amp;nbsp;'user=dbarep&amp;nbsp;password=reppass&amp;nbsp;channel_binding=prefer&amp;nbsp;host=172.17.0.2&amp;nbsp;port=5432&amp;nbsp;sslmode=prefer&amp;nbsp;sslnegotiation=postgres&amp;nbsp;sslcompression=0&amp;nbsp;sslcertmode=allow&amp;nbsp;sslsni=1&amp;nbsp;ssl_min_protocol_versio &lt;br /&gt;n=TLSv1.2&amp;nbsp;gssencmode=prefer&amp;nbsp;krbsrvname=postgres&amp;nbsp;gssdelegation=0&amp;nbsp;target_session_attrs=any&amp;nbsp;load_balance_hosts=disable' &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;Recovery&amp;nbsp;settings&amp;nbsp;generated&amp;nbsp;by&amp;nbsp;pgBackRest&amp;nbsp;restore&amp;nbsp;on&amp;nbsp;2025-12-30&amp;nbsp;01:51:58 &lt;br /&gt;restore_command&amp;nbsp;=&amp;nbsp;'pgbackrest&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--stanza=svcdb&amp;nbsp;archive-get&amp;nbsp;%f&amp;nbsp;&quot;%p&quot;' &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;current&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;적용.&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;수행을&amp;nbsp;위한&amp;nbsp;매우&amp;nbsp;중요한&amp;nbsp;작업&amp;nbsp; &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;pg_wal &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/pg_wal/svc01&amp;nbsp;./pg_wal &lt;br /&gt;&lt;br /&gt;#인스턴스&amp;nbsp;기동 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;start &lt;br /&gt;&lt;br /&gt;인스턴스&amp;nbsp;기동하면&amp;nbsp;restore_command파라미터에&amp;nbsp;지정된&amp;nbsp;명령어를&amp;nbsp;이용해서&amp;nbsp;WAL&amp;nbsp;파일이&amp;nbsp;순차적으로&amp;nbsp;적용된다. &lt;br /&gt;아카이브된&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;적용&amp;nbsp;후&amp;nbsp;/pg_wal/svc01&amp;nbsp;디렉토리에&amp;nbsp;저장된&amp;nbsp;current&amp;nbsp;WAL&amp;nbsp;파일이&amp;nbsp;적용됨 &lt;br /&gt;&lt;br /&gt;#확인 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1001000 &lt;br /&gt;(1&amp;nbsp;row)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2 pgBackRest&amp;nbsp;를&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;(&amp;nbsp;Delta&amp;nbsp;옵션)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;델타&amp;nbsp;옵션을&amp;nbsp;이용한&amp;nbsp;완전&amp;nbsp;복구는&amp;nbsp;$PGDATA&amp;nbsp;디스크&amp;nbsp;볼륨&amp;nbsp;전체가&amp;nbsp;아닌, &lt;br /&gt;일부&amp;nbsp;데이터&amp;nbsp;파일만&amp;nbsp;손상된&amp;nbsp;경우&amp;nbsp;사용하는&amp;nbsp;방식 &lt;br /&gt;&lt;br /&gt;1)&amp;nbsp;인스턴스&amp;nbsp;종료 &lt;br /&gt;2)&amp;nbsp;pgbackrest&amp;nbsp;restore&amp;nbsp;명령어를&amp;nbsp;--delta&amp;nbsp;옵션으로&amp;nbsp;실행 &lt;br /&gt;3)&amp;nbsp;WAL&amp;nbsp;파일&amp;nbsp;저장&amp;nbsp;디렉토리에&amp;nbsp;대한&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성 &lt;br /&gt;4)&amp;nbsp;인스턴스&amp;nbsp;시작&amp;nbsp; &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;pg_relation_filepath('t1'); &lt;br /&gt;&amp;nbsp;pg_relation_filepath &lt;br /&gt;---------------------- &lt;br /&gt;&amp;nbsp;base/16395/65551 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;#위치&amp;nbsp;삭제&amp;nbsp; &lt;br /&gt;svcdb=#&amp;nbsp;\!&amp;nbsp;rm&amp;nbsp;$PGDATA/base/16395/65551 &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;ERROR:&amp;nbsp;&amp;nbsp;could&amp;nbsp;not&amp;nbsp;open&amp;nbsp;file&amp;nbsp;&quot;base/16395/65551&quot;:&amp;nbsp;No&amp;nbsp;such&amp;nbsp;file&amp;nbsp;or&amp;nbsp;directory &lt;br /&gt;&lt;br /&gt;#인스턴스&amp;nbsp;종료&amp;nbsp;후&amp;nbsp;delta&amp;nbsp;옵션으로&amp;nbsp;복원&amp;nbsp;수행&amp;nbsp; &lt;br /&gt;svcdb=#&amp;nbsp;exit &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;stop &lt;br /&gt;&lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;restore&amp;nbsp;--delta&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--log-level-console=info &lt;br /&gt;2026-01-14&amp;nbsp;05:46:18.503&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;command&amp;nbsp;begin&amp;nbsp;2.57.0:&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--delta&amp;nbsp;--exec-id=2982-12f03714&amp;nbsp;--log-level-console=info&amp;nbsp;--log-path=/dbbackup/log&amp;nbsp;--pg1-path=/data/svc0 &lt;br /&gt;1&amp;nbsp;--process-max=4&amp;nbsp;--repo1-path=/dbbackup&amp;nbsp;--spool-path=/dbbackup/spool&amp;nbsp;--stanza=svcdb &lt;br /&gt;2026-01-14&amp;nbsp;05:46:18.520&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;repo1:&amp;nbsp;restore&amp;nbsp;backup&amp;nbsp;set&amp;nbsp;20251230-014945F,&amp;nbsp;recovery&amp;nbsp;will&amp;nbsp;start&amp;nbsp;at&amp;nbsp;2025-12-30&amp;nbsp;01:49:45 &lt;br /&gt;2026-01-14&amp;nbsp;05:46:18.520&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;WARN:&amp;nbsp;contents&amp;nbsp;of&amp;nbsp;directory&amp;nbsp;link&amp;nbsp;'pg_wal'&amp;nbsp;will&amp;nbsp;be&amp;nbsp;restored&amp;nbsp;in&amp;nbsp;a&amp;nbsp;directory&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;location &lt;br /&gt;2026-01-14&amp;nbsp;05:46:18.526&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;remove&amp;nbsp;invalid&amp;nbsp;files/links/paths&amp;nbsp;from&amp;nbsp;'/data/svc01' &lt;br /&gt;2026-01-14&amp;nbsp;05:46:19.199&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;write&amp;nbsp;updated&amp;nbsp;/data/svc01/postgresql.auto.conf &lt;br /&gt;2026-01-14&amp;nbsp;05:46:19.231&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;global/pg_control&amp;nbsp;(performed&amp;nbsp;last&amp;nbsp;to&amp;nbsp;ensure&amp;nbsp;aborted&amp;nbsp;restores&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;started) &lt;br /&gt;2026-01-14&amp;nbsp;05:46:19.237&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;size&amp;nbsp;=&amp;nbsp;197.9MB,&amp;nbsp;file&amp;nbsp;total&amp;nbsp;=&amp;nbsp;1286 &lt;br /&gt;2026-01-14&amp;nbsp;05:46:19.237&amp;nbsp;P00&amp;nbsp;&amp;nbsp;&amp;nbsp;INFO:&amp;nbsp;restore&amp;nbsp;command&amp;nbsp;end:&amp;nbsp;completed&amp;nbsp;successfully&amp;nbsp;(737ms) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;**델타&amp;nbsp;복원시&amp;nbsp;--link-map&amp;nbsp;옵션&amp;nbsp;사용 &lt;br /&gt;WAL&amp;nbsp;저장&amp;nbsp;디렉토리에&amp;nbsp;대한&amp;nbsp;심볼릭&amp;nbsp;링크를&amp;nbsp;자동으로&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있으나,&amp;nbsp;동일&amp;nbsp;장비에서&amp;nbsp;완전&amp;nbsp;복구&amp;nbsp;수행시에는&amp;nbsp;사용해서는&amp;nbsp;안된다. &lt;br /&gt;ex)&amp;nbsp;--link-map=pg_wal=/pg_wal/svc01&amp;nbsp;옵션&amp;nbsp;적용시&amp;nbsp;'remove&amp;nbsp;invalid&amp;nbsp;files&amp;nbsp;/links/paths&amp;nbsp;from&amp;nbsp;/pg_wal/svc01'&amp;nbsp;메시지와&amp;nbsp;함께 &lt;br /&gt;current&amp;nbsp;WAL&amp;nbsp;파일이&amp;nbsp;삭제되는&amp;nbsp;위험성이&amp;nbsp;있기&amp;nbsp;때문이다. &lt;br /&gt;&lt;br /&gt;#델타&amp;nbsp;복원시&amp;nbsp;수동으로&amp;nbsp;pg_wal&amp;nbsp;디렉토리&amp;nbsp;삭제&amp;nbsp;후&amp;nbsp;심볼릭&amp;nbsp;링크&amp;nbsp;생성 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;pg_wal &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/pg_wal/svc01&amp;nbsp;./pg_wal &lt;br /&gt;&lt;br /&gt;#PG&amp;nbsp;재기동&amp;nbsp;후&amp;nbsp;정상&amp;nbsp;복구&amp;nbsp;확인 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;pg_ctl&amp;nbsp;start &lt;br /&gt;waiting&amp;nbsp;for&amp;nbsp;server&amp;nbsp;to&amp;nbsp;start....2026-01-14&amp;nbsp;05:49:34.014&amp;nbsp;UTC&amp;nbsp;[2991]&amp;nbsp;LOG:&amp;nbsp;&amp;nbsp;redirecting&amp;nbsp;log&amp;nbsp;output&amp;nbsp;to&amp;nbsp;logging&amp;nbsp;collector&amp;nbsp;process &lt;br /&gt;2026-01-14&amp;nbsp;05:49:34.014&amp;nbsp;UTC&amp;nbsp;[2991]&amp;nbsp;HINT:&amp;nbsp;&amp;nbsp;Future&amp;nbsp;log&amp;nbsp;output&amp;nbsp;will&amp;nbsp;appear&amp;nbsp;in&amp;nbsp;directory&amp;nbsp;&quot;log&quot;. &lt;br /&gt;&amp;nbsp;done &lt;br /&gt;server&amp;nbsp;started &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;psql &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;postgres=#&amp;nbsp;\c&amp;nbsp;svcdb &lt;br /&gt;You&amp;nbsp;are&amp;nbsp;now&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;database&amp;nbsp;&quot;svcdb&quot;&amp;nbsp;as&amp;nbsp;user&amp;nbsp;&quot;postgres&quot;. &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1001000 &lt;br /&gt;(1&amp;nbsp;row)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3 pgBackRest를 이용한 시점 복구 (별도 서버)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;시점&amp;nbsp;복구(Point-In-Time&amp;nbsp;Recovery,&amp;nbsp;PITR)&amp;nbsp;는&amp;nbsp;사용자&amp;nbsp;실수나&amp;nbsp;애플리케이션&amp;nbsp;오류&amp;nbsp;등으로&amp;nbsp;인해&amp;nbsp;데이터가&amp;nbsp;손실되었을&amp;nbsp;때 &lt;br /&gt;특정시점으로&amp;nbsp;데이터베이스를&amp;nbsp;되돌리는&amp;nbsp;기능이다.&amp;nbsp; &lt;br /&gt;시점&amp;nbsp;복구는&amp;nbsp;동일서버에서&amp;nbsp;수행할&amp;nbsp;수도&amp;nbsp;있고,&amp;nbsp;별도의&amp;nbsp;서버에서&amp;nbsp;수행할&amp;nbsp;수도&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;ㅇ동일서버&amp;nbsp;복구&amp;nbsp;진행시&amp;nbsp;복원&amp;nbsp;위치,&amp;nbsp;포트,&amp;nbsp;로그&amp;nbsp;파일&amp;nbsp;경로,&amp;nbsp;아카이브&amp;nbsp;명령어&amp;nbsp;등&amp;nbsp;모두&amp;nbsp;재설정&amp;nbsp;해야한다. &lt;br /&gt;&lt;br /&gt;복구를&amp;nbsp;위해&amp;nbsp;일시적으로&amp;nbsp;동일&amp;nbsp;서버에&amp;nbsp;별도&amp;nbsp;인스턴스를&amp;nbsp;기동해야하므로&amp;nbsp;메모리&amp;nbsp;여유율도&amp;nbsp;함께&amp;nbsp;고려해야한다. &lt;br /&gt;&lt;br /&gt;-&amp;gt;&amp;nbsp;이런&amp;nbsp;제약사항으로&amp;nbsp;시점&amp;nbsp;복구는&amp;nbsp;별도의&amp;nbsp;서버에서&amp;nbsp;수행하는&amp;nbsp;것이&amp;nbsp;보다&amp;nbsp;안전하고&amp;nbsp;편리함 &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;별도서버에서의&amp;nbsp;시점&amp;nbsp;복구&amp;nbsp;절차 &lt;br /&gt;1)&amp;nbsp;pg_switch_wal()&amp;nbsp;함수를&amp;nbsp;이용해서&amp;nbsp;current&amp;nbsp;WAL&amp;nbsp;파일을&amp;nbsp;아카이브&amp;nbsp;디렉토리로&amp;nbsp;복사한다. &lt;br /&gt;2)&amp;nbsp;백업&amp;nbsp;파일을&amp;nbsp;복구용&amp;nbsp;서버로&amp;nbsp;전송한다. &lt;br /&gt;3)&amp;nbsp;복구&amp;nbsp;시점을&amp;nbsp;지정하고&amp;nbsp;pgbackrest&amp;nbsp;restore&amp;nbsp;명령어&amp;nbsp;수행하는 &lt;br /&gt;4)&amp;nbsp;인스턴스&amp;nbsp;시작 &lt;br /&gt;5)&amp;nbsp;복구된&amp;nbsp;테이블&amp;nbsp;덤프 &lt;br /&gt;6)&amp;nbsp;덤프&amp;nbsp;파일을&amp;nbsp;원본&amp;nbsp;서버로&amp;nbsp;전송한&amp;nbsp;후&amp;nbsp;복원 &lt;br /&gt;&lt;br /&gt;#테스트데이터입력 &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'PITR'&amp;nbsp;from&amp;nbsp;generate_series(1,10000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;10000 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1031001 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;drop&amp;nbsp;table&amp;nbsp;t1;&amp;nbsp;&amp;nbsp;--20260116&amp;nbsp;13:48~ &lt;br /&gt;DROP&amp;nbsp;TABLE &lt;br /&gt;2026-01-20&amp;nbsp;06:40:01.849&amp;nbsp;UTC&amp;nbsp;[167]&amp;nbsp;LOG:&amp;nbsp;&amp;nbsp;statement:&amp;nbsp;drop&amp;nbsp;table&amp;nbsp;t1; &lt;br /&gt;&lt;br /&gt;#pg_switch_wal&amp;nbsp;수행 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;pg_switch_wal(); &lt;br /&gt;&amp;nbsp;pg_switch_wal &lt;br /&gt;--------------- &lt;br /&gt;&amp;nbsp;0/48F17328 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;&amp;nbsp;tar&amp;nbsp;-czvf&amp;nbsp;dbbackup.tar.gz&amp;nbsp;dbbackup &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#복구용&amp;nbsp;서버로&amp;nbsp;전송 &lt;br /&gt;C:\Users\tttttt&amp;gt;docker cp pgtest02:/dbbackup.tar.gz %USERPROFILE%\Desktop\dbbackup.tar.gz &lt;br /&gt;Successfully copied 53.5MB to C:\Users\tttttt\Desktop\dbbackup.tar.gz &lt;br /&gt;&lt;br /&gt;C:\Users\tttttt&amp;gt;docker cp &quot;C:\Users\tttttt\Desktop\dbbackup.tar.gz&quot; pgtest02-2:/dbbackup.tar.gz &lt;br /&gt;Successfully&amp;nbsp;copied&amp;nbsp;53.5MB&amp;nbsp;to&amp;nbsp;pgtest02-2:/dbbackup.tar.gz &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#복구서버에서&amp;nbsp;압축해제 &lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;tar&amp;nbsp;-xvf&amp;nbsp;dbbackup.tar.gz &lt;br /&gt;&lt;br /&gt;#복구서버에서&amp;nbsp;시점&amp;nbsp;복구&amp;nbsp; &lt;br /&gt;&lt;br /&gt;--type옵션은&amp;nbsp;time으로&amp;nbsp;설정하고,&amp;nbsp;--target&amp;nbsp;옵션은&amp;nbsp;복구&amp;nbsp;시점을&amp;nbsp;설정한다. &lt;br /&gt;시점복구는&amp;nbsp;기본적으로&amp;nbsp;마스터로&amp;nbsp;승격되지않기때문에&amp;nbsp;--target-action&amp;nbsp;옵션을&amp;nbsp;promote로&amp;nbsp;지정한다. &lt;br /&gt;&lt;br /&gt;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;restore&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--type=time&amp;nbsp;--target=&quot;2026-01-20&amp;nbsp;06:40:00&quot;&amp;nbsp;--target-action=promote&amp;nbsp;--log-level-console=info &lt;br /&gt;#&amp;nbsp;Recovery&amp;nbsp;settings&amp;nbsp;generated&amp;nbsp;by&amp;nbsp;pgBackRest&amp;nbsp;restore&amp;nbsp;on&amp;nbsp;2026-01-16&amp;nbsp;08:03:55 &lt;br /&gt;restore_command&amp;nbsp;=&amp;nbsp;'pgbackrest&amp;nbsp;--config=/dbbackup/pgbackrest.conf&amp;nbsp;--stanza=svcdb&amp;nbsp;archive-get&amp;nbsp;%f&amp;nbsp;&quot;%p&quot;' &lt;br /&gt;recovery_target_time&amp;nbsp;=&amp;nbsp;'2026-01-16&amp;nbsp;04:48:00' &lt;br /&gt;recovery_target_action&amp;nbsp;=&amp;nbsp;'promote' &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#PGDATA/postgresql.auto.conf&amp;nbsp;복원&amp;nbsp;후&amp;nbsp;파일&amp;nbsp;확인&amp;nbsp;-파라미터&amp;nbsp;자동&amp;nbsp;설정&amp;nbsp; &lt;br /&gt;&lt;br /&gt;#인스턴스&amp;nbsp;기동&amp;nbsp; &lt;br /&gt;pg_ctl&amp;nbsp;start &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;b&gt;4.4 pgBackRest를 이용한 시점 복구 (동일 서버)&lt;/b&gt; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;1)&amp;nbsp;pg_switch_wal()&amp;nbsp;함수&amp;nbsp;수행 &lt;br /&gt;2)&amp;nbsp;pgBackRest&amp;nbsp;환경&amp;nbsp;파일을&amp;nbsp;복사한&amp;nbsp;후,&amp;nbsp;복원&amp;nbsp;경로를&amp;nbsp;변경한다. &lt;br /&gt;3)&amp;nbsp;복구&amp;nbsp;시점을&amp;nbsp;지정하고&amp;nbsp;pgbackrest&amp;nbsp;restore&amp;nbsp;명령어&amp;nbsp;수행하는 &lt;br /&gt;4)&amp;nbsp;복원된&amp;nbsp;디렉토리의&amp;nbsp;postgresql.conf&amp;nbsp;파일에서&amp;nbsp;일부&amp;nbsp;파라미터를&amp;nbsp;수정한다. &lt;br /&gt;5)&amp;nbsp;새&amp;nbsp;인스턴스를&amp;nbsp;시작한다.&amp;nbsp; &lt;br /&gt;6)&amp;nbsp;복구&amp;nbsp;완료&amp;nbsp;후&amp;nbsp;테이블&amp;nbsp;덤프&amp;nbsp;후&amp;nbsp;원본&amp;nbsp;환경에&amp;nbsp;복원 &lt;br /&gt;&lt;br /&gt;#테스트데이터&amp;nbsp;입력 &lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'PITR2'&amp;nbsp;from&amp;nbsp;generate_series(1,20000); &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;20000 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1021000 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;#테이블&amp;nbsp;삭제 &lt;br /&gt;svcdb=#&amp;nbsp;drop&amp;nbsp;table&amp;nbsp;t1; &lt;br /&gt;&lt;br /&gt;#PostgreSQL&amp;nbsp;로그&amp;nbsp;에서&amp;nbsp;삭제&amp;nbsp;시점&amp;nbsp;확인&amp;nbsp;(&amp;nbsp;drop&amp;nbsp;문&amp;nbsp;로그&amp;nbsp;남도록&amp;nbsp;설정되어있어야함.) &lt;br /&gt;&lt;br /&gt;#pg_switch_wal&amp;nbsp;수행&amp;nbsp;-&amp;nbsp;currentWAL&amp;nbsp;파일&amp;nbsp;아카이브&amp;nbsp;디렉토리로&amp;nbsp;복사&amp;nbsp;위함 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;pg_switch_wal(); &lt;br /&gt;&amp;nbsp;pg_switch_wal &lt;br /&gt;--------------- &lt;br /&gt;&amp;nbsp;0/413197A8 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;#시점&amp;nbsp;복구&amp;nbsp;위한&amp;nbsp;환경&amp;nbsp;설정 &lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;mkdir&amp;nbsp;-p&amp;nbsp;/logs/svcdb_pitr &lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;chown&amp;nbsp;-R&amp;nbsp;postgres:postgres&amp;nbsp;/logs/svcdb_pitr &lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;chmod&amp;nbsp;700&amp;nbsp;/logs/svcdb_pitr &lt;br /&gt;&lt;br /&gt;[postgres@c05692802685&amp;nbsp;log]$&amp;nbsp;cd&amp;nbsp;$PGDATA &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01]$&amp;nbsp;cp&amp;nbsp;/dbbackup/pgbackrest.conf&amp;nbsp;/dbbackup/pgbackrest_pitr.conf &lt;br /&gt;[postgres@c05692802685&amp;nbsp;dbbackup]$&amp;nbsp;vi&amp;nbsp;pgbackrest_pitr.conf &lt;br /&gt;[svcdb] &lt;br /&gt;pg1-path=/data/svc01_pitr &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#수정&amp;nbsp;파일&amp;nbsp;기반으로&amp;nbsp;시점&amp;nbsp;복구&amp;nbsp;수행&amp;nbsp; &lt;br /&gt;[postgres@c05692802685&amp;nbsp;dbbackup]$&amp;nbsp;pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;restore&amp;nbsp;--config=/dbbackup/pgbackrest_pitr.conf&amp;nbsp;--type=time&amp;nbsp;--target=&quot;2026-01-15&amp;nbsp;01:29:50&quot;&amp;nbsp;--target-action=promote&amp;nbsp;--log-level-console=info &lt;br /&gt;&lt;br /&gt;#복원된&amp;nbsp;디렉토리&amp;nbsp;내의&amp;nbsp;postgresql.conf&amp;nbsp;파일&amp;nbsp;수정 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;cd&amp;nbsp;/data/svc01_pitr &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01_pitr]$&amp;nbsp;vi&amp;nbsp;postgresql.conf &lt;br /&gt;log_directory='/logs/svcdb_pitr' &lt;br /&gt;port&amp;nbsp;=54322 &lt;br /&gt;archive_command&amp;nbsp;=&amp;nbsp;'/usr/bin/pgbackrest&amp;nbsp;--stanza=svcdb&amp;nbsp;archive-push&amp;nbsp;%p&amp;nbsp;--config=/dbbackup/pgbackrest_pitr.conf'&amp;nbsp; &lt;br /&gt;&lt;br /&gt;#복원&amp;nbsp;디렉토리&amp;nbsp;-D옵션으로&amp;nbsp;지정&amp;nbsp;후&amp;nbsp;인스턴스&amp;nbsp;시작 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;pg_ctl&amp;nbsp;start&amp;nbsp;-D&amp;nbsp;/data/svc01_pitr &lt;br /&gt;&lt;br /&gt;#복구&amp;nbsp;확인 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;psql&amp;nbsp;-p&amp;nbsp;54322 &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;postgres=#&amp;nbsp;\c&amp;nbsp;svcdb &lt;br /&gt;You&amp;nbsp;are&amp;nbsp;now&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;database&amp;nbsp;&quot;svcdb&quot;&amp;nbsp;as&amp;nbsp;user&amp;nbsp;&quot;postgres&quot;. &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1021000 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;복구완료&amp;nbsp;테이블&amp;nbsp;덤프 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;pg_dump&amp;nbsp;-Fc&amp;nbsp;-Z1&amp;nbsp;-p&amp;nbsp;54322&amp;nbsp;-d&amp;nbsp;svcdb&amp;nbsp;-t&amp;nbsp;t1&amp;nbsp;-f&amp;nbsp;svcdb_table.custom &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;기존&amp;nbsp;인스턴스에&amp;nbsp;복원 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;pg_restore&amp;nbsp;-v&amp;nbsp;-d&amp;nbsp;svcdb&amp;nbsp;svcdb_table.custom&amp;nbsp;&amp;gt;&amp;nbsp;svcdb_table.log&amp;nbsp;2&amp;gt;&amp;amp;1 &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;psql &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;postgres=#&amp;nbsp;\c&amp;nbsp;svcdb &lt;br /&gt;You&amp;nbsp;are&amp;nbsp;now&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;database&amp;nbsp;&quot;svcdb&quot;&amp;nbsp;as&amp;nbsp;user&amp;nbsp;&quot;postgres&quot;. &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1021000 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;insert&amp;nbsp;into&amp;nbsp;t1&amp;nbsp;select&amp;nbsp;'a'&amp;nbsp;; &lt;br /&gt;INSERT&amp;nbsp;0&amp;nbsp;1 &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1021001 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;svcdb=#&amp;nbsp;exit; &lt;br /&gt;[postgres@c05692802685&amp;nbsp;~]$&amp;nbsp;psql&amp;nbsp;-p&amp;nbsp;54322 &lt;br /&gt;psql&amp;nbsp;(17.7) &lt;br /&gt;Type&amp;nbsp;&quot;help&quot;&amp;nbsp;for&amp;nbsp;help. &lt;br /&gt;&lt;br /&gt;postgres=#&amp;nbsp;\c&amp;nbsp;svcdb &lt;br /&gt;You&amp;nbsp;are&amp;nbsp;now&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;database&amp;nbsp;&quot;svcdb&quot;&amp;nbsp;as&amp;nbsp;user&amp;nbsp;&quot;postgres&quot;. &lt;br /&gt;svcdb=#&amp;nbsp;select&amp;nbsp;count(1)&amp;nbsp;from&amp;nbsp;t1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;count &lt;br /&gt;--------- &lt;br /&gt;&amp;nbsp;1021000 &lt;br /&gt;(1&amp;nbsp;row) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#인스턴스&amp;nbsp;정리&amp;nbsp; &lt;br /&gt;[postgres@c05692802685&amp;nbsp;svc01_pitr]$&amp;nbsp;pg_ctl&amp;nbsp;stop&amp;nbsp;-D&amp;nbsp;/data/svc01_pitr &lt;br /&gt;[postgres@c05692802685&amp;nbsp;/]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;/data/svc01_pitr &lt;br /&gt;[root@c05692802685&amp;nbsp;/]#&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;/logs/svcdb_pitr &lt;br /&gt;[postgres@c05692802685&amp;nbsp;dbbackup]$&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;/dbbackup/pgbackrest_pitr.conf&lt;/p&gt;</description>
      <category>DATABASE/Postgresql</category>
      <category>pgBackRest</category>
      <category>pg_basebackup</category>
      <category>PostgreSQL</category>
      <category>델타복원</category>
      <category>물리백업</category>
      <category>물리복구</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/84</guid>
      <comments>https://bintech.tistory.com/entry/PostgreSQL-%EB%AC%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC-pgBackRest-pgbasebackup#entry84comment</comments>
      <pubDate>Mon, 29 Dec 2025 17:21:08 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL]  논리 백업과 복구</title>
      <link>https://bintech.tistory.com/entry/PostgreSQL-%EB%85%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zJMGM/dJMcacIvhdJ/z7qTc1aykFzbDlS8ppmgMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zJMGM/dJMcacIvhdJ/z7qTc1aykFzbDlS8ppmgMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zJMGM/dJMcacIvhdJ/z7qTc1aykFzbDlS8ppmgMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzJMGM%2FdJMcacIvhdJ%2Fz7qTc1aykFzbDlS8ppmgMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;논리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시점의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복원하는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;용도로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용되며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;복구보다는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보관&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;및&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이행&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목적으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;활용된다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;물리백업처럼&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;아카이브&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;파일을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용해서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;장애&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시점까지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복구&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기능이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;없다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Pg_dumpall, pg_dump, COPY &lt;/span&gt;&lt;span&gt;명령어를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제공한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;1. Pg_dumpall &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;클러스터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모든&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터베이스와&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;관련&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정보를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;한꺼번에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기능을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제공한다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;압축&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;및&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기능을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제공하지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;않는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;단점이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있음&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;주로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;논리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;구성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;클러스터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모든&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;형상&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정보와&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;롤&lt;/span&gt;&lt;span&gt;(Role) &lt;/span&gt;&lt;span&gt;정보를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업하는데&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;클러스터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;스크립트&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방법&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;오브젝트&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;스크립트만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;경우&lt;/span&gt;&lt;span&gt; -s &lt;/span&gt;&lt;span&gt;옵션을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업하지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;않고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;오브젝트&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;스크립트만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[postgres@11039b77a76b pgdump]$ pg_dumpall -s -f db_cluster_251226.sql &amp;gt; db_cluster_251226_dump.log 2&amp;gt;&amp;amp;1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[postgres@11039b77a76b pgdump]$ ls&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;db_cluster_251226.sql&lt;span&gt;&amp;nbsp; &lt;/span&gt;db_cluster_251226_dump.log&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;클러스터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;형상&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복원&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방법&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;전체&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;형상&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복원시에는&lt;/span&gt;&lt;span&gt; psql &lt;/span&gt;&lt;span&gt;명령어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;postgres=# drop database svcdb;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DROP DATABASE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;postgres=# exit;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[postgres@11039b77a76b pgdump]$ psql -f db_cluster_251226.sql&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;psql:db_cluster_251226.sql:16: ERROR:&lt;span&gt;&amp;nbsp; &lt;/span&gt;role &quot;dbarep&quot; already exists&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ALTER ROLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;psql:db_cluster_251226.sql:18: ERROR:&lt;span&gt;&amp;nbsp; &lt;/span&gt;role &quot;lglrep&quot; already exists&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ALTER ROLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;hellip;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[postgres@11039b77a76b pgdump]$ psql&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;psql (17.7)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Type &quot;help&quot; for help.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;postgres=# \c svcdb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are now connected to database &quot;svcdb&quot; as user &quot;postgres&quot;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=#&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Role &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pg_dumpall -r -f role.sql&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Role &lt;/span&gt;&lt;span&gt;복원&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Psql -f role.sql&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;2. Pg_dump&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;개발환경의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업이나&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;및&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;스키마&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;단위의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이행&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;업무에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;자주&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;압축과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;처리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기능도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제공하므로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대용량&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;작업에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;유용하게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;활용할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;'pg_dump --help' &lt;/span&gt;&lt;span&gt;명령어로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;옵션&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;가능&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Format &lt;/span&gt;&lt;span&gt;옵션&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;P (plain) : &lt;/span&gt;&lt;span&gt;텍스트파일&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;압축&lt;/span&gt;&lt;span&gt;X, &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; X, &lt;/span&gt;&lt;span&gt;부분복구&lt;/span&gt;&lt;span&gt; X =&amp;gt; &lt;/span&gt;&lt;span&gt;거의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용&lt;/span&gt;&lt;span&gt;x, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;C (custom) : &lt;/span&gt;&lt;span&gt;바이너리파일&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;압축&lt;/span&gt;&lt;span&gt;O, &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; X, &lt;/span&gt;&lt;span&gt;부분&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복구&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;D (directory) : &lt;/span&gt;&lt;span&gt;바이너리파일&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;압축&lt;/span&gt;&lt;span&gt;O, &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; O, &lt;/span&gt;&lt;span&gt;부분&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복구&lt;/span&gt;&lt;span&gt; O&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;T (tar) : Tar &lt;/span&gt;&lt;span&gt;파일&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;압축&lt;/span&gt;&lt;span&gt;X, &lt;/span&gt;&lt;span&gt;병렬&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;백업&lt;/span&gt;&lt;span&gt; X, &lt;/span&gt;&lt;span&gt;부분복구&lt;/span&gt;&lt;span&gt; X&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;압축&amp;nbsp;옵션 &lt;br /&gt;-Z&amp;nbsp;옵션을&amp;nbsp;활용하여&amp;nbsp;압축&amp;nbsp;방식&amp;nbsp;지정.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;gzip&amp;nbsp;:&amp;nbsp;0~9까지&amp;nbsp;압축&amp;nbsp;레벨&amp;nbsp;제공하며,&amp;nbsp;레벨이&amp;nbsp;높아질수록&amp;nbsp;백업&amp;nbsp;파일&amp;nbsp;크기는&amp;nbsp;작아지지만&amp;nbsp;그만큼&amp;nbsp;압축&amp;nbsp;시간이&amp;nbsp;길어짐. &lt;br /&gt;0&amp;nbsp;레벨은&amp;nbsp;압축하지&amp;nbsp;않는다.&amp;nbsp; &lt;br /&gt;lz4&amp;nbsp;:&amp;nbsp;0부터&amp;nbsp;12까지&amp;nbsp;압축&amp;nbsp;레벨&amp;nbsp;지원.&amp;nbsp;버전&amp;nbsp;16부터&amp;nbsp;사용&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;시스템&amp;nbsp;환경과&amp;nbsp;데이터&amp;nbsp;특성에&amp;nbsp;따라&amp;nbsp;차이가&amp;nbsp;있으므로&amp;nbsp;,&amp;nbsp;적절한&amp;nbsp;압축&amp;nbsp;방식을&amp;nbsp;선택해야함. &lt;br /&gt;&lt;br /&gt;병렬 처리 옵션&lt;br /&gt;-j &lt;br /&gt;이&amp;nbsp;옵션은&amp;nbsp;directory&amp;nbsp;포맷(-Fd)&amp;nbsp;사용할때만&amp;nbsp;적용&amp;nbsp;가능하며,&amp;nbsp;병렬로&amp;nbsp;데이터를&amp;nbsp;백업하는&amp;nbsp;워커&amp;nbsp;프로세스의&amp;nbsp;개수를&amp;nbsp;지정한다. &lt;br /&gt;병렬&amp;nbsp;프로세스&amp;nbsp;수는&amp;nbsp;시스템의&amp;nbsp;CPU&amp;nbsp;코어&amp;nbsp;수나&amp;nbsp;디스크&amp;nbsp;I/O&amp;nbsp;성능&amp;nbsp;등에&amp;nbsp;따라&amp;nbsp;달라&amp;nbsp;질&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;ex)&amp;nbsp;pg_dump&amp;nbsp;-Fd&amp;nbsp;-Z1&amp;nbsp;-j4&amp;nbsp;-f&amp;nbsp;backup_pg4 &lt;br /&gt;&lt;br /&gt;그&amp;nbsp;외의&amp;nbsp;옵션들&amp;nbsp; &lt;br /&gt;-d&amp;nbsp;:&amp;nbsp;백업&amp;nbsp;대상&amp;nbsp;데이터베이스&amp;nbsp;지정,&amp;nbsp;pgdatabase&amp;nbsp;환경&amp;nbsp;변수로&amp;nbsp;설정되지&amp;nbsp;않은&amp;nbsp;데이터베이스&amp;nbsp;백업시&amp;nbsp;사용 &lt;br /&gt;-s&amp;nbsp;:&amp;nbsp;오브젝트&amp;nbsp;생성&amp;nbsp;스크립트만&amp;nbsp;백업하며,&amp;nbsp;데이터는&amp;nbsp;포함하지않음 &lt;br /&gt;-a&amp;nbsp;:&amp;nbsp;데이터만&amp;nbsp;백업 &lt;br /&gt;-n&amp;nbsp;:&amp;nbsp;특정&amp;nbsp;스키마만&amp;nbsp;백업,&amp;nbsp;옵션&amp;nbsp;반복해서&amp;nbsp;여러&amp;nbsp;스키마&amp;nbsp;지원가능하며&amp;nbsp;패턴&amp;nbsp;매칭도&amp;nbsp;가능하다.&amp;nbsp;-n&amp;nbsp;schema[0-9]&amp;nbsp;/&amp;nbsp;-n&amp;nbsp;sc1&amp;nbsp;-n&amp;nbsp;sc2 &lt;br /&gt;-t&amp;nbsp;:&amp;nbsp;특정&amp;nbsp;데이블만&amp;nbsp;백업.&amp;nbsp;패턴&amp;nbsp;매칭&amp;nbsp;지원 &lt;br /&gt;-b&amp;nbsp;:&amp;nbsp;large&amp;nbsp;오브젝트는&amp;nbsp;pg_largeobject&amp;nbsp;시스템&amp;nbsp;테이블에&amp;nbsp;저장되기&amp;nbsp;때문에,&amp;nbsp;large&amp;nbsp;object&amp;nbsp;포함한&amp;nbsp;테이블을&amp;nbsp;백업할&amp;nbsp;때는&amp;nbsp;-b&amp;nbsp;옵션을&amp;nbsp;함께&amp;nbsp;사용해야함. &lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;3. psql과 pg_restore 를 이용한 복원&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;-&amp;nbsp;스키마&amp;nbsp;형상을&amp;nbsp;타&amp;nbsp;데이터베이스에&amp;nbsp;적용하는&amp;nbsp;방법 &lt;br /&gt;*&amp;nbsp;현&amp;nbsp;시점의&amp;nbsp;스키마&amp;nbsp;형상을&amp;nbsp;다른&amp;nbsp;데이터베이스에&amp;nbsp;반영 &lt;br /&gt;&amp;gt;&amp;nbsp;개발&amp;nbsp;데이터베이스에서&amp;nbsp;pg_dump를&amp;nbsp;이용해&amp;nbsp;스키마&amp;nbsp;형상&amp;nbsp;백업 &lt;br /&gt;&amp;gt;&amp;nbsp;이행&amp;nbsp;대상&amp;nbsp;데이터베이스에서&amp;nbsp;기존&amp;nbsp;스키마르&amp;nbsp;삭제 &lt;br /&gt;&amp;gt;&amp;nbsp;백업한&amp;nbsp;스키마&amp;nbsp;스크립트를&amp;nbsp;psql을&amp;nbsp;이용해서&amp;nbsp;적용한다. &lt;br /&gt;&lt;br /&gt;pg_dump&amp;nbsp;-Fp&amp;nbsp;-n&amp;nbsp;svc&amp;nbsp;-d&amp;nbsp;svcdb&amp;nbsp;-s&amp;nbsp;-f&amp;nbsp;svc_schema.sql &lt;br /&gt;&lt;br /&gt;psql&amp;nbsp;-d&amp;nbsp;svcdb_mig &lt;br /&gt;drop&amp;nbsp;schema&amp;nbsp;svc&amp;nbsp;cascade; &lt;br /&gt;&lt;br /&gt;psql&amp;nbsp;-d&amp;nbsp;svcdb_mig&amp;nbsp;-f&amp;nbsp;svc_schema.sql &lt;br /&gt;&lt;br /&gt;-&amp;nbsp;스키마&amp;nbsp;형상&amp;nbsp;및&amp;nbsp;데이터를&amp;nbsp;타&amp;nbsp;DB에&amp;nbsp;적용하는&amp;nbsp;방법 &lt;br /&gt;pg_dump&amp;nbsp;-Fc&amp;nbsp;-Z1&amp;nbsp;-n&amp;nbsp;svc&amp;nbsp;-d&amp;nbsp;svcdb&amp;nbsp;-f&amp;nbsp;svc_schema_data.custom &lt;br /&gt;&lt;br /&gt;psql&amp;nbsp;-d&amp;nbsp;svcdb_mig &lt;br /&gt;drop&amp;nbsp;schema&amp;nbsp;svc&amp;nbsp;cascade; &lt;br /&gt;&lt;br /&gt;pg_restore&amp;nbsp;-d&amp;nbsp;svcdb_mig&amp;nbsp;-v&amp;nbsp;-j4&amp;nbsp;svc_schema_data.custom &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;4. pg_restore를 이용한 복구&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;-&amp;nbsp;특정&amp;nbsp;테이블&amp;nbsp;복구&amp;nbsp;방법 &lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;pgdump]$&amp;nbsp;pg_dump&amp;nbsp;-Fc&amp;nbsp;-Z1&amp;nbsp;-f&amp;nbsp;svcdb_full_20251226.custom&amp;nbsp;svcdb &lt;br /&gt;&lt;br /&gt;[postgres@11039b77a76b&amp;nbsp;pgdump]$&amp;nbsp;pg_restore&amp;nbsp;-d&amp;nbsp;svcdb&amp;nbsp;-v&amp;nbsp;-n&amp;nbsp;svc&amp;nbsp;-t&amp;nbsp;t1&amp;nbsp;-a&amp;nbsp;svcdb_full_20251226.custom &lt;br /&gt;pg_restore:&amp;nbsp;connecting&amp;nbsp;to&amp;nbsp;database&amp;nbsp;for&amp;nbsp;restore &lt;br /&gt;pg_restore:&amp;nbsp;processing&amp;nbsp;data&amp;nbsp;for&amp;nbsp;table&amp;nbsp;&quot;svc.t1&quot; &lt;br /&gt;&lt;br /&gt;*&amp;nbsp;테이블&amp;nbsp;복수&amp;nbsp;시&amp;nbsp;-c&amp;nbsp;옵션&amp;nbsp;주의사항 &lt;br /&gt;-c&amp;nbsp;사용시&amp;nbsp;기존&amp;nbsp;존재하는&amp;nbsp;테이블&amp;nbsp;drop&amp;nbsp;후&amp;nbsp;다시&amp;nbsp;생성한다. &lt;br /&gt;테이블&amp;nbsp;단위로&amp;nbsp;-c&amp;nbsp;옵션&amp;nbsp;사용하면&amp;nbsp;기존에&amp;nbsp;설정되더&amp;nbsp;있던&amp;nbsp;PK,&amp;nbsp;인덱스,&amp;nbsp;제약조건,&amp;nbsp;논리복제설정은&amp;nbsp;복원되지&amp;nbsp;않으므로&amp;nbsp;주의필요 &lt;br /&gt;&lt;br /&gt;스키마나&amp;nbsp;DB&amp;nbsp;단위&amp;nbsp;복원시에는&amp;nbsp;-c&amp;nbsp;옵션사용해도&amp;nbsp;pk,&amp;nbsp;인덱스,&amp;nbsp;제약조건&amp;nbsp;및&amp;nbsp;논리&amp;nbsp;복제&amp;nbsp;설정&amp;nbsp;내용을&amp;nbsp;포함한&amp;nbsp;모든&amp;nbsp;내용이&amp;nbsp;복원된다. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;출처 : PostgreSQL DBA를 위한 Admin 이야기&lt;/span&gt;&lt;/p&gt;</description>
      <category>DATABASE/Postgresql</category>
      <category>pg_dump</category>
      <category>pg_dumpall</category>
      <category>pg_restore</category>
      <category>PostgreSQL</category>
      <category>논리백업</category>
      <category>논리복구</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/83</guid>
      <comments>https://bintech.tistory.com/entry/PostgreSQL-%EB%85%BC%EB%A6%AC-%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC#entry83comment</comments>
      <pubDate>Sat, 27 Dec 2025 12:32:35 +0900</pubDate>
    </item>
    <item>
      <title>Cloudy Bay Sauvignon Blanc / 클라우디 베이</title>
      <link>https://bintech.tistory.com/entry/Cloudy-Bay-Sauvignon-Blanc-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%94%94-%EB%B2%A0%EC%9D%B4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IlRCD/dJMcagD8Njd/hv9Z0OqIUo6yC1ToThlZQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IlRCD/dJMcagD8Njd/hv9Z0OqIUo6yC1ToThlZQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IlRCD/dJMcagD8Njd/hv9Z0OqIUo6yC1ToThlZQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIlRCD%2FdJMcagD8Njd%2Fhv9Z0OqIUo6yC1ToThlZQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;875&quot; height=&quot;705&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SpD1F/dJMcagYpTdt/d1kzRiCiMXisJrueKjcJBK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SpD1F/dJMcagYpTdt/d1kzRiCiMXisJrueKjcJBK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SpD1F/dJMcagYpTdt/d1kzRiCiMXisJrueKjcJBK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSpD1F%2FdJMcagYpTdt%2Fd1kzRiCiMXisJrueKjcJBK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4284&quot; height=&quot;5712&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오마카세 방문할때 들고간 콜키지용 클라우디베이 쇼비뇽블랑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌고래보틀 양재점에서 할인가 42,000원에 구매.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가격이 너무 괜찮아서 구매해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오.. 클라우디베이는 처음인데 맛 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 대중적인건 이유가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바비치 쇼블이나 오이스터베이 등 2~3만원대 쇼블 다 나름 괜찮게 먹었었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라우디베이 쇼블이 좀 더 산도도 낮은 것 같아 먹기 편하고 부드럽다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가격따라가는게 맞나..?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비비노 4.2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재구매의사 있음 !!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Cloudy Bay Sauvignon Blanc</category>
      <category>클라우디베이 쇼비뇽블랑</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/82</guid>
      <comments>https://bintech.tistory.com/entry/Cloudy-Bay-Sauvignon-Blanc-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%94%94-%EB%B2%A0%EC%9D%B4#entry82comment</comments>
      <pubDate>Fri, 26 Dec 2025 10:58:12 +0900</pubDate>
    </item>
    <item>
      <title>chateau la ribaud 2018 medoc cre bourgeios 샤또 라 리보 메독 크뤼 브르주아</title>
      <link>https://bintech.tistory.com/entry/chateau-la-ribaud-2018-medoc-cre-bourgeios-%EC%83%A4%EB%98%90-%EB%9D%BC-%EB%A6%AC%EB%B3%B4-%EB%A9%94%EB%8F%85-%ED%81%AC%EB%A4%BC-%EB%B8%8C%EB%A5%B4%EC%A3%BC%EC%95%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4gPdI/dJMcabCOc7X/snU3vsMWTfF5p21egMXrH0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4gPdI/dJMcabCOc7X/snU3vsMWTfF5p21egMXrH0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4gPdI/dJMcabCOc7X/snU3vsMWTfF5p21egMXrH0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4gPdI%2FdJMcabCOc7X%2FsnU3vsMWTfF5p21egMXrH0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4284&quot; height=&quot;5712&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJOIkP/dJMcafFdKvN/nAC5tKDHzaeI1tREKEdSdK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJOIkP/dJMcafFdKvN/nAC5tKDHzaeI1tREKEdSdK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJOIkP/dJMcafFdKvN/nAC5tKDHzaeI1tREKEdSdK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJOIkP%2FdJMcafFdKvN%2FnAC5tKDHzaeI1tREKEdSdK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4284&quot; height=&quot;5712&quot; data-origin-width=&quot;4284&quot; data-origin-height=&quot;5712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bafI6d/dJMcaf6hEdP/w2TEFBWG9JZyfmtPcjrbkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bafI6d/dJMcaf6hEdP/w2TEFBWG9JZyfmtPcjrbkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bafI6d/dJMcaf6hEdP/w2TEFBWG9JZyfmtPcjrbkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbafI6d%2FdJMcaf6hEdP%2Fw2TEFBWG9JZyfmtPcjrbkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;544&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chateau la ribaud medoc cru 2018 샤또 라 리보 메독 크뤼 브르주아&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이마트에서 행사하길래 구매해본 프랑스 메독 와인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세일해서 23,880원에 구매&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비비노 3.8로 나쁘지않은 평점대다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메독&amp;nbsp;특유의&amp;nbsp;탄탄한&amp;nbsp;구조감과&amp;nbsp;균형&amp;nbsp;잡힌&amp;nbsp;타닌 &lt;br /&gt;잘&amp;nbsp;익은&amp;nbsp;블랙커런트와&amp;nbsp;체리&amp;nbsp; &lt;br /&gt;은은한&amp;nbsp;바닐라와&amp;nbsp;스파이스 &lt;br /&gt;오크&amp;nbsp;숙성으로&amp;nbsp;완성된&amp;nbsp;깊이&amp;nbsp;있는&amp;nbsp;풍미와&amp;nbsp;긴&amp;nbsp;여운 &lt;br /&gt;&lt;br /&gt;당도는&amp;nbsp;낮고&amp;nbsp;바디감은&amp;nbsp;묵직한편 &lt;br /&gt;&lt;br /&gt;이라고&amp;nbsp;이마트에서&amp;nbsp;소개하고있는데.. &lt;br /&gt;전반적으로 괜찮기는 하나 개인적으로는 조금 가볍게 느껴졌다. &lt;br /&gt;내 취향은 아닌걸로 !&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;재구매&amp;nbsp;의사&amp;nbsp;X&lt;/p&gt;</description>
      <category>술알못의 술 기록지</category>
      <category>chateau la ribaud 2018 medoc cre bourgeios</category>
      <category>샤또 라 리보 메독 크뤼 브르주아</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/81</guid>
      <comments>https://bintech.tistory.com/entry/chateau-la-ribaud-2018-medoc-cre-bourgeios-%EC%83%A4%EB%98%90-%EB%9D%BC-%EB%A6%AC%EB%B3%B4-%EB%A9%94%EB%8F%85-%ED%81%AC%EB%A4%BC-%EB%B8%8C%EB%A5%B4%EC%A3%BC%EC%95%84#entry81comment</comments>
      <pubDate>Fri, 26 Dec 2025 10:49:15 +0900</pubDate>
    </item>
    <item>
      <title>2026 ADsP / ADP 데이터 분석 준 전문가 자격시험일정</title>
      <link>https://bintech.tistory.com/entry/2026-ADsP-ADP-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%A4%80-%EC%A0%84%EB%AC%B8%EA%B0%80-%EC%9E%90%EA%B2%A9%EC%8B%9C%ED%97%98%EC%9D%BC%EC%A0%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 ADsP / ADP 데이터분석 준전문가 / 전문가 자격 시험 일정이 공개되어 공유드립니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct5pAy/dJMcaiPp13p/ah6hg2as7svvvYsJWh4GaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct5pAy/dJMcaiPp13p/ah6hg2as7svvvYsJWh4GaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct5pAy/dJMcaiPp13p/ah6hg2as7svvvYsJWh4GaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct5pAy%2FdJMcaiPp13p%2Fah6hg2as7svvvYsJWh4GaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;263&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ADP 는 2회 시행되며, 실기시험의 경우 서울,대전,부산 에서만 시행되네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QGzCZ/dJMcadggEpH/sGWckPXHkVeQ727DXn5qWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QGzCZ/dJMcadggEpH/sGWckPXHkVeQ727DXn5qWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QGzCZ/dJMcadggEpH/sGWckPXHkVeQ727DXn5qWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQGzCZ%2FdJMcadggEpH%2FsGWckPXHkVeQ727DXn5qWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;208&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ADsP는 총 4회시행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험일정 잘챙기셔서 원하는 결과 얻길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2e6j1/dJMcafSJZ1X/decbjPbppmDZc8hqLjG8r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2e6j1/dJMcafSJZ1X/decbjPbppmDZc8hqLjG8r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2e6j1/dJMcafSJZ1X/decbjPbppmDZc8hqLjG8r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2e6j1%2FdJMcafSJZ1X%2FdecbjPbppmDZc8hqLjG8r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;628&quot; height=&quot;261&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험 시간은 위와 같고 퇴실은 입실 기준 한시간뒤에 가능하네요.&lt;/p&gt;</description>
      <category>자격증/기타 자격증</category>
      <category>2026 ADP 시험일정</category>
      <category>2026 ADsP 시험일정</category>
      <category>ADP</category>
      <category>ADP시험일정</category>
      <category>ADsP</category>
      <category>ADsP시험일정</category>
      <category>데이터자격검정</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/80</guid>
      <comments>https://bintech.tistory.com/entry/2026-ADsP-ADP-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%A4%80-%EC%A0%84%EB%AC%B8%EA%B0%80-%EC%9E%90%EA%B2%A9%EC%8B%9C%ED%97%98%EC%9D%BC%EC%A0%95#entry80comment</comments>
      <pubDate>Wed, 24 Dec 2025 15:26:34 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 논리복제(3) - Publication 대상 테이블 추가, 삭제, 재설정</title>
      <link>https://bintech.tistory.com/entry/PostgreSQL-%EB%85%BC%EB%A6%AC%EB%B3%B5%EC%A0%9C3-Publication-%EB%8C%80%EC%83%81-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%B6%94%EA%B0%80-%EC%82%AD%EC%A0%9C-%EC%9E%AC%EC%84%A4%EC%A0%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvJZpa/dJMcadAyVT3/cZSKRioz8Gc38kQdA1Fm10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvJZpa/dJMcadAyVT3/cZSKRioz8Gc38kQdA1Fm10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvJZpa/dJMcadAyVT3/cZSKRioz8Gc38kQdA1Fm10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvJZpa%2FdJMcadAyVT3%2FcZSKRioz8Gc38kQdA1Fm10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Publication &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;레벨로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;경우&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;복제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대상&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;삭제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;또는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;재설정할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;ALTER PUBLICATION &lt;/span&gt;&lt;span&gt;명령어를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 79.8837%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.4651%;&quot;&gt;&lt;span&gt;작업&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 59.3023%;&quot;&gt;&lt;span&gt;명령어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.4651%;&quot;&gt;&lt;span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 59.3023%;&quot;&gt;&lt;span&gt;&lt;span&gt;Alter publication &amp;lt;Publication&lt;/span&gt;&lt;span&gt;명&lt;/span&gt;&lt;span&gt;&amp;gt; add table &amp;lt;&lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록&lt;/span&gt;&lt;span&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.4651%;&quot;&gt;&lt;span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;삭제&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 59.3023%;&quot;&gt;&lt;span&gt;&lt;span&gt;Alter publication &amp;lt;Publication&lt;/span&gt;&lt;span&gt;명&lt;/span&gt;&lt;span&gt;&amp;gt; drop table &amp;lt;&lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록&lt;/span&gt;&lt;span&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.4651%;&quot;&gt;&lt;span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;재설정&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 59.3023%;&quot;&gt;&lt;span&gt;&lt;span&gt;Alter publication &amp;lt;Publication&lt;/span&gt;&lt;span&gt;명&lt;/span&gt;&lt;span&gt;&amp;gt; set table &amp;lt;&lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록&lt;/span&gt;&lt;span&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;테이블 추가&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;1. 테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;발행&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;및&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;초기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# Set role svc;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=&amp;gt; Create table svc.t3(c1 integer, c2 integer, constraint t3_pk primary key(c1));&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE TABLE&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=&amp;gt; Insert into svc.t3 select i,i from generate_series(1,1) I;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT 0 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;구독&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;동일&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# Set role svc;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=&amp;gt; Create table svc.t3(c1 integer, c2 integer, constraint t3_pk primary key(c1));&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE TABLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;2. Publication &lt;/span&gt;&lt;span&gt;에&lt;/span&gt;&lt;span&gt; svc.t3 &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# set role postgres;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SET&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# alter publication pub_svc_tbl add table svc.t3;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ALTER PUBLICATION&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# select * from pg_publication_tables;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pubname&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| schemaname | tablename | attnames | rowfilter&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-------------+------------+-----------+----------+-----------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t3&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3 rows)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;3.구독&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; REFRESH PUBLICATION&lt;/span&gt;&lt;span&gt;으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반영&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# alter subscription sub_svc_tbl refresh publication;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ALTER SUBSCRIPTION&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svcdb=# select count(1) from svc.t3;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;count&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1 row)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;테이블 삭제&lt;/b&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Svc.t1 &lt;/span&gt;&lt;span&gt;테이블을&lt;/span&gt;&lt;span&gt; publication &lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;삭제하려면&lt;/span&gt;&lt;span&gt; DROP TABLE &lt;/span&gt;&lt;span&gt;옵션&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;해당&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발행&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;삭제되는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;즉시&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;논리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복제가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;중단된다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 90.4651%; height: 504px;&quot; border=&quot;1&quot; width=&quot;925&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;22&quot;&gt;발행서버&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 38.9535%;&quot; width=&quot;450&quot;&gt;구독서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 105px;&quot;&gt;
&lt;td style=&quot;height: 105px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;176&quot;&gt;svcdb=# select * from pg_publication_tables;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pubname&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| schemaname | tablename | attnames | rowfilter&lt;br /&gt;-------------+------------+-----------+----------+-----------&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t3&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;br /&gt;(3 rows)&lt;/td&gt;
&lt;td style=&quot;height: 105px; width: 38.9535%;&quot;&gt;　&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 36px;&quot;&gt;
&lt;td style=&quot;height: 36px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;110&quot;&gt;　&lt;/td&gt;
&lt;td style=&quot;height: 36px; width: 38.9535%;&quot; width=&quot;450&quot;&gt;svcdb=# select count(1) from svc.t1;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;count&lt;br /&gt;-------&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;12&lt;br /&gt;(1 row)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 32px;&quot;&gt;
&lt;td style=&quot;height: 32px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;44&quot;&gt;svcdb=# alter publication pub_svc_tbl drop table svc.t1;&lt;br /&gt;ALTER PUBLICATION&lt;/td&gt;
&lt;td style=&quot;height: 32px; width: 38.9535%;&quot;&gt;　&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 104px;&quot;&gt;
&lt;td style=&quot;height: 104px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;154&quot;&gt;svcdb=# select * from pg_publication_tables;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pubname&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| schemaname | tablename | attnames | rowfilter&lt;br /&gt;-------------+------------+-----------+----------+-----------&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;pub_svc_tbl | svc&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| t3&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| {c1,c2}&lt;span&gt;&amp;nbsp; &lt;/span&gt;|&lt;br /&gt;(2 rows)&lt;/td&gt;
&lt;td style=&quot;height: 104px; width: 38.9535%;&quot;&gt;　&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 120px;&quot;&gt;
&lt;td style=&quot;height: 120px; width: 51.3953%;&quot; width=&quot;475&quot; height=&quot;154&quot;&gt;svcdb=# delete from svc.t1 where c1 in (11,12);&lt;br /&gt;DELETE 2&lt;br /&gt;svcdb=# select count(1) from svc.t1 ;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;count&lt;br /&gt;-------&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;10&lt;br /&gt;(1 row)&lt;/td&gt;
&lt;td style=&quot;height: 120px; width: 38.9535%;&quot;&gt;　&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 85px;&quot;&gt;
&lt;td style=&quot;height: 85px; width: 51.3953%;&quot; height=&quot;110&quot;&gt;　&lt;/td&gt;
&lt;td style=&quot;height: 85px; width: 38.9535%;&quot; width=&quot;450&quot;&gt;svcdb=# select count(1) from svc.t1;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;count&lt;br /&gt;-------&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;12&lt;br /&gt;(1 row)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;테이블 재설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;복제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대상&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테이블을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대폭&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;변경해야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;경우&lt;/span&gt;&lt;span&gt;, SET TABLE &lt;/span&gt;&lt;span&gt;옵션으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;전체&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발행&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;재설정할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있다&lt;/span&gt;&lt;span&gt;. &lt;br /&gt;ex) svc.t1 &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다시&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가하고&lt;/span&gt;&lt;span&gt; svc.t3 &lt;/span&gt;&lt;span&gt;테이블&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제거&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 242px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;발행서버&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;구독서버&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 51px;&quot;&gt;
&lt;td style=&quot;height: 51px;&quot;&gt;&lt;span&gt;svcdb=# alter publication pub_svc_tbl set table svc.t1,svc.t2;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;ALTER PUBLICATION&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 51px;&quot;&gt;&lt;span&gt;　&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 51px;&quot;&gt;
&lt;td style=&quot;height: 51px;&quot;&gt;&lt;span&gt;　&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 51px;&quot;&gt;&lt;span&gt;svcdb=#&lt;span&gt;&amp;nbsp; &lt;/span&gt;alter subscription sub_svc_tbl refresh publication with (copy_data=false);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;ALTER SUBSCRIPTION&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px;&quot;&gt;&lt;span&gt;svcdb=# insert into svc.t1 select 11,11;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;INSERT 0 1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px;&quot;&gt;&lt;span&gt;　&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 85px;&quot;&gt;
&lt;td style=&quot;height: 85px;&quot;&gt;&lt;span&gt;　&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 85px;&quot;&gt;&lt;span&gt;svcdb=# select * from svc.t1 where c1 = 11;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;c1 | c2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;----+----&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;11 | 11&lt;/span&gt;&lt;br /&gt;&lt;span&gt;(1 row)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svc.t1의 경우 기존에 복제 수행이력이 있어서 copy_data=true로 초기 복제 수행하면 PK중복오류가 발생할 수 있다.&amp;nbsp;&lt;br /&gt;방지를 위해 copy_data = false 옵션을 이용해서 초기데이터 복제하지 않고 REFRESH를 수행한다.&lt;br /&gt;&lt;br /&gt;PK오류는 발생하지 않지만, 그동안 svc.t1에 입력된 데이터 복제되지않아 데이터 누락 발상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 경우, 구독 서버의 테이블 TRUNCATE 한 뒤, copy_data=true 옵션으로 REFRESH를 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;Subscription 생성 옵션 및 설정 변경&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;569&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwvtVl/dJMcafyquG5/e8vwiP8Uad50nKNgulYQzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwvtVl/dJMcafyquG5/e8vwiP8Uad50nKNgulYQzK/img.png&quot; data-alt=&quot;출처 : PostgreSQL DBA를 위한 Admin 이야기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwvtVl/dJMcafyquG5/e8vwiP8Uad50nKNgulYQzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwvtVl%2FdJMcafyquG5%2Fe8vwiP8Uad50nKNgulYQzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1205&quot; height=&quot;569&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;569&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : PostgreSQL DBA를 위한 Admin 이야기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;create subscription &amp;lt;Subscription명&amp;gt; connection '&amp;lt;접속정보&amp;gt;' publication &amp;lt;Publication명&amp;gt; with ( streaming=false, copy_date=false);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리복제는 트랜잭션 변경 내용을 리플리카 서버로 실시간 스트리밍 방식으로 전송,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논리복제는 트랜잭션 종료된 이후에 논리 디코딩 과정을 거쳐 데이터 구독 서버로 전달 !&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 구조로 인해 대량 트랜잭션이 발생하는 환경에서 synchronous_commit = off 권장됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;streaming 옵션도 on이나 parallel로 사용시, '트랜잭션 진행 중에' 논리 디코딩 수행 후 결과를 구독서버를 전달해야&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션이 완료되므로 트랜잭션 성능 저하에 영향을 미친다. (복제 지연시간은 줄어들 수 있음)&lt;br /&gt;일반 운영환경에서는 트랜잭션 성능이 더 중요하다고 파악하므로 기본값은 off 사용 권장.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;Subcription 주요 작업&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. subscription 중단&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;alter subscription &amp;lt;Subscription명&amp;gt; disable;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;*중단 시 유의사항&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;중단 시점에 복제 지연이 발생하고 있으면, 복제 지연 중인 레코드는 구독서버에 반영되지않음.&lt;/p&gt;
&lt;pre id=&quot;code_1766471165974&quot; class=&quot;gherkin&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;svcdb=# select sent_lsn, write_lsn, flush_lsn, replay_lsn, write_lag, flush_lag, replay_lag from pg_stat_replication;
  sent_lsn  | write_lsn  | flush_lsn  | replay_lsn | write_lag | flush_lag | replay_lag
------------+------------+------------+------------+-----------+-----------+------------
 0/2F039158 | 0/2F039158 | 0/2F039158 | 0/2F039158 |           |           |&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 모든 lsn 값이 동일하고 lag 컬럼이 null인 경우, 변경 내용 구독서버로 전송 및 적용 완료 상태.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;lsn동일, lag 존재시, 전송 완료됐으나 반영 진행 중 의미.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 반영까지 되고나서 중단하는 것이 바람직하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. subscription 재개&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;alter subscription &amp;lt;Subscription명 &amp;gt; able;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 에러 skip&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;alter subscription &amp;lt;Subscription명&amp;gt; skip (lsn='&amp;lt;LSN&amp;gt;');&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 pk중복오류 발생시, 오류 발생한 위치(LSN) 건너뛰면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 전까지 apply worker 프로세스가 반복적으로 종료 및 재시작되며 복제가 지연된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;출처 : PostgreSQL DBA를 위한 Admin 이야기&lt;/span&gt;&lt;/p&gt;</description>
      <category>DATABASE/Postgresql</category>
      <category>PostgreSQL</category>
      <category>논리복제</category>
      <category>복제테이블변경</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/79</guid>
      <comments>https://bintech.tistory.com/entry/PostgreSQL-%EB%85%BC%EB%A6%AC%EB%B3%B5%EC%A0%9C3-Publication-%EB%8C%80%EC%83%81-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%B6%94%EA%B0%80-%EC%82%AD%EC%A0%9C-%EC%9E%AC%EC%84%A4%EC%A0%95#entry79comment</comments>
      <pubDate>Wed, 24 Dec 2025 12:27:19 +0900</pubDate>
    </item>
    <item>
      <title>[RDS for ORACLE] RMAN(Recovery Manager) 로 데이터베이스 백업</title>
      <link>https://bintech.tistory.com/entry/RDS-for-ORACLE-RMANRecovery-Manager-%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B0%B1%EC%97%85</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYUlzI/dJMcafd8c3s/S0hiRtdO9ARLZ3Usxklm4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYUlzI/dJMcafd8c3s/S0hiRtdO9ARLZ3Usxklm4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYUlzI/dJMcafd8c3s/S0hiRtdO9ARLZ3Usxklm4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYUlzI%2FdJMcafd8c3s%2FS0hiRtdO9ARLZ3Usxklm4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon&amp;nbsp;RDS&amp;nbsp;ORACLE&amp;nbsp;DB&amp;nbsp;인스턴스에서&amp;nbsp;Oracle&amp;nbsp;RMAN(Recovery&amp;nbsp;Manager)&amp;nbsp;DBA&amp;nbsp;작업을&amp;nbsp;수행하는&amp;nbsp;방식을&amp;nbsp;알아보며 &lt;br /&gt;rdsadmin.rdsadmin_rman_util 패키지 사용하여 오라클 데이터베이스 백업을 진행 테스트를 진행&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0. 테스트데이터 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;xtmp_test&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NUMBER&amp;nbsp;PRIMARY&amp;nbsp;KEY, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VARCHAR2(100), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;created_at&amp;nbsp;&amp;nbsp;DATE&amp;nbsp;DEFAULT&amp;nbsp;SYSDATE &lt;br /&gt;); &lt;br /&gt;&lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;FOR&amp;nbsp;i&amp;nbsp;IN&amp;nbsp;1..100&amp;nbsp;LOOP &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INSERT&amp;nbsp;INTO&amp;nbsp;xtmp_test&amp;nbsp;(id,&amp;nbsp;name) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUES&amp;nbsp;(i,&amp;nbsp;'User_'&amp;nbsp;||&amp;nbsp;i); &lt;br /&gt;&amp;nbsp;&amp;nbsp;END&amp;nbsp;LOOP; &lt;br /&gt;&amp;nbsp;&amp;nbsp;COMMIT; &lt;br /&gt;END; &lt;br /&gt;/ &lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&amp;nbsp;RMAN&amp;nbsp;백업&amp;nbsp;사전&amp;nbsp;요구&amp;nbsp;사항&amp;nbsp;확인&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;--마스터계정에서 &lt;br /&gt;GRANT&amp;nbsp;SELECT&amp;nbsp;ANY&amp;nbsp;DICTIONARY&amp;nbsp;TO&amp;nbsp;testdb; &lt;br /&gt;&lt;br /&gt;--archivelog&amp;nbsp;모드&amp;nbsp;확인 &lt;br /&gt;SELECT&amp;nbsp;log_mode&amp;nbsp;FROM&amp;nbsp;v$database; &lt;br /&gt;&lt;br /&gt;--redo&amp;nbsp;log&amp;nbsp;보존&amp;nbsp;기간&amp;nbsp;확인&amp;nbsp;(0이상) &lt;br /&gt;SELECT&amp;nbsp;name,&amp;nbsp;value &lt;br /&gt;FROM&amp;nbsp;v$parameter &lt;br /&gt;WHERE&amp;nbsp;name&amp;nbsp;LIKE&amp;nbsp;'%retention%'; &lt;br /&gt;&lt;br /&gt;--redo&amp;nbsp;log&amp;nbsp;보존&amp;nbsp;기간&amp;nbsp;설정&amp;nbsp;(--admin계정에서&amp;nbsp;실행) &lt;br /&gt;&lt;br /&gt;begin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rdsadmin.rdsadmin_util.set_configuration( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'archivelog&amp;nbsp;retention&amp;nbsp;hours', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;gt;&amp;nbsp;'24'); &lt;br /&gt;end; &lt;br /&gt;/ &lt;br /&gt;commit; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;검증&lt;/b&gt; &lt;br /&gt;BEGIN &lt;br /&gt;rdsadmin.rdsadmin_rman_util.validate_database; &lt;br /&gt;END; &lt;br /&gt;&lt;br /&gt;--충분한&amp;nbsp;저장공간&amp;nbsp;확보 &lt;br /&gt;--freestoragespace로&amp;nbsp;요유공간&amp;nbsp;모니터링 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--전체&amp;nbsp;백업&amp;nbsp;수행 &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rdsadmin.rdsadmin_rman_util.backup_database_full( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'SYS',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_directory_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_section_size_mb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;1024, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'FULL_DB_BACKUP', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_rman_to_dbms_output&amp;nbsp;=&amp;gt;&amp;nbsp;FALSE); &lt;br /&gt;END; &lt;br /&gt;&lt;br /&gt;--증분&amp;nbsp;백업&amp;nbsp;수행 &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rdsadmin.rdsadmin_rman_util.backup_database_incremental( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'SYS',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_directory_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'DATA_PUMP_DIR', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;1,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_section_size_mb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;1024, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt;&amp;nbsp;'MY_INCREMENTAL_BACKUP', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_rman_to_dbms_output&amp;nbsp;=&amp;gt;&amp;nbsp;FALSE); &lt;br /&gt;END; &lt;br /&gt;&lt;br /&gt;--파일확인 &lt;br /&gt;&amp;nbsp;SELECT&amp;nbsp;filename,type,filesize/1024/1024&amp;nbsp;size_megs,to_char(mtime,'DD-MON-YY&amp;nbsp;HH24:MI:SS')&amp;nbsp;timestamp &lt;br /&gt;FROM&amp;nbsp;TABLE(rdsadmin.rds_file_util.listdir(p_directory&amp;nbsp;=&amp;gt;&amp;nbsp;upper('DATA_PUMP_DIR')))&amp;nbsp;order&amp;nbsp;by&amp;nbsp;4; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--파일&amp;nbsp;삭제 &lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;FOR&amp;nbsp;rec&amp;nbsp;IN&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT&amp;nbsp;filename &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;TABLE(rdsadmin.rds_file_util.listdir(p_directory&amp;nbsp;=&amp;gt;&amp;nbsp;upper('DATA_PUMP_DIR'))) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;TYPE='file'&amp;nbsp;&amp;nbsp;--&amp;nbsp;필요한&amp;nbsp;경우&amp;nbsp;필터&amp;nbsp;조건 &lt;br /&gt;&amp;nbsp;&amp;nbsp;)&amp;nbsp;LOOP &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTL_FILE.FREMOVE('DATA_PUMP_DIR',&amp;nbsp;rec.filename); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE('Deleted:&amp;nbsp;'&amp;nbsp;||&amp;nbsp;rec.filename); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXCEPTION &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;OTHERS&amp;nbsp;THEN &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE('Failed&amp;nbsp;to&amp;nbsp;delete:&amp;nbsp;'&amp;nbsp;||&amp;nbsp;rec.filename&amp;nbsp;||&amp;nbsp;'&amp;nbsp;-&amp;nbsp;'&amp;nbsp;||&amp;nbsp;SQLERRM); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END; &lt;br /&gt;&amp;nbsp;&amp;nbsp;END&amp;nbsp;LOOP; &lt;br /&gt;END; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 : &lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.RetainRedoLogs.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.RetainRedoLogs.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.RMAN-requirements.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.RMAN-requirements.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DATABASE/Oracle</category>
      <category>DB백업</category>
      <category>oracle</category>
      <category>rds for oracle</category>
      <category>rman</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/78</guid>
      <comments>https://bintech.tistory.com/entry/RDS-for-ORACLE-RMANRecovery-Manager-%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B0%B1%EC%97%85#entry78comment</comments>
      <pubDate>Tue, 23 Dec 2025 13:41:32 +0900</pubDate>
    </item>
    <item>
      <title>2026 DAsP / DAP 시험일정 공유</title>
      <link>https://bintech.tistory.com/entry/2026-DAsP-DAP-%EC%8B%9C%ED%97%98%EC%9D%BC%EC%A0%95-%EA%B3%B5%EC%9C%A0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년도 DAsP 와 DAP 시험일정이 공개되어 공유드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cybOpe/dJMcafFa4Uc/om9m0wMSTfOXB7ynshAf00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cybOpe/dJMcafFa4Uc/om9m0wMSTfOXB7ynshAf00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cybOpe/dJMcafFa4Uc/om9m0wMSTfOXB7ynshAf00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcybOpe%2FdJMcafFa4Uc%2Fom9m0wMSTfOXB7ynshAf00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;371&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년도 DAsP와 DAP 는 모두 2회차만 진행되네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DAsP의 시험 회수도 줄어들어 필요하신분들은 미리 준비하면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 검정시간입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H6ZFX/dJMcac2HOJV/vGCTkQnHj8vJiqxbcs2Rgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H6ZFX/dJMcac2HOJV/vGCTkQnHj8vJiqxbcs2Rgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H6ZFX/dJMcac2HOJV/vGCTkQnHj8vJiqxbcs2Rgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH6ZFX%2FdJMcac2HOJV%2FvGCTkQnHj8vJiqxbcs2Rgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;635&quot; height=&quot;263&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자격증/DAP</category>
      <category>2026년 dasp dap 시험일정</category>
      <category>dap</category>
      <category>dasp</category>
      <category>데이터자격검정시험</category>
      <author>DBnA</author>
      <guid isPermaLink="true">https://bintech.tistory.com/77</guid>
      <comments>https://bintech.tistory.com/entry/2026-DAsP-DAP-%EC%8B%9C%ED%97%98%EC%9D%BC%EC%A0%95-%EA%B3%B5%EC%9C%A0#entry77comment</comments>
      <pubDate>Sun, 21 Dec 2025 12:17:23 +0900</pubDate>
    </item>
  </channel>
</rss>