728x90
반응형

linux/DB 22

mysql dump (DB 백업)

전체 백업 mysqldump -u [username] -p --all-databases > [파일명].sql 특정 DB 백업 mysqldump -u [username] -p --databases [db명] > [파일명].sql 특정 table 백업 mysqldump -u [username] -p --tables [table명] > [파일명].sql 조합 mysqldump --single-transaction --databases [db명] --tables [테이블명] -h [db주소] -u [username] -p | gzip > [파일명].gz mysqldump option --single-transaction : lock 을 걸지 않고도 dump 파일의 정합성 보장하는데 InnoDB 테이블이 아닌 M..

linux/DB 2022.02.28

xtrabackup 사용법 (innobackupex)

[참고 블로그] https://jsonobject.tistory.com/494 XtraBackup 버전별 제약사항 Percona XtraBackup은 데이터베이스 버전에 따라 올바른 버전을 설치해야 정상적으로 작동함에 유의해야 한다. [관련 링크1] [관련 링크2] MariaDB 5.x.x, 10.0.x는 percona-xtrabackup-22 패키지를 설치해야 한다. MariaDB 10.1 이상부터는 Mariabackup이 권장된다. XtraBackup은 10.1, 10.2에서는 제한적으로만 작동하고, 10.3부터는 아예 지원이 되지 않는다. XtraBackup 설치 CentOS 7에서의 XtraBackup의 설치 방법은 아래와 같다. # EPEL 저장소 설치, XtraBackup 설치시 EPEL 저장..

linux/DB 2021.12.02

MySQL FEDERATED 설정, 확인 방법

Mysql 과 Mariadb에서 지원하는 FEDERATED 기능은 사실 Oracle에서 써오던 dblink와는 개념이 다릅니다. Oracle의 dblink가 다른 DB로 어떤 세션을 열어주고, 접속하고나면 권한이 허용된 범위내에서 다양한 작업을 자유롭게 할 수 있는 반면, Mysql 과 Mariadb에서 지원하는 FEDERATED 기능은 각자 다른 DB간의 테이블 동기화의 개념에 더 가깝습니다. 가볍고 간편하게, 물리적으로 다른 DB간에 데이터를 동기화 할 수 있는 좋은 방법 입니다. * 소스에서 MySQL을 빌드하는 경우 FEDERATED 스토리지 엔진을 포함하려면 -DWITH_FEDERATED_STORAGE_ENGINE 옵션을 사용하여 CMake를 실행합니다 설치된 엔진 확인 > show engine..

linux/DB 2021.07.20

mysql 계정 생성 및 권한 부여

user 생성 유저를 생성하는 명령어 create user '아이디'@'%' identified by '비밀번호'; 권한 부여 특정 데이터베이스에만 권한을 줄 수도 있고, 아니면 특정 권한(ex. select)만 줄 수도 있다. grant all privileges on *.* to '아이디'@'%' identified by '비밀번호'; -> 모든 데이터베이스의 모든 테이블에 대한 권한 부여(*.* 이 모든 테이블이란 뜻이다.) grant all privileges on DB이름.* to '아이디'@'%' identified by '비밀번호'; -> 특정 DB에 대한 모든 권한 부여. grant select, insert, update on DB이름.* to '아이디'@'%'; -> 특정 DB에 대한 ..

linux/DB 2021.07.20

bulk_insert_buffer_size 설정

MySQL은 조회(SELECT) 에 있어서 최고의 강점을 갖는 종류의 DB이지만, 경우에 따라 막대한 양의 Insert 를 수행해야할 때가 있다. 대량의 데이터를 삽입하는 것을 Bulk Inserting 이라 하며, 이를 위한 다음과 같은 튜닝 기술들 정도는 숙지해두도록 하자. (1) 여러 개의 Insert 구문 수행시 Values 리스트를 다중으로 사용하는 것이 성능을 향상시킬 수 있다. 정말 효과 제대로 본 방법인데, 다수의 동일한 Insert query에 대해서 다음과 같이 최적화가 가능하다. /etc/mysql/my.cnf 파일을 열어서 [mysqld] 항목 아래에 bulk_insert_buffer_size=256M 과 같이 설정 * 수치는 필요에 따라 설정하며 1024 단위로 하는게 좋다 설정 ..

linux/DB 2021.07.15

InnoDB 테이블 손상 시 강제 복구

웬만하면 MySQL 서버의 코드 버그로 인해 비정상적인 셧다운이 되지 않는다. 하지만 MySQL 서버에 장착한 별도의 플러그인, Custom으로 개발한 UDF 사용, 하드웨어 장애 등의 원인으로 비정상적 종료가 될 수 있다. 특별한 명령이 없었는데 MySQL 서버가 재시작 된다면 MySQL 서버의 에러로그 파일에 "Segmentation fault" 메시지가 있는지 확인해야 한다. 이와 같이 "Segmentation fault" 메시지가 존재하고 서버가 셧 다운 되었다면, 데이터 파일 혹은 InnoDB의 로그파일 손상되었을 수 있다. my.cnf 에서 [mysqld] innodb_force_recovery = 1 옵션값은 0~6까지있는데 0보다 큰 값으로 설정되어있으면 INSERT, UPDATE , DE..

linux/DB 2021.07.02

mysql LOCK TABLES 오류

mysqldump로 DB 백업시 아래와 같은 오류 메세지가 발생하며 중단되는 경우가 있습니다. - mysqldump: got errer : 1146 : table '테이블명' doesn't exist when using LOCK TABLES 원인 : 해당 table에 lock이 걸려 있어 덤프가 안되는 문제 입니다. 조치 : mysqldump에 --lock-all-table 옵션을 추가 하여 진행 하면 정상적으로 백업 됩니다. mysqldump -u [User] -p --lock-all-tables [DBName] > [dump file name].sql

linux/DB 2021.06.30
728x90
반응형
LIST