본문 바로가기

DBMS

(47)
[MySQL] Fetal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. 1. 오류 발생replication 구성 시 mysqldump 를 통해 데이터를 그대로 복사하여 리플리케이션을 구성 시 발생하는 오류이다.mysql> show slave status\G*********************************1. row ************************************Slave_IO_State:Master_Host: 12.345.678Master_User: repl_userMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000010Read_Master_Log_Pos: 120Relay_Log_File: mysqld-relay-bin.000001Relay_Log_Pos: 4Relay_Master_..
[MySQL] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) [root@test ~]$ mysql -u dba -pEnter password:ERROR 2002 (HY000): Can't connect to local MySQL server through socker '/var/lib/mysql/mysql.sock' (2)mysql 접속 중 위와 같은 오류가 발생했다.'/var/lib/mysql/mysql.sock' 에 연결할 수 없다는 오류이다. 해당 오류가 발생하는 원인과 해결방법이 다양한데 나는 두가지 정도 체크한 후에 해결하였다. [원인-1]mysqld 가 시작되지 않은 상황에 발생할 수 있다.아래의 명령어를 통해 나의 mysqld 작동 상태를 확인 할 수 있다.[root@test ~]$ service mysqld statusMySQL is stopped ..
[MySQL] 데이터베이스 및 테이블별 용량 조회 데이터베이스별, 테이블별, 전체 용량을 아래 쿼리를 통해 확인 할 수 있다.  1. 데이터베이스별 용량 (Database Size) 조회SELECT table_schema AS 'DatabaseName',                 ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)' FROM information_schema.tables GROUP BY table_schema ORDER BY 2 DESC; 2. 전체 용량 (Total Size) 조회SELECT ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Used(MB)',                 ROUND(SUM(data_free)/..
[SQL Server / MS-SQL] 데이터베이스 분리 및 연결 (Detach / Attach) 데이터베이스를 운영중에 디스크 공간 부족으로 인해 데이터 파일(Data File) 을 새로운 디스크로 옮겨야 할 경우, 데이터베이스 분리 및 연결을 이용할 수 있다. 데이터베이스 분리 및 연결은 같은 컴퓨터의 다른 SQL Server 인스턴스로 변경하거나 데이터베이스를 이동하는 경우 유용하다. 데이터베이스를 분리하면 SQL Server 인스턴스에서 해당 데이터베이스가 제거되지만 데이터 파일 (Data File) 과 트랜잭션 로그 파일 (Transaction Log File) 은 그대로 유지된다. ※ 데이터베이스를 분리할 수 없는 경우 - 데이터베이스 스냅샷 (Database Snapshot) 이 있는 경우 → 먼저 해당 데이터베이스의 스냅샷을 삭제해야 한다. - 데이터베이스 미러링 (Database Mi..
[SQL Server / MS-SQL] 운영 체제 오류 5: "5(액세스가 거부되었습니다.)" 물리적 파일 "D:\MSSQL\DATA\test.mdf"을(를) 열 수 없습니다. 운영 체제 오류 5: "5(액세스가 거부되었습니다.)". 이 오류는 데이터베이스 파일을 다른 위치로 옮기기 위해데이터베이스 분리 후 파일의 저장위치를 변경하고 연결(Attach) 시도 시 발생한 오류이다.  [SSMS][T-SQL] 이 오류는 데이터베이스 파일을 옮기려는 경로에 접근(액세스) 권한이 없어서 발생한다.먼저, MSSQL 의 기본 저장 경로의 권한을 확인해보자. 나의 경로는 아래와 같다."C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA"  [DATA] 폴더 우클릭 > [속성] 선택 [DATA속성] 폴더 > [보안] 탭 선택그룹 또는 사용자..
[MySQL] MySQL 버전 확인 쿼리 SELECT version();위와 같은 쿼리를 통해 MySQL 버전을 알 수 있다.  추가로,SQL 이 아닌 서버에서도 버전을 확인 할 수 있다.$ mysql --version
[SQL Server / MS-SQL] 데이터베이스 소유자 (db owner) 조회 및 변경 먼저 각 데이터베이스의 소유자를 조회해보자. 조회 방법1.SELECT a.name AS [Database],              b.name AS [Owner] FROM sys.databases AS a JOIN sys.sql_logins AS b ON a.owner_sid = b.sid 조회 방법2.SELECT name AS [Database],              SUSER_SNAME(owner_sid) AS [Owner] FROM sys.databases [조회 결과] 나는 'test' 라는 DB 의 소유자를 'sa' 에서 'an' 으로 바꾸어주려고 한다.이때 아래의 쿼리를 이용해서 바꿔줄 수 있다. ALTER AUTHORIZATION ON DATABASE:: test TO an;  [변경결..
[SQL Server / MS-SQL] 모든 프로시저명 (Procedure Name) 조회 INFORMATION_SCHEMA.ROUTINES 을 이용하여 DB 내의 모든 프로시저명을 조회할 수 있다.시스템 정보 스키마 뷰로, ROUTINES 에서는 저장된 프로시저(Procedure) 와 함수(Function) 정보를 알 수 있다. 전체 프로시저 조회SELECT *FROM INFORMATION_SCHEMA.ROUTINESWHERE ROUTINE_TYPE = 'PROCEDURE' 프로시저의 전체 정보를 알 수 있다.DB명, 스키마명, 프로시저명, 프로시저 내용, 생성일, 최근수정일 등이 이에 해당된다.  프로시저명, 프로시저내용 조회SELECT ROUTINE_NAME AS [ProcedureName],                ROUTINE_DEFINITION AS [ProcedureConten..
[SQL Server / MS-SQL] 데이터베이스 복원 실패 (WITH MOVE 옵션) 1. 오류발생1RESTORE DATABASE CRM FROM DISK = 'E:\BACKUP\CRM_backup.bak'cs 위와 같이 데이터베이스 복원을 시도하였으나, 아래와 같은 오류가 발생했다. Msg 5133, Level 16, State 1, Line 1 운영 체제 오류 3(지정된 경로를 찾을 수 없습니다.)(으)로 인해 파일 "M:\DATA\CRM.mdf"에 대한 디렉터리를 조회하지 못했습니다. Msg 3156, Level 16, State 3, Line 1 파일 'Log_Data'을(를) 'M:\DATA\CRM.mdf'(으)로 복원할 수 없습니다. WITH MOVE를 사용하여 올바른 파일 위치를 확인하십시오. Msg 5133, Level 16, State 1, Line 1 운영 체제 오류 3..
[SQL Server / MS-SQL] count(*) / count(1) / count(column) 차이 먼저 count( ) 함수 란?집계함수로, ( ) 내의 있는 항목의 수를 출력한다. 즉, count(name) 의 경우 name 이라는 컬럼의 갯수를 나타낸다는 의미이다.count(*) 은 전체 행 수를 나타내며, count(1) 과 같은 의미이다. 어디서 count(1) 이 count(*) 보다 더 빠르다고 들었어서 count(1) 을 썻던 적이 있는데결론적으로 성능적 차이 없다. 둘이 동일하다고 보면된다. count(*) = count(1) 대신 count(*) / count(1) 과 count(name) 은 다르다.NULL 값을 포함하냐 마냐의 차이가 있다. count(*) 과 count(1) 은 NULL 값인 컬럼도 포함하지만,count(name) 은 NULL 값인 컬럼은 포함하지 않는다. 직접 ..

반응형