MySQL basit çoğaltma sorunu: 'ana durumu göster', 'Boş küme' üretir mi?


10

Bu talimatları aslına uygun olarak MySQL ana çoğaltmasını (Debian 6.0.1'de) ayarlıyorum: http://www.neocodesoftware.com/replication/

Ben kadarıyla var:

mysql > show master status;

ancak bu maalesef faydalı çıktılardan ziyade aşağıdakileri üretiyor:

Empty set (0.00 sec)

Adresindeki hata günlüğü /var/log/mysql.errboş bir dosya, bu yüzden bana ipucu vermiyor.

Herhangi bir fikir?

Ben /etc/mysql/my.cnf(diğer sunucu için uygun şekilde değiştirilmiş) bir sunucuda koymak ne budur :

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

Kullanıcıları ayarladım ve yukarıdaki A kullanıcı adı / şifre / ipadresi kullanarak Sunucu A'daki MySQL'den Sunucu B'deki veritabanına bağlanabiliyorum.


Ben de daha basit talimatları izlemeyi denedim: howtoforge.com/mysql_database_replication (tek bir sunucuda) ve tekrar, ne zaman show master statusben görmek için olsun Empty set. Şaşkın!

Hizmeti yeniden başlatın ve kontrol edin. Yeniden başlatmadan sonra oluşturulan hata günlükleri varsa, bunu da yapıştırın.

Yanıtlar:


7

İlginçtir, mysql, ikili günlükleri etkin olmayan bilgisayarımda çalışıyor. Aşağıdakileri yaptım:

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>

Gösterildiği gibi, MySQL SHOW MASTER STATUS için "Boş Set" gösterdiğinden; çünkü ikili günlük kaydı etkinleştirilmedi. Sahip olduğum konfigürasyon göz önüne alındığında bu çok açık.

Yapmanız gereken ilk şey, hata günlüğünün belirli bir klasörü olduğundan emin olmaktır

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

Ardından aşağıdakileri çalıştırın:

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

Sonra mysql istemcisinde bu SQL komutlarını çalıştırın

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Daha önce sahip olduğum çıktıyı alırsanız, MySQL belirlenen klasöre ikili günlükler yazamaz. İkileminiz MySQL'in / var / log'a yazamaması olur.

Bu tam bir cevap değil ama umarım bu yardımcı olur.


/ Var / log özyinelemeli ve bir grup mysql ile ayarlanması bir linux sistemini oldukça kötü kılacaktır. İnsanlara bunu yapmamalarını şiddetle tavsiye ediyorum. Bunun yerine, özellikle mysql'in yazmaya çalıştığı günlük dosyasında çalıştırın ve yoksa önce dokunun.
John Hunt

Bir şey biliyor musun, @ JohnHunt? Haklısın. Klasörü değiştireceğim.
RolandoMySQLDBA


0

Ayarınız log-binyanlış olduğundan MySQL ikili günlük yazamıyor. Bu bir dosya adı değil, MySQL'in bir dizinin başına eklenip sıra numarası ve uzantı ekleyeceği kısmi bir dosya adı kalıbıdır . Her zamanki gibi bir ayar

log-bin=log-bin

Kılavuzu kontrol edin.


--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). Hangi el kitabı dosya adı olmadığını söylüyor?
Stephan Vierkant
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.