<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mysql Dump on Joonlog</title><link>https://joonlog.github.io/tags/mysql-dump/</link><description>Recent content in Mysql Dump on Joonlog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Fri, 16 May 2025 09:00:00 +0900</lastBuildDate><atom:link href="https://joonlog.github.io/tags/mysql-dump/index.xml" rel="self" type="application/rss+xml"/><item><title>MySQL / MariaDB 덤프 및 복원</title><link>https://joonlog.github.io/p/mysql-/-mariadb-%EB%8D%A4%ED%94%84-%EB%B0%8F-%EB%B3%B5%EC%9B%90/</link><pubDate>Fri, 16 May 2025 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/mysql-/-mariadb-%EB%8D%A4%ED%94%84-%EB%B0%8F-%EB%B3%B5%EC%9B%90/</guid><description>&lt;ul&gt;
&lt;li&gt;서비스 운영 중에 DB 백업/복원 작업할 때 주의할 점 정리&lt;/li&gt;
&lt;li&gt;옵션에 따라 백업/복원 기능이 다르니 주의 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="1-db-접근"&gt;1. DB 접근
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -u 사용자 -p -h 도메인명
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="2-db-덤프-백업"&gt;2. DB 덤프 (백업)
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysqldump -h 도메인명 -u 사용자 -p &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --single-transaction &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --routines &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --triggers &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --events &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; BASE_DB &amp;gt; DB명_날짜.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="옵션-설명"&gt;옵션 설명
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-single-transaction&lt;/code&gt;: InnoDB 전용. 덤프 중 트랜잭션 시작해서 일관된 스냅샷 유지. 서비스 중에도 락 없이 가능.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-routines&lt;/code&gt;: 저장 프로시저, 함수 포함.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-triggers&lt;/code&gt;: 각 테이블의 트리거 포함.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-events&lt;/code&gt;: 이벤트 스케줄러 이벤트 포함.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="3-덤프-파일-확인-use-문-유무"&gt;3. 덤프 파일 확인 (USE 문 유무)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mysqldump&lt;/code&gt; 시 &lt;code&gt;--databases&lt;/code&gt; 옵션 사용하면 &lt;code&gt;.sql&lt;/code&gt; 파일에 &lt;code&gt;CREATE DATABASE&lt;/code&gt; + &lt;code&gt;USE DB명;&lt;/code&gt; 구문 포함됨&lt;/li&gt;
&lt;li&gt;복원 시 다른 DB에 덮어씌어짐&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;반드시 확인 필요&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;head -n &lt;span class="m"&gt;30&lt;/span&gt; DB명_날짜.sql &lt;span class="p"&gt;|&lt;/span&gt; grep -i &lt;span class="s2"&gt;&amp;#34;^USE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;만약 &lt;code&gt;USE DB명;&lt;/code&gt; 이 있을 경우 → 주석 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Before: USE BASE_DB;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- After : -- USE BASE_DB;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-덤프-파일을-통한-복원"&gt;4. 덤프 파일을 통한 복원
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -h 도메인명 -u 사용자 -p 생성한DB명 &amp;lt; DB명_날짜.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;신규 DB는 복원 전 DB 생성 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="5-기존신규-db-확인"&gt;5. 기존/신규 DB 확인
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;기존/신규 DB 내 테이블의 rows 수가 동일한지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql&amp;gt; SELECT 기존DB명 AS source, COUNT&lt;span class="o"&gt;(&lt;/span&gt;*&lt;span class="o"&gt;)&lt;/span&gt; FROM 기존DB명.PTNT_RSRV_HIST_BACK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; UNION ALL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; SELECT 신규DB명, COUNT&lt;span class="o"&gt;(&lt;/span&gt;*&lt;span class="o"&gt;)&lt;/span&gt; FROM 신규DB명.PTNT_RSRV_HIST_BACK&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="주의사항-요약"&gt;주의사항 요약
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mysqldump&lt;/code&gt;에 &lt;code&gt;-databases&lt;/code&gt; 옵션 쓰면 &lt;code&gt;USE&lt;/code&gt; 문 포함됨 → 다른 DB 덮어씌우는 원인.&lt;/li&gt;
&lt;li&gt;클라우드 DB는 &lt;code&gt;SUPER&lt;/code&gt; 권한 없을 수 있음 → &lt;code&gt;-set-gtid-purged=OFF&lt;/code&gt; 넣어야 에러 안남.&lt;/li&gt;
&lt;li&gt;복원할 DB명과 &lt;code&gt;.sql&lt;/code&gt; 파일 내 &lt;code&gt;USE&lt;/code&gt; 구문 다를 경우 조심해야 함.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>