DB 두개 사용하기

DB 두개 사용하기

QA

DB 두개 사용하기

본문

이전에도 관련하여 질문 올린 적이 있습니다.

 

그누 복제 사이트 3개 운영 중인데, 그 중 하나의 DB 테이블을 3개에서 공용으로 사용하려 합니다.

 

현재 목록 보기 가능하게 되어 있으나, 회원 DB가 다른 관계로 상세보기나 쓰기기능을 지원 못하고 있습니다.

회원 정보 DB를 불러오려면 어떻게 해야 할지 궁금합니다. 

이 질문에 댓글 쓰기 :

답변 3

일단 세개의 db를 편하게 사용하시려면 세개의 db를 각각 /data/dbconfig.php에 저장을 해두고 사용하면 편하긴 합니다

 

define('G5_MYSQL_HOST', 'localhost');
define('G5_MYSQL_USER', 'db_user');
define('G5_MYSQL_PASSWORD', 'db_pass');
define('G5_MYSQL_DB', 'db');

 

define('G5_MYSQL_USER2', 'db_user2');
define('G5_MYSQL_PASSWORD2', 'db_pass2');
define('G5_MYSQL_DB2', 'db_2');

 

define('G5_MYSQL_USER3', 'db_user3');
define('G5_MYSQL_PASSWORD3', 'db_pass3');
define('G5_MYSQL_DB3', 'db_3');

 

머 대충 이런식으로 저장을 해두시고

mysqli_close($connect_db);

$connect_db = sql_connect(G5_MYSQL_HOST2, G5_MYSQL_USER2, G5_MYSQL_PASSWORD2) or die('MySQL Connect Error!!!');
$select_db  = sql_select_db(G5_MYSQL_DB2, $connect_db) or die('MySQL DB Error!!!');

 

접속하고 싶은 이름을 적으시면 되겠지요 

 

아~ 댓글로 추가하려다 키보드 잘못 눌러서 쓴거 다 날라갔네요 ㅠㅠ

작업이 끝난 시점에서 내용 보충 합니다.

wonilone님께서 제시하신 방법은 사이트 제작하기 전이면 가능합니다.
현재는 모두 각각 db를 사용하고 있어서... 불량학생님이 제시하신 방법밖에는 없더군요..

제가 작업한 내용은 dbconfig.php에 하기 보다는 /extend 폴더 하위에 파일을 생성하고 연결할 db(이하 외부db) 커넥션을 만들어 놓고, common.lib.php에서 db 관련 함수를 복제하여 외부 db를 지정할 수 있게 수정합니다.

// 지정한 db로 쿼리(외부 db 사용 가능)
function sql_query_db($sql, $db_conn,  $error=G5_DISPLAY_SQL_ERROR)
// 쿼리를 실행한 후 결과값에서 한행을 얻는다.(외부 db 사용 가능)
function sql_fetch_db($sql, $db_conn, $error=G5_DISPLAY_SQL_ERROR)
// 게시판의 다음글 번호를 얻는다.
function get_next_num_db($table, $db_conn)

위 처럼 복제하고 db를 지정하도록 하여 사용하였습니다.

기존 sql_query 등은 원래 사용하던 db 그대로 사용이 가능하며, 필요한 경우 위에 새로 만든 함수를
호출하여 주었습니다.

board.php에서는 최소한으로 외부 db가 필요한 게시판과 관련한 분기코드만 넣었고, list.php, write.php, write_updatd.php, view.php를 위 생성한 함수를 적용할 수 있도록 새로운 파일로 복제(파일 접미어로 _ex.php)하고, 외부 db로 연동할 수 있는 함수로 변경하여 주었습니다.

마지막으로,, 게시판 글 상세 보기는 새로 만든 view_ex.php로는 글을 볼 수가 없어서 $write 배열을 할당하는 코드도 복제하여 $write_ex로 만들어 적용하였습니다.

글로는 설명하기가 애매하지만,, 위 방법으로 특정한 게시판을 여러 사이트에서 공통으로 사용하면서 다른 게시판이나 회원은 그대로 사용할 수 있도록 유지하였습니다. 공통 사용하는 게시판의 쓰기도 각 사이트 회원이 로그인 한 상태에도 쓸 수 있었다는게 장점이네요...

일반적으로 DB커넥터를 2개만들어 운용하는게 가장 좋은 방법이며..

2개 동시에 다른이름으로 커넥터 유지하셔도 되고 해당 DB 테이블의 엑세스가 필요할때만 커넥터를 만들어 하는 방법이 있겠죠.

 

그러나 그누보드에서 제가 그런 오더를 받았다면....

하나의 DB에 그누보드 설치시 "g5_​" 같은 앞에 붙는 텍스트를 달리하여 3개의 그누보드용 테이블을 만들어서 

회원테이블만 3개중 하나만 사용하는 ...이런형태로 갈것 같습니다.

 

예를 들면

1번 사이트 g5_1_ 로 테이블생성

2번 사이트 g5_2_ 로 테이블생성

3번 사이트 g5_3_ 로 테이블생성

회원테이블 g5_1_만을 이용, 나머지는 다 따로...이런식으로 하면 되지않을까요?

답변에 이런 댓글 죄송합니다만

쿠츠님 방식대로 저도 다른 DB를 연결해야 할 일이 생겼는데

생성하신 파일과(/extend 폴더에 생성한 파일) 다른 DB를 불러올 때 선행작업 예시문을 함께 알려주실 수 있으실지 문의 드립니다.

 

시간이 걸리시더라도 알려주시고자 하시면 *** 개인정보보호를 위한 이메일주소 노출방지 *** 으로도 보내주셔도 감사하겠습니다.

 

감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 136
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT