MySQL 설정

유석현(SeokHyun Yu)·2023년 11월 29일
0

SQL

목록 보기
41/45
post-thumbnail

1. 서버 연결 테스트

MySQL 서버접속하는 기본적인 방법은 'mysql'이라는 클라이언트 프로그램을 사용하는 것이다. 이 프로그램은 서버 프로그램'mysqld'와 함께 설치되며, 다양한 명령행 인자를 통해 서버에 접속할 수 있다.

첫 번째 방법MySQL 소켓 파일을 사용하는 것이다. 이 방법을 사용할 때는 --host=localhost--socket=/tmp/mysql.sock 같은 옵션을 명시한다. 여기서 소켓 파일을 사용하는 접속은 TCP/IP 통신이 아닌, 유닉스 시스템에서의 프로세스 간 통신(IPC) 방식을 사용한다.

mysql -u root -p --host=localhost --socket=/tmp/mysql.sock

두 번째 방법--host=127.0.0.1--port=3306 같은 옵션을 통해 127.0.0.1 주소, 즉 로컬 호스트에 접속하는 것이다. 이 경우 TCP/IP 통신 방식을 사용하며, 로컬 머신이나 원격 호스트에 접속할 때 모두 사용될 수 있다. 특히 원격 호스트에 접속할 때는 이 방법이 필수적이다.

mysql -u root -p --host=127.0.0.1 --port=3306

세 번째 방법은 호스트 주소와 포트를 별도로 명시하지 않는 것이다. 이 경우, 기본값으로 localhost가 사용되며, MySQL 서버의 설정 파일에 지정된 소켓 파일 위치를 통해 접속하게 된다.

mysql -u root -p

MySQL 서버에 성공적으로 접속하면 show databases; 명령을 통해 서버에 존재하는 데이터베이스 목록을 확인할 수 있다.

show databases;


때로는 MySQL 서버에 직접 로그인하지 않고, 원격 서버에서 MySQL 서버의 접속 가능 여부만 확인해야 할 때가 있다. 이럴 때는 telnet 명령이나 nc(NetCat) 명령을 이용하여 원격지 MySQL 서버의 응답 상태를 확인할 수 있다.

telnet 127.0.0.1 3306
nc 127.0.0.1 3306

Telnet이나 Netcat을 사용하면 MySQL 서버로부터 받은 메시지를 화면에 출력하여 서버와의 네트워크 연결 상태를 확인할 수 있다. 이 방법은 네트워크 수준에서 서버가 정상적으로 응답하고 있는지를 판단하는 데 유용하다.


2. MySQL 서버 업그레이드

MySQL 서버를 업그레이드하는 데에는 크게 두 가지 방법이 있다. 첫 번째'인플레이스 업그레이드(In-Place Upgrade)'이고, 두 번째'논리적 업그레이드(Logical Upgrade)'이다.

'인플레이스 업그레이드' 는 기존의 데이터 파일을 그대로 유지하면서 MySQL 서버를 업그레이드하는 방식이다. 이 방법의 가장 큰 장점은 업그레이드 시간을 상당히 단축할 수 있다는 것이다. 하지만, 이 방법은 특정 버전 간의 업그레이드에서만 가능하며, 호환성과 같은 제약 사항들을 고려해야 한다.

반면에 '논리적 업그레이드''mysqldump' 같은 도구를 사용해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일 형태로 덤프한 후, 이를 새로운 버전의 MySQL 서버에 적재하는 방식이다. 이 방법의 장점은 버전 간의 제약 사항이 거의 없다는 것이며, 다양한 버전 간의 업그레이드를 수월하게 할 수 있다. 하지만, 데이터를 덤프하고 다시 적재하는 데 필요한 시간이 많이 소요되는 것이 단점이다.

따라서 어떤 방식을 선택할지는 업그레이드할 MySQL 서버의 버전, 데이터의 크기, 시간 제약, 그리고 호환성 등을 고려하여 결정해야 한다.


MySQL의 업그레이드 과정은 크게 '마이너(패치) 버전 간 업그레이드''메이저 버전 간 업그레이드'로 나눌 수 있다. 마이너 버전 간 업그레이드는 일반적으로 데이터 파일의 변경 없이 진행되며, 여러 버전을 건너뛰어 업그레이드하는 것도 가능하다. 예를 들어, MySQL 8.0.16에서 8.0.21로 업그레이드할 때는 서버 프로그램만 재설치하면 충분하다.

반면, 메이저 버전 간 업그레이드는 더 복잡하다. 이 경우에는 데이터 파일의 변경이 필요하며, 대부분 직전 버전에서만 업그레이드를 허용한다. 예를 들어, MySQL 5.5에서 5.6으로의 업그레이드는 가능하지만, 5.5에서 5.7이나 8.0으로 직접 업그레이드하는 것은 지원되지 않는다. 이는 MySQL 8.0이 MySQL 5.7의 데이터 파일로그 포맷만 인식하기 때문이다.

만약 MySQL 5.1에서 8.0으로 업그레이드해야 한다면, 우선 5.1에서 5.5로, 그 다음에 5.6으로, 이어서 5.7로 단계적으로 업그레이드해야 한다. 마지막으로 5.7에서 8.0으로 업그레이드를 진행할 수 있다. 이런 과정은 상당히 번거로울 수 있다.

따라서 만약에 두 단계 이상을 한 번에 업그레이드 해야 한다면 mysqldump 프로그램으로 MySQL 서버에서 데이터를 백업받은 후 새로 구축된 MySQL 8.0 서버에 데이터를 적재하는 '논리적 업그레이드'가 더 나은 방법일 수도 있다.


3. 서버 설정

MySQL 서버 설정은 주로 my.cnf 또는 my.ini 파일을 통해 관리된다. 서버가 시작될 때, 이 파일들은 특정 디렉토리에서 순차적*으로 검색되며, 발견되는 첫 번째 파일이 설정 파일로 사용된다. mysqld —verbose —help 명령을 사용하여 이 파일들의 위치를 찾을 수 있다.

my.cnf 또는 my.ini 파일은 여러 설정 그룹을 포함할 수 있는데, 이 그룹들은 주로 실행되는 프로그램의 이름을 따른다. 예를 들어, mysqld, mysql, mysqldump 등의 그룹이 존재할 수 있으며, mysqld 프로그램은 mysqld 그룹의 설정을 참조한다. 이러한 구성은 MySQL 서버, 클라이언트, 백업 등 다양한 용도로 사용되며, 각 프로그램은 설정 파일 내 해당하는 그룹의 설정을 참조한다.


MySQL은 다양한 시스템 변수를 통해 서버의 동작을 제어한다. 이 변수들은 서버의 성능, 안정성, 그리고 동작 방식에 중요한 영향을 미친다. 이 시스템 변수들은 크게 '글로벌 변수''세션 변수' 로 나뉜다. 글로벌 변수서버 전체에 영향을 미치는 설정으로, 서버가 시작될 때 설정되며 모든 세션공통적으로 적용된다. 반면 세션 변수개별 클라이언트 세션에 영향을 미치며, 사용자가 연결될 때마다 초기화되거나 조정될 수 있다.

또한, 변수들은 '정적 변수''동적 변수' 로 분류될 수 있다. 정적 변수서버가 시작될 때만 설정되고 이후에는 변경할 수 없으며, 변경사항을 적용하기 위해서는 서버를 재시작해야 한다. 반면 동적 변수서버 운영 중에도 변경이 가능하여, 서버의 성능을 동적으로 조절할 수 있다.

profile
Backend Engineer

0개의 댓글