위 포스팅을 통해서 이어지는 글입니다.
EC2 내부에 phpMyAdmin을 설치하고 사용을 하는데, 꽤 큰 테이블을 만들어야 할 상황에서 오류가 발생할 때를 위한 정보글입니다.
위와 같은 문제를 해결하는 것이 목적입니다.
cd /home/ec2-user/test/phpMyAdmin
SSH 접속을 해서 위와 설치한 phpMyAdmin 폴더로 이동합시다.
sudo nano /etc/php.ini
이동한 폴더에서 편집기를 실행합니다.
해당 파일에서 phpMyAdmin 의 각종 설정을 변경 가능합니다.
파일이 열렸다면 아래 버튼 쭉 눌러서 찾아줄 내용이 있습니다.
; Maximum allowed size for uploaded files.
upload_max_filesize = 100M
; Maximum size of POST data that PHP will accept.
post_max_size = 100M
; Maximum execution time of each script, in seconds
max_execution_time = 300
; Maximum amount of time each script may spend parsing request data
max_input_time = 300
; Maximum memory a script may consume (8MB)
memory_limit = 256M
우선은 이런 내용을 찾아볼까요?
컨트롤 + W를 눌러서 검색한 내용 치고 엔터 누르면 파일 내에서 해당 행으로 곧장 이동 가능합니다.
위에서 예시로 들고 있는 변수들에 대한 설명은 다음과 같습니다.
1. upload_max_filesize
설명: 한 번에 업로드할 수 있는 최대 파일 크기를 지정합니다. 주로 파일 업로드 기능을 사용할 때 이 설정을 조정합니다.
예시: upload_max_filesize = 100M (최대 100MB 파일 업로드 허용)
2. post_max_size
설명: POST 방식으로 전송할 수 있는 최대 데이터 크기를 지정합니다. 파일 업로드 시 upload_max_filesize보다 커야 하며, 폼 데이터와 파일을 포함한 전체 POST 요청의 크기를 제한합니다.
예시: post_max_size = 100M (최대 100MB 데이터 전송 허용)
3. max_execution_time
설명: 각 스크립트가 실행될 수 있는 최대 시간을 초 단위로 지정합니다. 긴 시간이 걸리는 스크립트의 경우 타임아웃 오류를 방지하기 위해 이 값을 조정할 수 있습니다.
예시: max_execution_time = 300 (최대 300초 동안 스크립트 실행 허용)
4. max_input_time
설명: 스크립트가 입력 데이터를 파싱하는 데 사용할 수 있는 최대 시간을 초 단위로 지정합니다. 이는 POST와 GET 데이터, 파일 업로드 데이터 등을 파싱하는 데 걸리는 시간을 제한합니다.
예시: max_input_time = 300 (최대 300초 동안 입력 데이터 파싱 허용)
5. memory_limit
설명: 각 스크립트가 사용할 수 있는 최대 메모리 양을 지정합니다. 메모리 사용이 많은 스크립트의 경우 이 값을 조정하여 메모리 부족 오류를 방지할 수 있습니다.
예시: memory_limit = 256M (최대 256MB 메모리 사용 허용)
적절하게 변경을 했다면, 컨트롤 + O 누른 후 엔터로 저장하고 컨트롤 + X를 눌러 뒤로 가줍시다.
이런 식으로 phpMyAdmin 폴더 내부에서 특정한 파일들을 직접 열어 각종 변수를 수정 가능합니다.
sudo nano /etc/mysql/my.cnf
위쪽에서 설명했던 내용대로 다음과 같은 방식으로 특정 파일을 찾아도 됩니다.
하지만, AWS RDS를 통해서 phpMyAdmin에 연결하고 있다면 콘솔 페이지에서 직접 세팅이 필요합니다.
RDS 페이지로 이동하고 왼쪽 대시보드를 봅시다.
다음과 같이 “파라미터 그룹” 이라는 선택지가 있습니다.
저곳을 클릭합시다.
RDS 페이지로 이동하고 왼쪽 대시보드를 봅시다.
다음과 같이 “파라미터 그룹” 이라는 선택지가 있습니다.
저곳을 클릭합시다.
그럼 위와 같이 파라미터 그룹을 생성 가능합니다.
파라미터 그룹 생성을 눌러주세요.
원하는 그룹의 이름과 설명을 부여합시다.
여기서 중요한 포인트는 내가 현재 phpMyAdmin에 사용하고 있는 RDS의 엔진 유형과 동일한 엔진 유형을 선택해야 한단 겁니다.
프리 티어라면 “community edition” 을 선택하면 됩니다.
생성을 누르면 이제 내가 생성한 파라미터 그룹을 클릭하여 세부적은 내용 수정이 가능합니다.
그룹에 들어왔으면, “편집” 을 눌러서 필요한 파라미터들을 수정할 수 있도록 합시다.
편집을 누르세요.
편집 화면에서는 이렇게 파라미터 검색창에서 특정한 이름의 파라미터를 찾고, 그 값을 지정할 수 있습니다.
제가 해결하고자 하는 문제는 내 phpMyAdmin 의 테이블 용량을 늘리는 것입니다.
이를 위해서 innodb_log_file_size 변수를 최대로 설정을 해줬습니다.
그 밖에는, 아래의 변수들을 찾아서 값을 다음과 같이 변경해주세요.
innodb_strict_mode: 0
innodb_file_per_table: 1
innodb_default_row_format: DYNAMIC
innodb_log_file_size:
InnoDB 로그 파일 크기를 늘리면 더 큰 트랜잭션을 처리할 수 있습니다.
innodb_log_file_size = 256M
innodb_strict_mode:
InnoDB strict 모드를 비활성화하면 일부 행 크기 제한이 완화될 수 있습니다.
innodb_strict_mode = 0
innodb_file_per_table:
이 설정을 활성화하면 각 테이블이 자체적인 테이블스페이스를 갖게 되어 데이터 크기 관리가 용이해집니다.
innodb_file_per_table = 1
innodb_default_row_format:
행 포맷을 DYNAMIC으로 설정하면 더 큰 행을 지원할 수 있습니다.
innodb_default_row_format = DYNAMIC
위와 같은 의미를 가지는 변수들입니다.
위에서 변수를 변경하고 저장했다면, 이제 내 RDS로 이동해서 파라미터 그룹을 변경하고 재시작 하면 끝입니다.
이를 위해서 RDS 대시보드로 이동합시다.
이동해서 DB 식별자 클릭해서 페이지에 접속합시다.
여기서 저쪽 오른쪽에 있는 수정 버튼을 눌러주세요.
수정 화면에서 아래로 쭉 드래그 하다 보면은 “추가 구성” 이라는 섹션이 있습니다.
이곳에서 DB 파라미터 그룹을 설정 가능합니다.
이걸 방금 만든 파라미터 그룹으로 설정하고 가장 아래에서 저장 버튼을 누르면 끝입니다.
아까 대시보드로 다시 돌아가줍시다.
해당 DB를 클릭하고, 작업에서 “재부팅”을 누르면 됩니다.
약간 시간이 소요될 수 있습니다.
이제 DB 설정을 다시 마쳤습니다.
이제 다시 phpMyAdmin으로 돌아가 기존에는 열이 너무 많아 생성되지 않던 테이블을 다시 생성해보세요.
1000개 안쪽으로는 원활하게 생성되는 모습을 볼 수 있을 겁니다.