본문 바로가기

개발노트

(96)
[pt-online-schema-change] 아주 큰 테이블(1billion rows) ALTER troubleshoot 및 후기 데이터로 먹고 사는 회사답게(?) 약 10억건이 넘는 rows 를 가진 테이블이 하나 존재한다. (그냥 샤딩, 파티셔닝 같은 걸 안 한거에요 ㅋㅋ)서비스가 시간이 지나갈수록 초기 설계 당시에는 고려가 되지 않은 사항들로 인해 변화된 요구사항에 의해 테이블도 그에 맞게 ALTER 가 필요했다.사실, 작년에도 on-premise (IDC)에 있던 데이터베이스를 클라우드 환경으로 이전할 때만 해도 이 테이블의 rows 는 약 5억~6억건 사이였던 것으로 기억한다.여튼, 그 때도 pt-online-schema-change 의 도움으로 무사히 ALTER 는 성공을 했었고, 별 이슈가 없었기에 사내에만 간단히 문서화한 게 전부였는데, 이번에는 뭔가 잘 안 되서 5번만에 성공을 하였는데 사실 정확하게 5번째에도 왜 ..
[Centos7] Paths 가 만들어 내는 임시 파일은 내가 지우지 않아도 될까? 요즘 스프링 부트로 파일 업/다운로드 시스템을 구현하고 있다.여러 프로젝트에 흩어져 있고 제각각인 구현 방법과 어느 시스템에서 이 파일을 만들고 업로드했는지 찾는데 드는 비용이 만만치 않아서, 시스템을 일원화 하기로 했다. 그렇게 java.nio.file.* 패키지를 이용하여 개발하는 중, Files.createTempFile() 라는 메소드를 봤는데 이 API 가 생성하는 파일이 계속 쌓이는 건 아닐까 하는 노파심/걱정이 생겼다. 그래서 조금 찾아봤다.서버의 운영체제 배포판은 Centos 7 이고`java.io.tmpdir` 에 대해서 별다른 설정을 하지 않은 Spring Boot 앱은 `/tmp` 디렉토리를 임시 파일 공간으로 사용하고 있다.그렇다면, /tmp 디렉토리는 자바 뿐만이 아니라 리눅스도 ..
리눅스 zsh 설정 간략 명령어 정리 # yum install -y zsh# echo $(which zsh) >> /etc/shells# sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"# cd ~# git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting# git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestion..
pt-online-schema-change 사용하기 pt-online-schema-changepercona tools 설치# curl -O https://www.percona.com/downloads/percona-toolkit/3.0.8/binary/redhat/7/x86_64/percona-toolkit-3.0.8-1.el7.x86_64.rpm# yum install percona-toolkit-3.0.8-1.el7.x86_64.rpm확인# pt-online-schema-change --alter "CHANGE COLUMN STRINGANSWER STRINGANSWER TEXT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'" D=ovey,t=SURVEY_ANSWER --dry-run --ask-pass실..
리눅스에서 파일 확장자 일괄 변경 명령어 find . -name "*.jsx" -exec rename 's/.jsx$/.js/' {} \;
[React] 리액트로 백오피스 개발하며 경험한 추천 npm 라이브러리 (블로그를 starrybleu.github.io 로 옮겼었는데, 생각보다 markdown 방식으로 글을 쓰기가 그다지 편하지 않았고 이미지 첨부하면서 작성하는게 영 귀찮아서 다시 티스토리에 글을 써보려고 한다. JPA specification 관련 글 몇개는 저기 있다. 언제 옮겨오지?) 약 지난 11개월동안, 사내 백오피스 웹 앱을 전면 개편하기 위한 개발을 하고 출시를 하고나서 얻은 경험을 바탕으로 리액트로 UI/UX 개발을 하면서 알게된 좋은 라이브러리를 정리하고자 글을 쓰게 되었다. 전반적인 의견으로는 npm 라이브러리의 다운로드 수가 많은 게 가장 좋다. 1. UI framework- reactstrap : 현재 최신버전 bootstrap 4 기준의 CSS 프레임워크. 구 버전의 IE 에 적용하..
[JPA/Hibernate] When using custom class as a field of entity along with JPA (Hibernate) 아래와 같은 Entity 클래스가 있다. 이 클래스는 `ClientCustomConfig` 라는 내가 정의한 타입을 인스턴스 변수로 쓰고 있다.이런 경우, 주의해야할 점이 있어서 기록을 한다.Entity Client123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657@Getter@Entity@Table(name = "`client`")@EntityListeners(AuditingEntityListener.class)public class Client implements Serializable { private static final long serialVersionUID..
[GIT] ubuntu on windows 사용 시, 모든 파일이 변경된다고 인식될 때 라인 끝 문자(End of Line Character)가 달라서 windows cmd 로 `git status` 했을 때와 ubuntu shell 에서 `git status` 의 결과가 다르다. ubuntu shell 에서 git config --global core.filemode falsegit config --global core.autocrlf true 를 실행해주면 된당.