MySQL 현재 구성을 파일로 내보내기


11

우리는 my.cnf 파일을 잃어 현재 실행중인 mysql 인스턴스에서 사본을 내보낼 수 있는지 궁금합니다.

감사!

답변:


16

세 가지 옵션

옵션 1 : MySQL 클라이언트 내에서

mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt

텍스트 파일의 모든 옵션이 캡처됩니다.

옵션 2 : Linux 명령 행에서

ps -ef | grep mysqld | grep -v grep

mysqld_safe에서 설정 한대로 mysqld로 시작한 옵션이 표시됩니다

옵션 3 : 서버에 직접 문의

mysqld --help --verbose

'mysqld --help --verbose'디스플레이 하단에 mysqld가 my.cnf에서로드되거나 기본값으로 설정된 현재 설정이 표시됩니다.


-1 죄송합니다. 이치에 맞지 않습니다. SHOW VARIABLES를 텍스트 파일로 덤프 한 다음 프로세스 목록을 greping하고 결과에 아무런 영향을 미치지 않고 mysqld에 대한 도움말 플래그를 읽은 이유는 무엇입니까?
쿠프

@Coops-그들은 세 가지 별개의 것입니다. 첫 번째는 SHOW VARIABLES를 텍스트 파일로 캡처합니다. 두 번째는 mysql 시작시 /etc/init.d/mysql에 의해 지정된 옵션을 보여줍니다. 세 번째는 mysqld가 현재 작동하고있는 것을 화면 하단에 표시합니다. 이 디스플레이에서 /etc/my.cnf의 해당 옵션을 설정하는 레거시 작업을 수행하는 것은 samspot의 책임입니다. /etc/my.cnf를 자동화하고 재생성 할 내용을 작성 했어야합니까?
RolandoMySQLDBA

시작 줄은 "다음을 모두 수행하여"질문에 대한 답변을 얻을 수있는 단계별 지침을 제공함을 나타냅니다. 또한 각 단계가 무엇을하는지, 또는 질문에 어떻게 대답하여 혼란을 가중시키는 지 설명하지 않습니다! :-)
Coops

내가 원래 답변을 쓴 방식으로 인해 혼란을 드려 죄송합니다.
RolandoMySQLDBA

my.cnf를 재생성하는 것이 가장 좋은 경우이지만 (mysql 이이 작업을 수행 할 수 있기를 바랍니다) 복구 할 수있는 훌륭한 정보입니다. 이 정보에 대해 인터넷 검색을 시도했지만 데이터베이스 백업에 대한 기사 만 찾을 수있었습니다. 감사!
samspot

3

이 지침은 centos 7.1의 주식 mariadb에 대한 것입니다.

다음은 머신의 현재 설정을 현재 또는 미래의 새 설치로 백업하거나 복제하는 방법입니다.

설정을 복사하려는 머신에서 다음을 실행할 수 있습니다.

/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt

다른 머신에서 mariadb-server를 설치하고 다음을 실행할 수 있습니다.

/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt

그런 다음 두 파일을 하나의 디렉토리에 넣습니다.이 예에서는 "/ a /"입니다.

그런 다음 실행합니다.

comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)

출력이 없으면 두 파일이 동일합니다. 이는 두 시스템의 모든 설정이 기본 설정임을 의미합니다.

출력이있는 경우 일부 줄은 들여 쓰기되지 않고 일부 줄은 들여 쓰기됩니다.

들여 쓰기되지 않은 행은 첫 번째 파일 (여기서는 /a/mysql_current_settings.txt)에만 있습니다.

들여 쓰기 행은 두 번째 파일 (여기서는 /a/mysql_default_settings.txt)에만 있습니다.

이제 mysqld를 시작한 명령 행에서 설정 한 일부 설정을 제외하고 모든 설정을 알고 있습니다. 이러한 설정은 /etc/my.cnf 또는 /etc/my.cnf.d/* 파일, 사용자 정의 스크립트 또는 별명 등에서 제공 될 수 있습니다. 어쨌든 다음 명령을 사용하여 볼 수 있습니다.

ps -ef | grep mysqld

이제 이전 설치로 구성하기 위해 새 설치에서 변경해야 할 설정이 거의 없습니다.


다른 세부 사항을 따르십시오.

centos 7.1에서 다음 명령은 mysqld를 시작한 명령 행에서 설정 한 일부 설정을 제외하고 모든 현재 설정을 보여줍니다.

/usr/libexec/mysqld --help --verbose

전체적으로 다음을 보여줍니다.

첫 번째 부분에서는 시작할 때 "mysqld"다음에 첫 번째 매개 변수로 사용할 수있는 설정입니다.

두 번째 부분에서 설정은 컴파일 타임에 설정됩니다.

세 번째 부분에서는 현재 설정입니다.

출력의 마지막 줄에 다음과 같이 표시 되어도 실행중인 MySQL 서버가 사용하는 값을 보려면 다음을 입력하십시오.

    mysqladmin variables -uroot -p

/etc/my.cnf에서 명령을 변경하고 mysql을 다시 시작하더라도 해당 명령은 fe, bind-address를 표시하지 않습니다.

또한 다음 명령은 많은 설정을 보여 주지만 "바인드 주소"는 표시하지 않습니다.

mysql -uroot -p -e"SHOW VARIABLES;"

centos 7.1에서 mysqld는 $ PATH에 없습니다.


2

현재 my.cnf를 생성하는 가장 좋아하는 방법은 다음과 같습니다.

{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log

그러나 Mac OS X에서는 안정적으로 작동하지 않습니다.

그러면 깨끗한 변수 로그가 출력되고 주석 처리되어 my.cnf로 가져올 준비가됩니다.

원본 출처 : http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html


일부 주 : 1. bsdmainutils 필요 2. 경고를 설치해야합니다 : 그것은 mysql 클라이언트의가 아닌 서버 버전을 기록
gadelat

서버 버전의 경우 명령은 mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'입니다. 클라이언트와 서버가 함께 설치되어 있다고 생각하기 때문에 중요하지 않습니다. 의 목적은 무엇인가 {{{1와는 1}}}?
beppe9000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.