Mac OSX에서의 Mysql 5.6 문제
저와 제 동료 중 몇 명은 최근 Mac에서 홈브루를 사용하여 MySQL 5.5에서 MySQL 5.6으로 업그레이드하여 서버를 업그레이드하기 전에 로컬로 테스트했습니다.이 업그레이드 이후 레일 코드를 실행할 때 모두 간헐적으로 MySQL 오류가 발생하고 있습니다.
Lost connection to MySQL server at 'sending authentication information', system error: 32
데이터베이스에서 사용자 이름과 비밀번호를 다시 만들고 연결 타임아웃을 늘렸지만 둘 다 문제를 수정하지 못했습니다.을 사용하다문제가 발생했을 때의 유일한 회피책은 mysql을 종료하고 재시작하는 것입니다.에는 이 이 되었습니다.mysql -u root -p
커맨드 라인에 표시됩니다.이 에러가 발생하기 시작하면, 어떤 유저명을 사용해도 현재의 접속수를 넘을 수 없는 것 같습니다.연결을 닫으면 연결을 다시 열 수 있습니다.
다음과 같은 환경이 있습니다.
- 일부 사용자: Rails 3.2, Ruby 2, mysql2 0.3.13, MySQL 5.6.12, Mac OSX 10.8.4
- 기타 사용자: Rails 3.2, Ruby 1.9, mysql2 0.3.13, MySQL 5.6.10, Mac OSX 10.8.4
원인이 뭔지 짐작 가는 거 없어?
고마워! 줄리
여기 있는 답변 중 어느 것도 도움이 되지 않았지만, 마침내 MySQL 5.6을 사용할 수 있게 되었습니다.
MySQL 5.6을 수정하는 세 가지 옵션:
(확인) 편집
/etc/my.cnf
하지 않는 ) 및과 같이 추가합니다[mysqld] innodb_file_per_table = OFF
MySQL을 재시작합니다.이 작업을 수행하려면 데이터베이스를 SQL 파일(mysqldump)에 덤프한 후 데이터베이스를 삭제하고 다시 작성한 후 데이터를 로드해야 합니다.
OSX의 기본 ulimit 값을 변경합니다(Github 사용자 sodabrew에서 지정).https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6
.cnf [mysqld] 옵션을 추가합니다.
table_open_cache = 250
디폴트에서는, OSX 의 디폴트 ulimit 를 훨씬 웃도는 2000 으로 설정되어 있습니다.또한 이 솔루션은 MySQL의 성능을 저하시키므로 권장하지 않습니다. 250개 이상의 테이블이 있는 경우 MySQL이 자주 다시 열립니다.https://mariadb.com/kb/en/optimizing-table_open_cache/
이 에러가 발생하는 이유는 무엇입니까?
MySQL 5.6 innodb_file_per_table 옵션은 기본적으로 ON으로 되어 있기 때문에 각 테이블의 데이터는 자체 파일에 저장됩니다.열린 파일 수에 대한 OSX 기본 제한은 프로세스당 256입니다.보통 이것은 문제가 되지 않습니다만, 제 경우 유닛 테스트를 병행하고 있기 때문에 각각 405개의 테이블이 있는 8개의 데이터베이스가 생성됩니다.OSX에는 프로세스당 열려 있는 파일 핸들 수에 제한이 있습니다.이 StackOverflow 답변은 이 제한이 256이라는 것을 나타냅니다.MySQL 5.6 이전에는 이 8개 데이터베이스의 모든 데이터가 하나의 파일에 있었습니다.
MySQL 버그 보고서를 발견한 동료 Thomas L.에게 감사를 표합니다.
우리도 같은 문제가 있었어.이것으로 우리는 해결되었다.
project-root$ mysql.server stop
project-root$ gem uninstall mysql2
project-root$ bundle install
project-root$ mysql.server start
그것은 homebrew를 통해 설치된 최신 mysql 버전에서의 문제입니다.
5.6.x가 문제를 일으킵니다.5.5.x로 다운그레이드하면 문제가 해결되었습니다.
homebrew를 사용하면 오래된 포뮬러 버전을 쉽게 설치할 수 있습니다.
brew versions mysql
이전 버전을 설치하기 위해 /usr/local에서 체크 아웃해야 하는 sha가 제공됩니다.
cd /usr/local
git checkout 336c976
brew info mysql
mysql 버전으로서 5.5.29 가 표시됩니다.그런 다음 이러한 절차에 따라 mysql을 제거하고 를 실행하여 재설치할 수 있습니다.
brew install mysql
홈브루를 사용하여 일반 설치 프로세스를 수행합니다.
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
도움이 됐으면 좋겠다.
이전 버전의 mysql을 다시 설치한 후 /usr/local에서 마스터를 체크 아웃할 수 있습니다.brew versions 명령어는 mysql의 수식을 체크하는 명령어까지 제공하지만 sha의 전체 저장소를 체크하고 오래된 mysql 버전을 설치한 후 마스터로 돌아가는 것보다 이점이 없다고 생각합니다.
이 문제는 다음 방법으로 해결할 수 있습니다.
brew install mysql --use-llvm
이것은 OSX 10.8의 rbenv의 RE(1.8.7) 위에 있는 레일 2.3에 있습니다.YMMV
같은 구성(mysql 5.6.12)에서도 같은 문제가 발생하고 있습니다.방금 mysql with homebrew를 버전 5.6.13으로 업그레이드 했는데 문제가 사라졌어요.
Mavericks에 Homebrew를 통해 새로 설치한 mysql 5.6.16과 rbenv, 레일 등에서 이 문제를 일으켰습니다.
여기서의 다른 솔루션을 실행하기 전에 재기동하기로 했다.문제 해결!
따라서 mysql 설치 후 reboot을 하지 않으셨다면 여기서 답변하기 전에 재시작을 권장합니다.
내가 찾은 건 세팅이었어table_open_cache
1000 이하의 값까지
table_open_cache=1000
버그 페이지에서 찾았습니다.마지막 코멘트 https://bugs.mysql.com/bug.php?id=71960
Mavericks에서는 이게 통했어
mysql.server stop
brew install mysql
mysql.server start
gem remove mysql2
gem install mysql2
나는 매버릭스로 업그레이드한 후 홈브루를 재설치했다.Homebrew는 MySQL 5.6.13의 병형 버전을 설치했습니다.
언급URL : https://stackoverflow.com/questions/17813630/mysql-5-6-headaches-on-mac-osx
'IT' 카테고리의 다른 글
Python을 사용하여 직접 실행 가능한 크로스 플랫폼 GUI 앱을 만듭니다. (0) | 2022.12.27 |
---|---|
오늘 날짜를 파이썬에서 YYY-MM-DD로 가져오시겠습니까? (0) | 2022.12.27 |
JAVA_의 설정 방법Mac에서 영구적으로 홈? (0) | 2022.12.27 |
Java의 if 문의 긴 목록 (0) | 2022.12.27 |
SQL: 프리픽스가 있는 테이블 삭제 (0) | 2022.12.27 |