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은 다양한 시스템 변수
를 통해 서버의 동작을 제어한다. 이 변수들은 서버의 성능
, 안정성
, 그리고 동작 방식
에 중요한 영향을 미친다. 이 시스템 변수들은 크게 '글로벌 변수' 와 '세션 변수' 로 나뉜다. 글로벌 변수는 서버 전체
에 영향을 미치는 설정으로, 서버가 시작될 때 설정되며 모든 세션
에 공통적
으로 적용된다. 반면 세션 변수는 개별 클라이언트 세션
에 영향을 미치며, 사용자가 연결될 때마다 초기화
되거나 조정
될 수 있다.
또한, 변수들은 '정적 변수' 와 '동적 변수' 로 분류될 수 있다. 정적 변수는 서버가 시작될 때
만 설정되고 이후에는 변경할 수 없으며, 변경사항을 적용하기 위해서는 서버를 재시작해야 한다. 반면 동적 변수는 서버 운영 중
에도 변경이 가능하여, 서버의 성능을 동적으로 조절할 수 있다.