쿼리
- 오라클 쿼리 힌트 2024.09.05 1
- [ORACLE] DB Function 선언 2023.03.20
- [ORACLE] Constraint 쿼리로 제거하는 방법 2022.11.29
- [MYSQL] 그룹별 카운트 2022.08.17
- [MYSQL] 트리거 작성 2022.07.01
- [MYSQL] 계정 생성 및 외부 접속 허용 2022.06.23
- MYSQL DB 백업하기 2022.04.18
- frm, ibd 파일로 DB복구하기 2022.04.05
- mariadb 완벽제거 2022.03.13
- MYSQL sql_mode 세팅 2022.03.12
오라클 쿼리 힌트
[ORACLE] DB Function 선언
CREATE OR REPLACE FUNCTION MyFunc (nInput NUMBER)
RETURN VARCHAR2
IS
Ret VARCHAR2(14);
BEGIN
SELECT dname
INTO Ret
FROM dept
WHERE deptno = nInput;
RETURN Ret;
END;
참 쉽죠?
사용법은 ..?
nInput이 14라면
SELECT MyFunc(14) FROM DUAL;
'쿼리 > ORACLE' 카테고리의 다른 글
오라클 쿼리 힌트 (1) | 2024.09.05 |
---|---|
[ORACLE] Constraint 쿼리로 제거하는 방법 (0) | 2022.11.29 |
[ORACLE] Constraint 쿼리로 제거하는 방법
ALTER TABLE DM_REGISTER DROP CONSTRAINT USER_ID_FK;
'쿼리 > ORACLE' 카테고리의 다른 글
오라클 쿼리 힌트 (1) | 2024.09.05 |
---|---|
[ORACLE] DB Function 선언 (0) | 2023.03.20 |
[MYSQL] 그룹별 카운트
https://walkingfox.tistory.com/103
Mysql에서 rownum 과 그룹별 rownum
이런 table이 있다고 가정하자 name : scores column : class, name, score class (반), name(학생이름), score(점수) 하고자 하는 작업은 각 반별로 상위 점수 3명을 구하는 것이다. 1. rownum mysql에서는 rown..
walkingfox.tistory.com
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
---|---|
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
mariadb 완벽제거 (0) | 2022.03.13 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
[MYSQL] 트리거 작성
# 트리거에서 컬럼 사용.
Insert 되었을 때 ,
NEW.컬럼명
Delete 되었을 때 ,
OLD.컬럼명 이용
# 참고
# 변수. 파라미터 선언
BEGIN
SET @... = ..;
END
# IF문 사용 ( 연산자 사용에서 == 대신 = 를 쓰는다는 특징!)
예시
BEGIN
IF .... = 1 THEN
END IF
END
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
mariadb 완벽제거 (0) | 2022.03.13 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
[MYSQL] 계정 생성 및 외부 접속 허용
1. MYSQL 접속 후 계정 생성
CREATE USER '아이디'@'%' identified by '비번';
2. 계정에 모든 db 권한 부여
grant all privileges on *.* to '계정'@'%';
grant all privileges on db.* to '계정'@'%';
3. 적용
FLUSH PRIVILEGES;
4. cnf 파일 수정(위치는 보통 /etc/mysql/mysql.conf.d/mysqld.cnf)
bind-address = 127.0.0.1 주석처리 후
bind-address = 0.0.0.0 추가
5.mysql 재시작
sudo service mysql restart
6. 웹서비스의 경우 아파치도 재시작 추천.
sudo service apache2 restart
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
mariadb 완벽제거 (0) | 2022.03.13 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
MYSQL DB 백업하기
DB 서버 터미널 접속후
mysqldump -u'아이디' -p'패스워드' DB명 > 저장할파일명.sql
아래는 function trigger 등 포함 백업
https://storytown.tistory.com/19
MySQL Dump시 Procedure, Function, Trigger 포함하여 백업하기
복원에 실패한 자는 용서할 수 있어도 백업에 실패자는 용서가 안 된다는 말이 있듯이 백업의 중요성은 언제나 강조해도 부족합니다. MySQL 운영 시 백업을 하면 보통 아래 Dump 명령어를 이용해서
storytown.tistory.com
적용은
mysql 접속, root 계정이 아니어도 됨.
mysql -u root -p
CREATE DATABASE 데이터베이스이름
USE 데이터베이스이름
source 명령어로 sql파일 import
source [파일경로]/[파일명].sql
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
mariadb 완벽제거 (0) | 2022.03.13 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
frm, ibd 파일로 DB복구하기
.sql 백업파일이 없는경우 복구는 참 난감하다. 구조를 잘 몰라서 2주간 고생했다.
서버에서 MariaDB나 Mysql을 삭제한 경우가 아니라면 다음을 시도해볼 수 있다.
리눅스에서 진행
0. MariaDB 또는 Mysql 버전을 확인한다. (필수)
버전이 확인되지 않는 경우 3. 을 참고한다.
1. mysql 폴더 경로를 들어가 본다. mysql 폴더 경로는 다를수 있다.
$ cd /var/lib/mysql
2. mysql 폴더 경로에 있는 다음 파일 및 폴더를 백업한다.
ib_logfile0 , ib_logfile1, ibdata1, [복구하고자하는 데이터베이스 폴더]
3. [복구하고자하는 데이터베이스 폴더명] 으로 들어가보면, .frm파일과 .ibd파일을 볼 수 있다.
frm파일은 테이블의 구조(스키마)를 저장하는 파일이고, ibd는 실제 데이터(로우)가 들어간다.
frm파일에는 MariaDB 또는 Mysql 의 버전이 표시되는 경우가 있다.
mysqlfrm 도구나 dbsake를 이용하여 frm 파일을 읽어 보자. 필자는 dbsake를 이용했다.
# dbsake 설치 (설치하면 디렉토리가 생성됨)
$ curl -s http://get.dbsake.net > dbsake
# dbsake 700 권한 부여
$ chmod 700 dbsake
# dbsake 버전 확인
$ ./dbsake --version
4. MariaDB 또는 Mysql 를 삭제한 후 버전에 맞추어 재설치
(클린삭제, 삭제 판단은 본인에게 있다. [복구하고자하는 데이터베이스 폴더] 만 삭제해봐도 좋을 것 같음)
5. mysql에 접속하여 복구하고자 했던 데이터베이스를 만든다.
$ sudo mysql -uroot -p
# 데이터베이스가 없는지 확인
$ show databases;
# 데이터베이스 생성
$ create database [데이터베이스명];
6. 백업해둔 frm파일을 이용해 테이블을 생성한다. 테이블을 생성하면 ibd가 신규로 생성된다.
frm파일을 하나의 .sql파일로 만들 수 있다.
$ dbsake frmdump --type-codes [frm파일 경로/* ] > [SAVE_NAME].sql (dbsake 디렉토리 경로에서 실행)
만들어진 .sql 파일로 테이블을 생성한 후 다음 명령어를 이용해 ibd(빈 데이터)와의 연동을 해제한다. (주의)
$ sudo mysql -uroot -p
$ use [데이터베이스명];
$ ALTER TABLE table_name DISCARD TABLESPACE; (테이블 하나씩)
7. 백업한 ibd파일을 새로 만들어진 [데이터베이스 폴더]에 복사붙여넣기한다.
8. 복사 붙여넣기한 ibd파일의 권한을 mysql로 바꿔줘야한다.
# 폴더 통째로 mysql 권한부여
$ chown -R mysql:mysql [폴더경로]
9. mysql에 접속하여 데이터들을 테이블 하나씩 연동한다. (끝)
$ ALTER TABLE table_name IMPORT TABLESPACE;
여기서 에러가 나는 경우는 mysql or mariadb 버전이 다른 경우다.
버전이 다르게 설치되면 위 방법이 안되는 경우가 있다. ibd,frm 연동방식이 다름으로 추정
질문
1. ib_logfile0 , ib_logfile1, ibdata1 는 어디에 쓰나요?
데이터를 ibdata1과 ibd를 연관지어 저장하는 경우가 있다고 한다. (my.cnf..... xxxx.cnf의 방식에 따라 정해짐)
이 경우에는 위와 다른 복구를 해봐야한다.. 다만 매우 어려워보임.
해당 케이스의 경우, ib_logfile0 와 ib_logfile1파일이 혹시 필요할 수 있으니 백업한 것임.
DB 는 자주 백업해 두자.
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
mariadb 완벽제거 (0) | 2022.03.13 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
mariadb 완벽제거
[Mysql]
sudo apt-get purge mysql-server
sudo apt-get purge mysql-common
[MariaDB]
sudo apt-get purge mariadb-server
sudo apt-get purge mariadb-common
[공용작업]
sudo rm -rf /var/log/mysql
sudo rm -rf /var/log/mysql.*
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
출처: https://elfinlas.tistory.com/367 [MHLab Blog]
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
MYSQL sql_mode 세팅 (0) | 2022.03.12 |
MYSQL sql_mode 세팅
'쿼리 > MYSQL' 카테고리의 다른 글
[MYSQL] 그룹별 카운트 (0) | 2022.08.17 |
---|---|
[MYSQL] 트리거 작성 (0) | 2022.07.01 |
[MYSQL] 계정 생성 및 외부 접속 허용 (0) | 2022.06.23 |
MYSQL DB 백업하기 (0) | 2022.04.18 |
frm, ibd 파일로 DB복구하기 (0) | 2022.04.05 |
mariadb 완벽제거 (0) | 2022.03.13 |