Vấn đề sao chép đơn giản của MySQL: 'hiển thị trạng thái chính' tạo ra 'Tập rỗng'?


10

Tôi đã thiết lập bản sao chính của MySQL (trên Debian 6.0.1) theo các hướng dẫn sau: http://www.neocodesoftware.com/replication/

Tôi đã đi xa như:

mysql > show master status;

nhưng điều này không may tạo ra những điều sau đây, hơn là bất kỳ đầu ra hữu ích nào:

Empty set (0.00 sec)

Nhật ký lỗi tại /var/log/mysql.errchỉ là một tệp trống, vì vậy đó không cung cấp cho tôi bất kỳ manh mối nào.

Có ý kiến ​​gì không?

Đây là những gì tôi đã đưa /etc/mysql/my.cnfvào một máy chủ (được sửa đổi phù hợp cho máy chủ khác):

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 10.0.0.3
master-user = <myusername>
master-password = <mypass>
master-connect-retry = 60
replicate-do-db = fruit
log-bin = /var/log/mysql-replication.log
binlog-do-db = fruit

Và tôi đã thiết lập người dùng và có thể kết nối từ MySQL trên Máy chủ A đến cơ sở dữ liệu trên Máy chủ B bằng tên người dùng / mật khẩu / ipaddress ở trên.


Tôi cũng đã thử làm theo các hướng dẫn đơn giản hơn tại: howtoforge.com/mysql_database_Vplication (trên một máy chủ) và một lần nữa, khi show master statustôi thấy tôi thấy Empty set. Vách ngăn!

Khởi động lại dịch vụ và kiểm tra. Nếu bất kỳ bản ghi lỗi được tạo sau khi khởi động lại, dán cũng.

Câu trả lời:


7

Thật thú vị, tôi có mysql chạy trên PC với nhật ký nhị phân không được bật. Tôi đã làm như sau:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
Empty set (0.00 sec)

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging

mysql>

Như được hiển thị, vì MySQL hiển thị "Tập hợp trống" cho SHOW MASTER STATUS; bởi vì đăng nhập nhị phân không được kích hoạt. Đó là hiển nhiên cho cấu hình tôi có.

Điều đầu tiên bạn nên làm là đảm bảo nhật ký lỗi có một thư mục cụ thể

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

Sau đó chạy như sau:

service mysql stop
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
service mysql start

Sau đó, trong máy khách mysql chạy các lệnh SQL này

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Nếu bạn nhận được cùng một đầu ra tôi đã có trước đó, thì MySQL không thể ghi nhật ký nhị phân vào thư mục được chỉ định. Vấn đề nan giải của bạn trở thành lý do tại sao MySQL không thể ghi vào / var / log.

Đây không phải là một câu trả lời đầy đủ nhưng tôi hy vọng điều này sẽ giúp.


Thiết lập / var / log được sở hữu đệ quy và với một nhóm mysql sẽ phá vỡ một hệ thống linux khá tệ. Tôi khuyên mọi người không nên làm điều này. Thay vào đó, hãy chạy cụ thể trên tệp nhật ký mà mysql đang cố ghi vào và nếu nó không chạm vào nó trước.
John Hunt

Bạn biết gì không, @JohnHunt? Bạn đúng rồi. Tôi sẽ thay đổi thư mục.
RolandoMySQLDBA


0

Cài đặt của bạn log-binkhông chính xác, vì vậy MySQL không thể viết nhật ký nhị phân. Nó không phải là một tên tệp, nó là một mẫu tên tệp một phần , mà MySQL sẽ thêm vào một thư mục và nối thêm một số thứ tự và phần mở rộng. Các thiết lập thông thường là một cái gì đó như

log-bin=log-bin

Kiểm tra hướng dẫn.


--log-bin=file_name( dev.mysql.com/doc/refman/5.7/vi/ Google ). Hướng dẫn nào nói rằng nó không phải là tên tệp?
Stephan Vierkant
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.