Masalah replikasi sederhana MySQL: 'show master status' menghasilkan 'Empty set'?


10

Saya telah menyiapkan replikasi master MySQL (pada Debian 6.0.1) dengan mengikuti petunjuk ini dengan setia: http://www.neocodesoftware.com/replication/

Saya punya sejauh:

mysql > show master status;

tapi sayangnya ini menghasilkan yang berikut, daripada output yang berguna:

Empty set (0.00 sec)

Log kesalahan di /var/log/mysql.errhanyalah file kosong, jadi itu tidak memberi saya petunjuk.

Ada ide?

Inilah yang saya masukkan ke dalam /etc/mysql/my.cnfsatu server (diubah dengan tepat untuk server lain):

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

Dan saya telah mengatur pengguna dan dapat terhubung dari MySQL di Server A ke database di Server B menggunakan nama pengguna / kata sandi / ipaddress di atas.


Saya juga telah mencoba mengikuti instruksi yang lebih sederhana di: howtoforge.com/mysql_database_replication (pada satu server saja) dan lagi, ketika saya bisa show master statusmelihat Empty set. Bingung!

Mulai ulang layanan & periksa. Jika ada kesalahan log yang dihasilkan setelah restart, rekatkan juga.

Jawaban:


7

Menariknya, saya menjalankan mysql di PC saya dengan log biner tidak diaktifkan. Saya melakukan yang berikut:

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>

Seperti yang ditunjukkan, karena MySQL menampilkan "Set Kosong" untuk SHOW MASTER STATUS; karena pencatatan biner tidak diaktifkan. Itu jelas mengingat konfigurasi yang saya miliki.

Hal pertama yang harus Anda lakukan adalah memastikan log kesalahan memiliki folder tertentu

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

Kemudian jalankan yang berikut ini:

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

Kemudian di klien mysql jalankan Perintah SQL ini

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Jika Anda mendapatkan output yang sama dengan yang saya miliki sebelumnya, maka MySQL tidak dapat menulis log biner ke folder yang ditunjuk. Dilema Anda menjadi alasan mengapa MySQL tidak dapat menulis ke / var / log.

Ini bukan jawaban yang lengkap tetapi saya harap ini membantu.


Pengaturan / var / log untuk dimiliki secara rekursif dan dengan sekelompok mysql akan merusak sistem linux dengan cukup buruk. Saya sangat menyarankan orang untuk tidak melakukan ini. Alih-alih, jalankan secara khusus pada file log yang mencoba ditulis oleh mysql, dan jika tidak ada, sentuh dulu.
John Hunt

Anda tahu sesuatu, @JohnHunt? Kamu benar. Saya akan mengganti foldernya.
RolandoMySQLDBA


0

Pengaturan Anda log-binsalah, jadi MySQL tidak bisa menulis log biner. Ini bukan nama file, itu adalah pola nama file parsial , yang mana MySQL akan menambahkan sebuah direktori dan menambahkan nomor urut dan ekstensi. Pengaturan yang biasa adalah sesuatu seperti

log-bin=log-bin

Periksa manualnya.


--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). Manual apa yang menyatakan bahwa itu bukan nama file?
Stephan Vierkant
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.