*해당 테스트는 Windows의 Mysql 8.0.34로 수행하였습니다.*
변수를 적용할때 CMD창에서 명령어로만 적용을하면 my.cnf 파일에 적용되지 않았습니다. 그래서 재기동시 my.cnf의 변수들이 적용되어 적용한 변수들이 reset 되었었습니다. 이걸 해결하기 위해서 mysql 8.0버전부터 set persist기능이 추가되었습니다.
해당 명령어를 사용해서 CMD에서 변수 적용시 자동으로 파일에 적용까지 시켜주는 명령어입니다.
persist_only는 현재 기동중인 시스템에서는 적용하지 않고, 파일에만 적용시켜 재기동 후에 적용되게 할때 쓰는 명령어입니다.
show global variables like '%max_connections%';
#max_connections 151
set persist max_connections=1000;
show global variables like '%max_connections%';
#max_connections 1000
set persist_only max_connections=2000;
show global variables like '%max_connections%';
#max_connections 1000
##재기동 후
show global variables like '%max_connections%';
#max_connections 2000
보면 재기동하고나서는 원래의 개수인 151개로 돌아와야 하지만 persist only로 2000을 설정하였고, 재기동 후에 2000으로 설정된 것을 확인할 수 있습니다.
실제로 파일에 쓰여졌는지 확인해보겠습니다.
윈도우의 경우에는 my.ini 파일을 찾는게 다른 곳에 저장이 되어있네요.
저의 경우에는 경로가 다음과 같습니다.
C:\ProgramData\MySQL\MySQL Server 8.0
출처 :
파일 확인결과, 151로 변경전으로 되어있습니다. 어떻게 된것일까요.
파일도 오늘날짜가 아니라 9월26일이 마지막수정시간으로 되어 있습니다.
답은,
set persist로 수정된 변수들은 새로운 파일들로 관리된다는 것입니다. mysqld-auto.cnf 의 이름으로 생성되어 관리됩니다.
json형식이고 열어보면 아래와같은 내용이 있습니다.
{"Version": 2, "mysql_dynamic_parse_early_variables":
{"max_connections":
{"Value": "2000", "Metadata":
{"Host": "localhost", "User": "root", "Timestamp": 1697616729206655}}}}
mysql 서버가 다시 시작될 때 기본설정파일(my.ini)뿐 아니라 myslqd-auto.cnf파일을 같이 참조합니다.
Windows의 파일 위치에 대해서 나와있는 표. 마지막에 보면 mysqld-auto.cnf의 위치가 나와있습니다.
출처 : https://dev.mysql.com/doc/refman/8.0/en/option-files.html
해당 설정을 돌려놓는 명령어는 reset persist입니다.
특정 변수만 넣어서 특정변수만 reset할수도 있고, persist 된 모든 변수를 reset 할수도 있습니다.
reset 했지만 여전히 2000입니다. 재기동을 해서 확인해보겠습니다. 재기동하면 my.ini에 설정된 151로 원복되었습니다.
reset persist max_connections;
show global variables like '%max_connections%';
#max_connections 2000
##재기동 후
show global variables like '%max_connections%';
#max_connections 151
mysqld-auto.cnf내용입니다. 내용이 사라졌습니다.
{"Version": 2}
출처 : real Mysql 8.0
'다른 DBMS > MySQL&MariaDB' 카테고리의 다른 글
MySQL 업그레이드 (2) - 마이너 업그레이드 (2) | 2023.10.24 |
---|---|
[Mysql Workbench]접속 에러 해결 : unsupported protocol (2) | 2023.10.23 |
MySQL의 업그레이드 (1) (0) | 2023.08.24 |
Recursive 구문을 활용한 연,월 dummy 데이터 생성 (0) | 2023.08.14 |
Full Backup본으로 테이블 복구 스크립트 만들어서 복구 (0) | 2023.06.21 |
댓글