반응형

운영서버 운영 도중 Could not get JDBC Connection; nested exception is java.sql.SQLException

와 같은 연결 에러가 발생하였다.

 

해당 DB서버의 mysql 서비스가 종료되었는지 확인해봤지만 서비스는 정상적으로 기동중인것을 볼 수 있었다.

 

별 수 없이 재기동을 하기 위해 종료 명령어를 실행하였다.

service mysql stop

 

몇 분을 기다려도 mysql 서비스가 무기한으로 종료 요청만 진행될뿐 종료가 되지 않았다.

 

이상하다고 판단되어 서버의 용량을 확인해보니 남은 용량이 없었다.

df -h

 

서버 내 용량을 800메가 이상 사용중인곳을 확인하기 위해 아래 명령어를 실행하였다.

find ./* -size +800000k

 

명령을 입력하니 mysql/mysql-bin.000001과 같은 로그파일들이 잔득 쌓여있는 모습을 확인하였다.

 

 

해당 디렉토리로 이동하여 용량들을 확인해보니 약 30기가정도를 사용 중는데, 해당 로그들은 데이터를 지금 또는 나중에 업데이트하는 모든 명령문이 기록되어 있다.

각 명령문에 대한 데이터를 업데이트하는 시간 정보도 가지고 있는데, 사실 로그라 이미 한참 지난 불필요한 로그는 삭제처리하여도 문제가 없어서 삭제 조치를 하였다.

 

해당 로그 데이터가 5일 이상 지나면 삭제 될 수 있도록 설정파일에 옵션을 추가하였다.

 

/etc/my.cnf

[mysqld]
expire_logs_days = 5

 

5일 이상이 지난 로그파일들이 삭제되는 옵션이다.

 

삭제 후 용량을 확인시 32g가 확보되었고 정상적으로 mysql 서비스는 올라왔다.

 

이후 톰캣 재시작을 하니 정상적으로 운영이 가능해졌다.

반응형
반응형

작성한 테이블에 대해서 결과값을 뽑는 쿼리는 아래와 같다.

SELECT
	ORDINAL_POSITION `번호`,
	COLUMN_NAME `컬럼`,
	COLUMN_TYPE `타입(길이)`,
	COLUMN_KEY `KEY`,
	IS_NULLABLE `NULL 허용`,
	EXTRA `AUTO_INCREMENT`,
	COLUMN_DEFAULT `기본값`,
	COLUMN_COMMENT `COMMENT`
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = '데이터베이스명' AND TABLE_NAME = '테이블명'
ORDER BY TABLE_NAME, ORDINAL_POSITION

 

이 외에도 다른 컬럼값들이 있는데, 변경해서 사용하면 된다.

반응형
반응형

mysql 서버를 구성하고 웹에서 데이터를 조회해오는데 문제없이 잘 가져오다가

빈 컬럼이거나 NULL이 들어가있으면 Case When문구를 활용하여 치환하는 query가 있었는데

 

툴로 조회할때는 문제가 없지만, mybatis를 통해 조회할때만 문제가 되었다.

 

처음 의심한 곳은 mapper의 xml 인코딩이 깨졌을꺼라 생각했지만 문제없이 UTF-8 처리였다.

 

SET CHARACTER SET UTF8;

해당 쿼리를 던지고 조회하면 수정이 된다고해서 처리하였지만 동일한 증상이 발생하였고,

 

mysql -u root -p
비밀번호 입력

접속하여 status로 서버쪽 언어 인코딩 상태를 확인해보니 latin1로 조회되었다.

 

status 조회 결과

 

서버쪽 인코딩이 안맞는것으로 판단하여 mysql 설정파일인 my.ini를 열어

mysqld라인에 character-set-server=utf8 를 입력하였다.

[mysqld]
character-set-server=utf8

 

서비스에서 mysql 재기동 후 정상적으로 치환하여 보여지는것을 확인했다.

 

반응형
반응형

mysql 서비스를 종료 후 재기동을 하려고 하니 위와 같은 에러가 발생하고

 

my.ini 옵션에 bind-address를 추가하여도 동일하게 문제가 발생하였다.

 

명령 프롬프트를 관리자 권한으로 실행하고 mysql 설치된 위치로 이동하여

bin 위치에서 (C:\Program Files\MySQL\MySQL Server 8.0\bin)

 

mysqld --initialize

입력 후 약간의 시간이 지난 후

 

net start mysql

입력하여 서비스를 정상적으로 기동하였다.

반응형