Không thể sao lưu bảng mysql bằng mysqldump. Lệnh CHỌN, LOCK TABL bị từ chối vì 'cond_instances' [đã đóng]


15

Tôi gặp sự cố khi chạy mysqldumpnhư người dùng root mysql. Khi tôi cố gắng sao lưu mysqlbảng, tôi gặp lỗi này:

mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user
'root'@'localhost' for table 'cond_instances' when using LOCK TABLES

Có ai thấy điều đó trước đây không? Tôi đã thấy một số tài liệu tham khảo cho mysql của tôi và mysqldump của tôi là các phiên bản khác nhau nhưng khi tôi chạy chúng trong cùng một thư mục.

Tôi đang chạy MySQL 5.5.8.


1
Bạn vẫn nhận được lỗi nếu bạn chạy mysqldumpvới --skip-add-locks?
Martin

1
Aha, nó đã sửa nó. Tôi mới nhận ra rằng đó không phải là bảng mysql, đó là bảng Performance_schema, mà tôi thấy trong một số tài liệu yêu cầu --skip-add-lock.
bryan kennedy

Tôi gặp vấn đề tương tự ... Tôi đang sử dụng automysqlbackup Tôi chỉ cần thêm tham số --single-transactionvà mọi thứ hoạt động chính xác.
isccarrasco 3/2/2015

Có lẽ vấn đề có thể là một lỗi đánh máy? "LOCK TABL" có thể là "LOCK TABLE"
rubo77

Câu trả lời:


3

Thêm --skip-add-lock vào lệnh mysqldump của bạn


20

--skip-add-lock không hoạt động:

# mysqldump -u root -p`cat mysqlRoot.txt` --databases performance_schema --routines --quote-names --skip-add-locks > mysql_performance_schema

mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'cond_instances' when using LOCK TABLES

thay vào đó bạn muốn --skip-lock-bàn


1
CÁi này đã sửa nó giúp tôi. Tôi đã chỉnh sửa tệp thực thi automysqlbackup (trên bản cài đặt của tôi, trong / usr / local / bin) để sửa đổi khai báo opt và opt_fullschema để thêm vào --skip-lock-bảng. Cấu hình mới là opt = ('--quote-name' '--opt' '--skip-lock-bảng') và opt_fullschema = ('--all-cơ sở dữ liệu' '--routines' '--no- dữ liệu '' --skip-lock-bàn ')
Ted Pennings

12

(Tôi nhận ra điều này đến muộn 8 tháng)

Đây không phải là vấn đề về khóa và các giải pháp được cung cấp chỉ đơn thuần bỏ qua vấn đề thực sự:

Một 5,5 mysqldump ứng dụng không nên xuất performance_schemacơ sở dữ liệu ở nơi đầu tiên.

Dựa trên kinh nghiệm trước đây của tôi, tôi đề nghị rằng mysqldumpchương trình bạn đã sử dụng là phiên bản 5.1 . Nói thế nào? Vấn đề:

mysqldump --version

Một khách hàng 5.1 không biết đến sự tồn tại của "tương lai" performance_schemavà do đó cố gắng từ bỏ nó. Nó không biết rằng nó không nên.

Hãy thử và tìm phiên bản 5.5 và sử dụng nó để bán phá giá mà không cần thêm các khóa được đề xuất và điều này sẽ hoạt động tốt.


2
Sử dụng phiên bản 5.5 và vấn đề vẫn tồn tại
artfulrobot

1
mysqldump Ver 10.13 Phân phối 5.5.32, cho debian-linux-gnu (x86_64) có cùng một vấn đề ...
Piku

2
nếu bạn đang sử dụng automysqlbackup như một số người dùng ở trên, bạn cần thêm 'Performance_schema' vào tham số CONFIG_db_exclude trong automysqlbackup.conf
Matija Nalis

Tôi đồng ý với Shlomi ở trên rằng bỏ qua các ổ khóa chỉ bỏ qua vấn đề thực sự. Điều này đã giúp tôi: Askubfox.com/questions/134670/ Khăn
quy trình làm việc

0

Như Shlomi Noach đã đề cập, Performance_schema không cần phải sao lưu.

Cách dễ dàng để khắc phục điều này là đặt các mục sau trong tệp cấu hình của bạn:

CONFIG_db_exclude=( 'performance_schema' 'information_schema' )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.