[MySQL] Master/Slave - Was muss man beachten beim Verbinden und bei den Abfragen?

WEBi

Mitglied
Hallo zusammen,

hab ich das richtig verstanden das ich einfach nur zu Master + Slave connecten muss und dann wie gewohnt die Abfragen (mittels PHP) tätigen kann? (zum Slave kommen nur die SELECT's ;-) )

zB:
PHP:
  $sqlMaster = mysql_connect ( "localhost", "DB_NAME", "Password" );
  $sqlSlave = mysql_connect ( "localhost", "DB_NAME", "Password" );
....
....  
  mysql_query(" SELECT * FROM `Table` WHERE `x` = 'y' ", $sqlSlave);
  mysql_query(" INSERT INTO `Table` ( `y` ) VALUES ( 'abc'); ", $sqlMaster);

Danke
lg
 
Was verstehst du in dem Fall als Master- und Slave-Datenbanken?

Ansonsten, ja du kannst so beide connecten. Du solltest aber jeweisl noch die DB mittels mysql_select_db() auslesen
 
ok mein Fehler! beim Connecten: (Es sind 2 verschiedene Server)
PHP:
  $sqlMaster = mysql_connect ( "Server_A", "DB_NAME", "Password" );
  $sqlSlave = mysql_connect ( "Server_B", "DB_NAME", "Password" );

also reicht es nicht wenn ich am Ende $sqlSlave oder $sqlMaster zu den Abfragen gebe?
Mir wurde aufgetragen, dass ich es so vorbereite das man Master/Slave Verbindungen hat, um später die Lasten besser bewähltigen zu können!
 
Die DBs musst du trotzdem mit mysql_select_db() auslasen. Du hast nur verbindungen zum Datenbankserver, nicht aber dui den Datenbanken darauf. Das hat nix mit Master und Slave zu tun.

Für die Lastverteilung.... das klingt eher nach etwas was DB-Seitig gemacht werden sollte, nicht Programmseitig
 
Doch, es ist genau richtig, der 2. Parameter von mysql_query muss eine Link-Resource sein, also das, was mysql_connect im Erfolgsfall zurückliefert. Nur hast du, wie yaslaw bereits gesagt hat, keine Verbindung zu einer Datenbank aufgebaut.
Lies dir folgendes einfach einmal durch: mysql-select-db

PHP:
$connect1 = mysql_connect("Server_A", "USER", "Password"); 
$connect2 = mysql_connect("Server_B", "USER", "Password"); 
  
mysql_select_db("test", $connect1); 
mysql_select_db("test", $connect2); 
  
$result_table1 = mysql_query("SELECT * FROM `test`", $connect1); 
$row_table1 = mysql_num_rows($result_table1); 
  
$result_table2 = mysql_query("SELECT * FROM `test`", $connect2); 
$row_table2 = mysql_num_rows($result_table2);
 
Zurück