Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подключиться ко 2-ой бд при отказе 1-ой
Форумы портала PHP.SU » » Работа с СУБД » Подключиться ко 2-ой бд при отказе 1-ой

Страниц (2): [1] 2 »
 

1. leshiy - 11 Октября, 2016 - 13:44:28 - перейти к сообщению
Как бы при отказе первой бд сайт подключался бы к резервной.
Пробовал так
bd.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $host="localhost";
  4. $user="user";
  5. $password="password";
  6. $baza="baza";
  7. mysql_connect($host, $user, $password) or die(include "db1.php");
  8.   mysql_query("SET NAMES 'utf8'");
  9. mysql_select_db($baza) or die();
  10. ?>
  11.  

db1.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $host="localhost";
  4. $user="user1";
  5. $password="password1";
  6. $baza="baza1";
  7. mysql_connect($host, $user, $password) or die(include "db1.php");
  8.   mysql_query("SET NAMES 'utf8'");
  9. mysql_select_db($baza1) or die();
  10. ?>

так не выходит.
2. 3d_killer - 11 Октября, 2016 - 13:58:19 - перейти к сообщению
ну так в первом коде or die(); означает не смог подключиться все прекратить работу прекратить вывод, вот надо не die() а как раз подключение ко второй БД
3. leshiy - 11 Октября, 2016 - 14:01:19 - перейти к сообщению
3d_killer пишет:
ну так в первом коде or die(); означает не смог подключиться все прекратить работу прекратить вывод, вот надо не die() а как раз подключение ко второй БД

PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_connect($host, $user, $password) or (include "db1.php");
  3.  

так тоже не выходит.
4. 3d_killer - 11 Октября, 2016 - 14:10:13 - перейти к сообщению
отдельно пробовал подключиться к 1 БД, 2 БД, одновременно, какую ошибку пишет
5. leshiy - 11 Октября, 2016 - 14:13:01 - перейти к сообщению
3d_killer пишет:
отдельно пробовал подключиться к 1 БД, 2 БД, одновременно, какую ошибку пишет

Если в бд нет ошибок то все работает, а если допустим в 1-ой неправильный пароль то выдает просто пустую страницу.
6. 3d_killer - 11 Октября, 2016 - 14:22:09 - перейти к сообщению
Во второй в конце mysql_select_db($baza1) or die("Ошибка"); и посмотри, и нужно включить вывод ошибок чтобы их видеть
7. OrmaJever - 11 Октября, 2016 - 14:25:04 - перейти к сообщению
leshiy пишет:
mysql_

сколько можно это терпеть. Господи, да перейдите вы уже на mysqli, а лучше pdo, там есть таймаут соединения, он выбрасывает исключения, там всё по людски, а не костылями в виде or die()
8. 3d_killer - 11 Октября, 2016 - 14:25:13 - перейти к сообщению
судя по тому куда подключаешься это один и тот же сервер денвер или опен сервер, не? если меняешь пароль на базу то и на вторую он тоже меняется?
(Добавление)
OrmaJever, почему-то все с этого начинают
9. leshiy - 11 Октября, 2016 - 14:41:03 - перейти к сообщению
OrmaJever пишет:
leshiy пишет:
mysql_

сколько можно это терпеть. Господи, да перейдите вы уже на mysqli, а лучше pdo, там есть таймаут соединения, он выбрасывает исключения, там всё по людски, а не костылями в виде or die()

Попробовал
PHP:
скопировать код в буфер обмена
  1.  
  2.   $mysqli = @new mysqli('localhost', 'user', 'password', 'baza');
  3.     echo "Подключение невозможно: ".mysqli_connect_error();
  4.   }
  5.   $mysqli->close();
  6.  

Подключение невозможно: Access denied for user 'user'@'localhost' (using password: YES)Access denied for user 'apache'@'localhost' (using password: NO)
10. 3d_killer - 11 Октября, 2016 - 14:44:02 - перейти к сообщению
ну так пароль не подходит
(Добавление)
скорее всего меняешь пароль и не может подключиться ни к первой базе ни ко второй и в результате пусто
11. leshiy - 11 Октября, 2016 - 14:45:55 - перейти к сообщению
3d_killer пишет:
ну так пароль не подходит

Как это?По старому значит подходит а по новому нет.
12. 3d_killer - 11 Октября, 2016 - 14:47:29 - перейти к сообщению
Access denied for user 'user'@'localhost' (using password: YES) доступ к базе запрещен пользователю user (пароль неверный)

Access denied for user 'apache'@'localhost' (using password: NO) apache доступ к базе запрещен пользователю (пароль пустой)

Что непонятного?
(Добавление)
скажи а во втором подключении
mysql_select_db($baza1) or die();
где переменную $baza1 объявлял?
13. armancho7777777 - 11 Октября, 2016 - 15:12:01 - перейти к сообщению
leshiy пишет:
Как бы при отказе первой бд сайт подключался бы к резервной.

Почитайте про репликации.

Книга: Обеспечение высокой доступности систем на основе MySQL
Глава 2 Основы репликации MySQL.

Книга: MySQL. Оптимизация производительности
Глава 8. Топологии репликации.
Глава 9. Масштабирование и высокая доступность.

Думаю, подойдёт Multi-Master репликация.
14. Мелкий - 11 Октября, 2016 - 15:29:40 - перейти к сообщению
armancho7777777 пишет:
Думаю, подойдёт Multi-Master репликация.

Для того, чтобы не спать ночами? Да, идеально подойдёт. Даст много интересных воспоминаний, пока не дойдёт простая CAP-теорема.

Учитывая, что непреодолимая сложность началась с подключения к базе - ой как сомневаюсь, что хватит знаний на мультимастер. К тому же мультимастер всё равно требует логику подключения. Хотя эту логику можно завернуть через haproxy тот же.
15. armancho7777777 - 11 Октября, 2016 - 16:09:42 - перейти к сообщению
Мелкий пишет:
Для того, чтобы не спать ночами?

Можно подробнее?
Мне интересно.
(Добавление)
И какой Вариант на Ваш взгляд лучше.
В плане распределения общей нагрузки.
(Добавление)
armancho7777777 пишет:
Мне интересно.

Именно с Ваших уст)
(Добавление)
armancho7777777 пишет:
И какой Вариант на Ваш взгляд лучше.

Один Master и множество подчинённых (slave) серверов?
(Добавление)
armancho7777777 пишет:
Можно подробнее?

Уже ознакомился.
Эрик Брюер пишет:
Невозможно создать распределенное (состоящие из нескольких равноценных экземпляров — звеньев) веб-приложение, которое будет одновременно обладать тремя свойствами: согласованность (consistency), доступность(availability) и устойчивость к разделению(partition tolerance), сокращенно CAP.

Благодарю.
(Добавление)
Хотя есть и такое мнение:
https://habrahabr[dot]ru/post/258145/

 

Powered by ExBB FM 1.0 RC1