MySQL Workbench에서 delete나 update 시 where 조건문을 사용하지 않을 경우, 아래와 같은 에러 메시지가 나타나며 원하는 삭제나 수정 작업을 수행할 수 없다. where 조건없이 삭제/수정에 대한 사용자 실수를 예방하는 차원으로 MySQL Workbench 에 옵션으로 적용이 되어 있어서 그런 것이다.
실제 전체 데이터를 대상으로 삭제/수정 작업을 해야할 경우에 옵션 설정을 변경한 후 작업할 수 있다.
옵션은 Edit- Preferences - SQL editor 의 [ Safe Updates(rejects UPDATEs and DELETEs with no retrictions) ] 항목이다.
이 옵션을 disable 하면 조건절없이 수정/삭제 작업을 MySQL Workbench에서 수행할 수 있다.
0
21
17:36:18
delete from box
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
각 저장 프로그램에는 SQL 문으로 구성된 문장이 포함되어 있습니다. 이 명령문은 세미콜론(;) 문자로 구분된 여러 명령문으로 구성된 복합 명령문입니다.
예를 들어 다음 저장 프로시저에는 BEGIN ... END 블록에 select 문장이 있습니다.
CREATE PROCEDURE user_count()
BEGIN
SELECT 'Number of accounts:', COUNT(*) FROM mysql.user;
END;
mysql 클라이언트 프로그램을 사용하여 위의 세미콜론 문자가 포함된 저장 프로그램을 작성하면 아래와 같이 에러가 발생합니다. 기본적으로 mysql은 세미콜론을 명령문 구분 기호로 인식하기 때문입니다.
그러므로 mysql이 stored procedure 에서 세미콜론(;)을 인식하도록 임시로 구분 기호를 정의해야 합니다.
mysql> CREATE PROCEDURE user_count()
-> BEGIN
-> SELECT 'Number of accounts:', COUNT(*) FROM mysql.user;
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 3
mysql 구분 기호를 재정의하려면 delimiter 명령을 사용합니다. 다음 예에서는 user_count() 프로시저를 정의하기 위해 delimiter를 (//) 로 사용했습니다. 이를 통해 프로시저 본문에 사용된 구분 기호*;)를 자체에서 해석하지 않고 서버로 전달하여 stored procedure를 생성할 수 있습니다.
마지막 줄의 delimiter ; 는 다시 임시로 변경한 delimiter를 세미콜론(;)으로 원복하는 명령어입니다.
mysql> delimiter //
mysql> CREATE PROCEDURE user_count()
-> BEGIN
-> SELECT 'Number of accounts:', COUNT(*) FROM mysql.user;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
PROCEDURE, FUNCTION, TRIGGER에서 세미콜론을 구분하기 위해 delimeter를 사용합니다.
예제를 통해 블록 스토리지와 오브젝트 스토리지의 차이점을 이해해 봅시다. 크기가 100MB인 Excel 파일이 있다고 가정합니다.
블록 스토리지
100MB 파일이 Block Storage에 어떻게 저장됩니까? 블록 스토리지의 경우 100MB 파일을 10MB씩 10개의 블록으로 나누어 메모리에 저장한다. 여기서 메모리란 하드 디스크를 의미합니다. 각 데이터 블록에는 고유한 식별자가 부여되어 스토리지 시스템이 가장 편리한 위치에 더 작은 데이터 조각을 배치할 수 있습니다.
100MB 파일에 어떻게 액세스할 수 있습니까?
각 블록 스토리지는 개별 하드 디스크로 취급될 수 있으므로 운영 체제를 통해 데이터에 액세스할 수 있습니다. 이 운영 체제는 로컬에 있거나 클라우드 스토리지의 경우 네트워크에 연결되어 있을 수 있습니다.
100MB 파일에서 업데이트는 어떻게 수행됩니까?
따라서 100MB 엑셀 시트의 몇 개의 셀을 변경하려는 경우 메모리에서 변경한 블록만 업데이트됩니다. 업데이트는 10개 블록 모두에서 수행되지 않습니다.
블록 스토리지 사용의 이점:
읽기/쓰기 작업이 더 빠름
스토리지 요구 사항이 증가함에 따라 조직은 성능 저하 없이 블록 스토리지 볼륨을 추가할 수 있지만 내구성은 저하될 수 있습니다.
파일 구조를 따르므로 인간 친화적입니다.
블록 스토리지 사용의 단점
블록 스토리지는 매우 제한된 메타데이터를 사용합니다. 이는 애플리케이션이 의미 있는 메타데이터로 스토리지 위치를 식별할 수 없고 필요한 데이터를 찾기 위해 많은 수의 블록을 스캔해야 할 수 있기 때문에 검색 및 검색과 같은 메타데이터 중요 작업에서 애플리케이션 성능에 영향을 미칠 수 있습니다.
스토리지와 애플리케이션 사이의 거리가 멀어질수록 대기 시간이 길어집니다.
블록 스토리지는 비용이 많이 듭니다. 값비싼 하드웨어와 고도로 훈련된 유지 보수 인력이 필요하기 때문입니다.
사용 사례 및 클라우드 예시
블록 스토리지는 고도로 구조화된 데이터에 유용합니다.
데이터베이스 및 트랜잭션 데이터에 유용합니다.
AWS Elastic Block Storage(EBS)는 EC2 인스턴스에 연결할 수 있는 하드 디스크와 같은 원시 스토리지를 제공합니다.
객체 스토리지
100GB 파일은 Object Storage에 어떻게 저장됩니까? 오브젝트 스토리지에서 데이터는 오브젝트라고 하는 개별 단위로 분할되어 폴더에 파일로 보관되거나 서버에 블록으로 보관되는 대신 단일 리포지토리에 보관됩니다. 오브젝트 스토리지의 경우 100MB 파일을 청크로 나누지 않습니다. 대신 전체 데이터 덩어리가 단일 개체로 저장됩니다. 각 개체는 세 가지로 구성됩니다. 데이터(100MB 파일), 확장 가능한 양의 메타데이터 및 전역적으로 고유한 식별자.
100MB 파일에 어떻게 액세스할 수 있습니까?
각 개체에는 전역적으로 고유한 식별자가 있으며 대부분의 클라이언트에서 모든 언어로 사용되는 간단한 HTTP API(응용 프로그래밍 인터페이스)가 필요합니다.
100MB 파일에서 업데이트는 어떻게 수행됩니까?
그래서 100MB 엑셀 시트의 몇 개의 셀을 변경하고 싶다면 개체 저장소에서 전체 파일이 업데이트됩니다. 이로 인해 업데이트 작업이 매우 무거워집니다.
오브젝트 스토리지 사용의 이점:
개체 기반 스토리지는 파일이 여러 조각으로 나뉘어 하드웨어 간에 분산되는 평면 구조입니다. 오브젝트 스토리지에서 데이터는 오브젝트라고 하는 개별 단위로 분할되어 폴더에 파일로 보관되거나 서버에 블록으로 보관되는 대신 단일 리포지토리에 보관됩니다.
읽기 작업이 훨씬 빠릅니다.
노드를 추가하는 것만으로 개체 기반 스토리지 아키텍처를 확장하고 관리할 수 있습니다.
오브젝트 스토리지 사용의 단점
1.객체 스토리지를 사용하여 트랜잭션 및 데이터베이스 데이터를 저장할 수 없습니다. 2. 데이터 일부를 변경할 수 없으며 전체 개체를 읽고 써야 합니다.
사용 사례 및 클라우드 예시
구조화되지 않은 데이터를 저장하는 데 사용됩니다. 예: 이미지, 동영상
AWS Simple Storage Service(S3)는 읽기 작업이 빈번한 파일을 저장하는 데 광범위하게 사용됩니다.
SQLServer 에 윈도우 인증이 아닌 SQL Server 인증모드로 접속 시 아래와 같은 오류가 발생할 경우에 조치 방법입니다.
SSMS(SQLServer Management Studio) 실행 후 좌측의 인스턴스를 선택 후 오른쪽 마우스를 클릭하여 "속성"을 클릭합니다. 속성화면에서 좌측의 [보안] 메뉴 클릭 후 "서버인증" 항목에서 "SQL Server 및 Windows 인증 모드(S)"를 선택합니다.
SQLServer를 재기동 한 후 SQLServer 인증모드로 DB 사용자로 DB에 접속할 수 있습니다.
ODBC 설정할 때 사용자 접속 오류 발생 시
기타 ODBC 설정 시 사용자 접속 오류가 발생할 경우, SQL Server 구성 관리자에서 TCP/IP 를 사용으로 변경해 준다.
"Sql Server Configuration Manager"를 연 후 좌측의 SQL Server 네트워크 구성 하위에 MSSQLSERVER에 대한 프로토콜을 선택한다. 선책 후 우측의 TCP/IP 항목을 더블 클릭한다.
TCP/IP 속성 창이 나타나면 "사용"을 "예"로 선택한다.
IP 주소 탭에서 접속하고자 하는 IP의 "사용"을 "예"로 선택해 준다. 본 문서에서는 127.0.0.1 에 대한 접속을 허용하도록 설정한 예이다.
성능 인사이트 켜기 : 성능 개선 도우미는 데이터베이스 성능을 표시하여 분석하는데 도움이 되므로 성능 모니터링이 필요한 경우 선택
보존 기간 : 7일(무료), 24개월까지 보관 가능하나 비용 발생
AWS KMS키 : aws managed key나 customer manager key 선택
Enhanced 모니터링 활성화 : DB 인스턴스의 운영 체제를 실시간으로 모니터링할 수 있습니다. 다른 프로세스 또는 스레드에서 CPU를 사용하는 방법을 확인하려면 Enhanced Monitoring 지표가 유용합니다.
추가구성
초기 데이터베이스 이름 : 초기 데이터베이스 이름을 입력하면 DB 클러스터 생성 시 데이터베이스를 생성
DB 클러스터 파라미터 그룹 : DB 클러스터에 적용될 파라미터 그룹 선택
DB 파라미터 그룹 : DB 인스턴스에 적용될 파라미터 그룹 선택
옵션그룹 : 별도로 생성한 옵션그룹이 있을 경우 선택. 그렇지 않으면 default 옵션 그룹 사용
장애 조치 우선 순위 : 장애 조치 우선 순위는 기본 인스턴스(마스터)의 장애 시 다수의 읽기 복제본 중에서 기본 인스턴스로 승격 시킬 인스턴스에 대한 우선 순위를 지정하는 옵션 입니다. 우선 순위가 가장 높은 복제본(티어 0으로 시작)을 새로운 기본 인스턴스로 승격시킵니다.
백업 보존기간 : 1일에서 35일까지 보관할 수 있음. 각자의 백업정책에 따라 설정
암호화 : 데이터파일에 대한 암호화 설정
AWS KMS키 : aws managed key나 customer manager key 선택
역추적 : 역추적을 활성화하면 DB를 특정 시점으로 되돌릴 수 있습니다.
로그 내보내기
CloudWatch logs로 게시할 로그 유형 선택 : 원하는 로그를 선택
유지관리
마이너버전 자동 업그레이드 사용을 선택하면 AWS 가 마이너버전을 자동으로 업그레이드 함. 주의할 점은 다운타임이 발생한다는 것입니다. 운영DB인 경우에는 자동 업그레이드를 선택하지 않고 계획된 작업일정으로 업그레이드를 하도록 합니다.
유지관리 기간 : Amazon RDS가 보류 중인 수정(예: DB 인스턴스 클래스 변경) 또는 패치를 DB 인스턴스에 적용할 기간을 선택합니다. 이러한 유지 관리는 선택한 기간 내에 시작하고 완료합니다. 기간을 선택하지 않으면 Amazon RDS가 임의로 기간을 할당합니다.
삭제방지
데이터베이스가 실수로 삭제되는 것을 방지합니다. 이 선택을 하면 데이터베이스를 삭제할 수 없습니다. 삭제하려면 이 옵션을 변경하고 삭제해야 합니다.
위의 사항들을 입력 또는 선택완료후 [데이터베이스 생성] 버튼을 클릭합니다.
아래와 같은 화면이 나오는데
ElasticCache cluster와 RDS Proxy를 생성할지에 대한 선택 화면입니다.
필요시 생성할 수 있습니다. 본 문서에서는 추가 생성하지 않습니다. 추후 시간이 가용하면 설명 추가 예정
- ElaticCache cluster
- RDS Proxy
데이터베이스가 생성된 화면입니다. 역할을 보면 "리전 클러스터"와 "라이터 인스턴스"가 생성된 걸 볼 수 있습니다.
AWS serverless 데이터베이스 연결
AWS serverless 데이터베이스 연결할 수 있는 여러 방법에 대해 설명합니다.
1) 쿼리 편집기 : AWS 콘솔에서Data API를 통해 DB와 연결할 수 있는 방법이나, 현재(2023. 04. 18) 서울 리전에서는 제공하고 있지 않음. 쿼리 편집기를 클릭하면 아래와 같은 메시지가 발생하고 서울 리전에서 Aurora 서버리스 데이터베이스 생성 시 Data API 활성화 옵션이 보이지 않음.
2) VPC 내의 Amazon Aurora DB 클러스터에 액세스–VPC를 통해 Amazon AuroraDB 클러스터에 액세스할 수 있습니다. 이렇게 하려면 특정 Aurora DB 클러스터에 대한 액세스를 허용하도록 VPC의 보안 그룹에서 인바운드 규칙을 편집합니다.
3) VPC 외부의 Amazon Aurora DB 클러스터에 액세스– 외부에서 Amazon Aurora DB 클러스터에 액세스하려면 Amazon Aurora DB 클러스터의 퍼블릭 엔드포인트 주소를 사용하여 접속할 수 있습니다. 보안상의 이유로 외부에서 DB로의 액세스는 일반적으로 허용되지 않습니다.