기간을 지정해서 백업하고 중복 에러 없이 복구하기
시간 필드를 사용해서 특정기간 범위의 자료만 백업하는 방법,
그리고 백업된 파일로 중복된 primary key를 피하면서 복구하는 명령어
* 기간을 지정해서 백업
--skip-tz-utc 옵션이 있어야 현재 시간대로 제대로 검색됨, 기본은 UTC, 복구는 옵션과 관계없이 원래 값으로 복구됨
--skip-add-drop-table : 백업 파일에 DROP TABLE 명령 추가하지 않기
> mysqldump -u username --password=[password] db_name table_name --skip-add-drop-table --skip-tz-utc --where="updated_at >= '2024-01-01 00:00:00' AND updated_at < '2024-02-01 00:00:00'" > backup.sql
//-------------------------------------
< 복구 >
* 없는 record는 추가, primary key 키가 같은데 변경된 것은 덮어쓰기
- 파일 수정 : INSERT INTO => REPLACE INTO
> "C:\Program Files\Git\usr\bin\sed" "s/^INSERT INTO/REPLACE INTO" backup.sql > backup-fix.sql
> mysql -u [username] --password=[password] [database_name] --show-warnings --default-character-set=utf8mb4 --force < backup-fix.sql
* 없는 것만 추가, (변경된 것은 불변)
- INSERT INTO => INSERT IGNORE INTO 로 변경
'Code > Database (DB)' 카테고리의 다른 글
mysql 쿼리를 sqlite 쿼리로 변경, 변수사용, 날짜별 합계 구하기 (0) | 2024.09.22 |
---|---|
동시에 2개의 필드 중복값을 제거하는 select 쿼리 (0) | 2024.09.01 |
mysql 정규식 에러 Timeout exceeded in regular expression 해결 방법 (0) | 2023.12.31 |
mysql 문자열 검색 , 발견한 횟수(찾은 개수) 구하기 (0) | 2023.12.02 |
mysql 요일별 통계 정렬 (0) | 2023.11.24 |