728x90

-- File: 바이너리 로그 파일 이름 (예: mariadb-bin.000003)
-- Position: 바이너리 로그 위치 (예: 1234)
SHOW MASTER STATUS;


SHOW MASTER STATUS; 쿼리는 

MariaDB 또는 MySQL 데이터베이스 서버에서 마스터 복제 상태를 확인하는 데 사용됩니다.
이 쿼리의 출력 결과를 통해 다음과 같은 중요한 정보를 얻을 수 있습니다:

File: 

현재 사용 중인 바이너리 로그 파일의 이름입니다.
바이너리 로그는 데이터베이스에서 발생한 모든 변경 사항을 기록하는 파일입니다.

Position: 

현재 바이너리 로그 파일에서 마지막으로 기록된 위치(offset)입니다.
이 위치는 바이트 단위로 표시됩니다.

Binlog_Do_DB: 

바이너리 로그에 기록할 데이터베이스 이름을 지정합니다.
이 값이 설정되어 있지 않으면 모든 데이터베이스의 변경 사항이 기록됩니다.

Binlog_Ignore_DB: 

바이너리 로그에서 제외할 데이터베이스 이름을 지정합니다.

이 정보는 MariaDB 또는 MySQL 복제 설정 시 매우 중요합니다.
마스터 서버에서 SHOW MASTER STATUS;를 실행하여 바이너리 로그 파일 이름과 위치를 확인한 후,
이 값들을 슬레이브 서버에 전달하여 복제를 시작할 수 있습니다.

따라서 SHOW MASTER STATUS; 쿼리는 마스터-슬레이브 복제 환경을 구축할 때 필수적으로 사용되며, 마스터 서버의 현재 복제 상태를 확인하는 데 매우 유용합니다.
 

728x90
728x90

프로시저란 ?

 

쿼리를 담고있는 함수라고 생각한다.

아래의 코드는

select문을 2개품은 myProc라는 함수라고 생각하면 편하다.

아래에 나온방식으로 생성하며 

생성된 프로시저는 다음처럼 보인다(HeidiSQL 기준)

 

실행과 삭제는 위의 사진과 동일하다.

 

실행했을때 사진은 다음과 같다.

select가 하나의 탭씩 생긴것이며, 클릭해서 조회된 데이터를 볼 수 있다.

 

 

47번 라인에 주석을 해제하면 오류가 떠서 , 구글링 결과 해당부분을 주석하니

잘생성되었다.

 

 

728x90
728x90

1. Class.forName("org.mariadb.jdbc.Driver");  Mysql이면 com.mysql.jdbc.Driver로 변경

자바 커넥터 로드를 얻자                          

 

2. Connection conn = DriverManager.getConnection(

                                  "jdbc:mariadb://서버주소:3306/사용할DB",         ◀ Mysql이면 mariadb -> mysql 로만 변경

                                  "사용자ID",

                                  "사용자패스워드");

접소겅보가 담긴 객체를 Connection 타입의 conn에 담는다

 

3. Statement stmt = conn.createStatement();

쿼리 문장객체를 만들어 Statement 타입의 stmt라는 변수에 담는다

 

 

4-1. insert,update,delete 처럼 select가 아닌 쿼리

stmt.executeUpdate(실행할쿼리내용);

DB에 그대로 들어가기때문에 DB내용을 가져올 필요가없다

 

4-2. select 쿼리

stmt.executeQuery(실행할쿼리내용);

4-1과는 다르게 select의 경우 테이블을 조회했으니 그걸 꺼내와야한다 웹화면에 보여줘야한다

(게시글처럼)

 

 

5. ResultSet rs = stmt.executeQuery(쿼리);

select쿼리를 실행하면 ResultSet 타입의 rs로 담아야한다. (리턴타입이그러니까)

그리고 이걸 반복문을 통해서 ResultSet 타입의 rs라는 변수에 담아야한다 그리고 출력도해야한다

 

while(rs.next()) {

...

<td><%=rs.getInt("num")%></td>

<td><%=rs.getString("name")%></td>

...

}

이런식으로 바로 출력할수도있고 VO의 setter에 넣어서 사용할수도있다.

rs.next()메소드는 테이블의 행이 있을탠대 즉 레코드 포인터를 계속옮겨가며

그 칼럼에있는 값을 꺼내는거다. 즉 위에 num,name은 실제 칼럼 이름이되겠다.

 

*웹에서는 라이브러리가있어야 디비에 접근할수있다

 

 

 

 

728x90
728x90

나의 첫 게시글로 무엇을 올릴까 하다 최근에 MariaDB를 공부하고있기에

Linux에서 MariaDB설치방법을 소개하려한다

리눅스에서 그냥 mysql을 받으면 5버전으로 깔리는경우가 많다

필자는 mysql말구 MariaDB를 10.5버전(정확하게 10.5.6)을 다운받으려한다.

 

혀가 길었다 바로 아래의 링크를 가보자.


yum.mariadb.org/

위의 링크를 클릭하면 5버전과 10버전들이 보이는데 필요한 파일을 여기서 다운받으면된다

 

10.5.6 버전을 받는다면 다음 사진처럼 타고들어가면된다

참고로 ,필자는 Linux를 CentOS7을 사용한다

! 여기서 CentOS7을 설치 못하시는분은.. 급한대로 다른사람의 블로그를 구글링해서 준비하자

(댓글요청이 혹시라도있으면 시간내서 게시글을 올려보도록하겠다.)

 

/10.5.6 클릭 -> centos7-amd64 클릭 -> rpms 클릭

여기서 의존성에 필요한 파일들을 모조리 받아주면된다.

(galera,client,common,compat,server 총 5가지를 다운받아야한다)

 

 

다운은 각 파일에 마우스 우클릭하여 링크주소 복사를한다.

이후 Linux에서 원하는 디렉토리의 위치에서 

 

#wget 링크주소붙여넣기

다운로드하면된다 (총5번 해야한다)

 

이후

#yum -y install *.rpm 

#cd /etc/my.cnf.d

#vi server.cnf 

제일 하단에 다음과 같이 수정한다 

 

#systemctl start mariadb

#systemctl status mariadb

#systemctl enable mariadb

 

및 추가로 방화벽을 사용하면 방화벽까지 열어주면된다

#firewall-cmd --permanent --add-port=3306/tcp

MariaDB는 기본 3306 포트를 사용한다

#firewall-cmd --reload

 

#mysql -u root -p

입력하면 다음과 같이 DB 쉘이 나타날것이다.

위의 명령어는 잘봐야하는데

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

일단 ' ' 안에 root와 localhost가 들어가있다 

이말은 뭐냐면 root라는 계정을 로컬계정으로 만들겠다 이말이다

(다시말해 로컬이 아닌계정이 존재한다면 localhost대신 다른무언가가 들어갈꺼라고 예측해보자)

이후 IDENTIFIED BY 뒤에 ' '이 있고 그안에 내가원하는 패스워드를 입력해주면된다

123456은 그냥 보여주기위해서 적은거고 형광팬으로 특별히 칠해놧다. 자신이 원하는 패스워드로 바꿔입력하자.

 

적용이 되었다면 exit로 종료하고

#mysql - u root -p

설정한 암호 입력 (화면에 입력되는게 나타나지않음,)

로그인이 잘될것이다.

 

한가지 문제가남았다

현재 로컬호스트 계정인 root가 있을뿐(리눅스의 root계정이아니다),

타지역(원격지)에서 로그인할 계정이없다.

즉, 다른 네트워크에서 여기로 접속할때 사용할 계정을 만들어 줘야한다

 

그냥 텍스트로 설명하겠다.

 

#mysql -u root -p           <- DB 접속

 

CREATE USER nataekoon@'%' IDENTIFIED BY '123456';

유저를 생성하겠다, 유저명은 nataekoon , %의 의미는 어느위치에서든 접속가능한 계정이며 , 패스워드는 123456이다

GRANT ALL *.* TO nataekoon@'%' WITH GRANT OPTION; (ON을 빼먹었다 미안하다)

GRANT ALL ON *.* TO nataekoon@'%' WITH GRANT OPTION;

모든 쿼리 명령어(ALL) 권한을 부여하겠다 *모든데이터베이스 .밑에 있는 *모든테이블을(*.*)  

EXIT

 

명령어의 의미는 이정도로만 이해하자.

 

약속대로 집에와서 전부 작성하였다.

도움이 되었다면 댓글을 남겨 나태쿤에게 힘을주세요.

 

 

728x90

+ Recent posts