rocketchat mongodb migrate (mmap -> wiredTiger)

아래 절차는 major 버전 단계별로 1~5 를 수행한다. (버전 5에서 7로 변경 시, 버전 5 수행 > 버전 6 수행 > 버전 7 수행)

  1. backup

    • docker-compose exec mongo mongodump –archive=/data/mmapdump.gz –gzip
    • container 안의 mmapdump.gz 를 외부로 가져온다.

  2. container down

    • docker-compose down
    • db 디렉토리 rename (만약을 위해)

  3. docker-compose 에서 몽고db 만 재시작 (변경할 버전으로 시작)
  4. 복구

    • container 에 접근
    • docker-compose exec mongo bash
    • 기존 replica 셋으로 초기화 (rocket chat docker-compose 파일은 rs0 로 설정함)
      mongo 실행 : mongo 또는 mongosh
      // init/
      config = { _id : “rs0”, members: [ {_id:0,host : “mongo:27017”} ] }
      rs.initiate(config);

  5. 데이터 복원

    • 컨테이너 안으로 백업한 데이터 전달
    • 데이터 복원

      • mongorestore –drop –archive=./mmapdump.gz –gzip –noIndexRestore

  6. 컨테이너 재시작



mysql 파티션 추가

파티션 현황 조회

SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
FROM information_schema.PARTITIONS
WHERE TABLE_NAME = '테이블명';

파티션 생성

  • MAXVALUE 를 사용하면 나중에 파티션을 추가할 수 없다. 추가가 필요한 경우, 파티션 생성을 새로 해야 된다. (데이터가 많으면 오래걸림)
ALTER TABLE 테이블명 PARTITION BY RANGE(TO_DAYS(필드명))(
PARTITION p20211201 VALUES LESS THAN (TO_DAYS('2022-01-01')),
PARTITION p20220101 VALUES LESS THAN (TO_DAYS('2022-02-01'))
);

파티션 추가

ALTER TABLE 테이블명 ADD PARTITION (
PARTITION P20220201 VALUES LESS THAN (TO_DAYS('2022-03-01')),
PARTITION P20220301 VALUES LESS THAN (TO_DAYS('2022-04-01'))
);