automysqlbackup의 cron.daily 스크립트를 중지하는 방법 - 설치 및 구성 후 apt-get install automysqlbackup
- 다음 오류 발생:
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user
'debian-sys-maint'@'localhost' for table 'cond_instances' when using LOCK TABLES
이는 MySQL 5.5로 업그레이드한 후에 발생하며 Ubuntu 12.04 LTS로 업그레이드하면 발생하는 부작용입니다.
올바른 해결책(해당 버그 보고서에 대한 포인터를 제공한 @sr_ 덕분에)은 mysqldump에서 "performance_schema" 데이터베이스를 제외하는 것입니다.
그래서 질문은: 데비안 패키지와 구성을 존중하면서 이를 수행하는 방법은 무엇입니까?
MySQL 5.5로 업그레이드한 후 이 문제가 매일 발생합니다.
배경: 내 목표는 Ubuntu Debian 설치의 패키지와 구성을 가능한 표준 방식으로 보존하는 것입니다. 하지만 실제로 이는 패키지 설치/업그레이드 방식의 버그이므로 제공된 구성 파일 중 하나를 업데이트해야 합니다.
debian-sys-maint
어쨌든, 가장 높은 권한을 가지므로 이미 각 테이블을 덤프하기 전에 잠글 수 있는 충분한 권한이 있습니다.
헷갈리게도 이렇게 /usr/share/doc/automysqlbackup/README.Debian
적혀있어요
모든 매개변수는 /etc/default/automysqlbackup 파일을 편집하여 설정할 수 있습니다.
/etc/default/automysqlbackup
/etc/mysql/debian.cnf
다음 설정 으로 mysqlbackup을 호출합니다.
Debian 스크립트를 자동으로 생성합니다. 만지지 마세요! .
답변1
이 솔루션으로 이 문제가 해결되었습니다.
~에 따르면이 버그 보고서automysqlbackup이 "performance_schema" 데이터베이스를 덤프하는 것을 중지해야 합니다. 이는 /etc/default/automysqlbackup
다음과 같이 편집하여 수행할 수 있습니다.
DBNAMES 목록에서 "performance_schema"를 제거하려면 grep 단계에 파이프를 추가하세요.
따라서 시작 행 DBNAMES=
과 | grep -v ^mysql$
삽입 후
| grep -v ^performance_schema$
앞으로| tr \\\r\\\n ,\
Jerome Drouet에게 감사드립니다.
이 솔루션은 Ubuntu 12.04의 automysqlbackup Debian 버전용입니다. "performance_schema" 데이터베이스를 제외하는 구문은 Linux 배포판마다 다릅니다. 아래 @stat를 참조하세요.
답변2
편집: 내가 말한 것을 모두 잊어버렸습니다.
바라보다이 버그 보고서. 어쩌면 주석 #2에 언급된 대로 "mysqldump에서 'performance_schema' 데이터베이스를 제외"하는 방법을 찾았을 수도 있습니다. 그렇지 않으면 버그 보고서의 포스터가 매개변수를 automysqlbackup
추가하기 위해 스크립트를 편집했지만 --skip-lock-tables
제 생각에는 이것이 여러분에게 해를 끼칠 수 있다고 생각합니다(아래 참조). 보여주다).
짧은 대답: 그럴 수도 있습니다생각하다잠그십시오.
내 생각엔잠기지 않음쓸모없는 백업을 제공할 수 있으므로(예: 테이블이 변경될 때) 원하는 것이 아닙니다.백업하는 동안---이게 뭐야?잠그다예방할 수 있는 것이 있나요?
이 지점에 대한 읽어보기또한블록 항목사용자에게 부여된 콘텐츠 'autobackup'@'localhost'
액세스 에 대한 언급잠금 테이블.
즉, 오류 메시지는 문제의 "사용자"가 실제로 임을 나타냅니다 'debian-sys-maint'@'localhost'
. 그래서 내 생각엔필수 권한을 부여하면이것사용자또는백업 스크립트의 자격 증명 변경automysqlbackup.conf
(이것은 데비안에서 가능합니다 . 및 에 /etc/default/automysqlbackup
문의하세요 .) 그러면 괜찮을 것입니다.man automysqlbackup
/usr/share/doc/automysqlbackup/README.Debian
편집하다
~에서이 설명서인용하면 --lock-tables
어떻게 해야 하나요?
--lock-tables, -l
덤프된 각 데이터베이스에 대해 덤프하기 전에 덤프할 모든 테이블을 잠급니다.
--skip-lock-tables
이는 매뉴얼에서 유일하게 발생하는 것과 연관되어 --skip-lock-tables
있으므로mysqldump
테이블을 덤프할 때 테이블이 잠겨 있지 않습니다.. 위에서 말했듯이 이것은 바람직하지 않습니다. 내 생각엔 이것이랑 관련이 있는 것 같아덤프 잠금 테이블하지만 함께잠금 테이블.
그런데 말씀하신 대로 문제의 사용자가 이 작업을 수행할 수 있어야 한다면 왜 작동하지 않는지 이해가 되지 않습니다...
답변3
실수로 솔루션 1을 보았는데 데비안에서는 작동합니다.
이 줄을 다음과 같이 변경하여
/etc/default/automysqlbackup
이 문제를 "일시적으로" 해결할 수 있었습니다.
CONFIG_db_exclude=( 'information_schema' 'performance_schema' )
이것이 어떤 영향을 미칠지는 잘 모르겠지만 테스트 복원이 효과가 있었고 백업이 오류 없이 완료되었습니다.
Debian sid에 대한 내 솔루션은 마지막 업데이트 이후 실패했지만 솔루션 1(이전에는 작동하지 않았음)이 작동했습니다. 이것은 grep /etc/default/automysqlbackup이고 | grep -v ^Performance Mode$ 줄을 추가합니다. 위의 내용은 이전에 덤프에서 무시된 것으로 보이는 것을 제외했습니다.