Database

상황 2.8.4 버전에서 2.8.24 버전으로 업그레이드 후 발생하였습니다. 구조는 다음과 같습니다. 테스트 환경에서 재연에 필요한 인스턴스만 구성하였습니다. 업그레이드 작업 방법 단계 작업내용 1 Sentinel 인스턴스 다운 2 Redis Slave 인스턴스 다운 3 Redis Master 인스턴스 다운 4 redis / sentinel 바이너리 2.8.24 버전으로 교체 5 Redis Master 인스턴스 구동 6 Redis Slave 인스턴스 구동 7 Sentinel 인스턴스 구동 8 Sentinel 페일오버 테스트 진행 (오류 발생) 원인 Redis conf 파일에는 rename-command 의 옵션이 있었습니다. 이 옵션이 있는 경우, failover 시 아래와 같은 오류가 발생하는 것으로 ..
Auto Increment 컬럼이란 자동 증가 값을 가지는 컬럼으로 값을 직접 대입할 수 없습니다. 중간에 값을 삭제한다고 해서, 삭제된 값을 재사용 하지 않으며레코드가 적재될 때마다 1씩 증가하게 됩니다. Auto Increment 초기화 방법 1. Truncate Truncate 를 하면 Auto Increment 값이 초기화가 됩니다. 12345678910111213141516171819202122232425262728293031323334CREATE TABLE t1 ( id INT(11) NOT NULL AUTO_INCREMENT, t1_text VARCHAR(50), PRIMARY KEY(id)) AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4; INSERT INTO t..
상황 특정 서버에서 DUMP 한 아래 프로시저를 다른 서버에 반영하려고 합니다. 1234567CREATE DEFINER=test@localhost PROCEDURE TEST()BEGIN set @s=CONCAT('truncate table test', DATE_FORMAT(NOW(), '%c') % 3); PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;ENDColored by Color Scriptercs 이 때 오류가 발생했습니다. Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version ..
%cpu레디스는 인스턴스별로 하나의 CPU 를 사용하고, 할당된 CPU 사용량을 나타냅니다. aof_rewrite_in_progress현재 AOF 파일을 저장중이면 1, 아니면 0 입니다. aof_rewrite_scheduledAOF 파일을 저장하는 스케줄이 설정되어 있으면 1, 아니면 0 입니다. blocked_clientsBLPOP, BRPOP, BRPOPLPUSH, WAIT 명령으로 대기중인 클라이언트 수를 나타냅니다. client_biggest_input_buf현재 연결된 클라이언트 중 가장 큰 입력 버퍼 값을 나타냅니다. client_longest_outpu_list현재 연결된 클라이언트 중 가장 긴 출력 값을 나타냅니다. commands_processed초당 처리되는 명령어 수를 나타냅니다. ..
SQL Server 버전이 EOS 되면서 버전 업그레이드가 필요한 상황이 되었고,버전 업그레이드 겸 DB Migration (이전작업)을 진행하면서 체크했던 리스트를 정리해 보았습니다. SQL Server 기준으로 작성되어 있고아래에서 작성한 AS-IS 와 TO-BE 는 DB 서버를 의미합니다. 아! 참고로 이전작업을 진행하면서 발생하는 이슈는 연관부서에 바로바로 공유될 수 있도록 해줍시다. 이전 작업 계획 시 예상 일정 수립1. 연관 부서 확인2. 이전할 DB 목록 확인에 필요한 일정 - 하나의 SQL Server 내에 다수의 Database 가 있을 수 있고, 사용하지 않는 DB 는 이전 대상에서 제외할 수 있음3. 호환성 체크 및 수정작업에 필요한 일정4. DB 이관 작업 시 사용할 스크립트 작성에..
로그인 계정이란 외부에서 DBMS 로 접속하기 위한 하나의 인증(?) 과정을 의미합니다. 로그인 계정마다 권한을 다르게 줄 수 있기 때문에,관리자는 여러 계정을 생성하고 알맞은 권한을 부여하여 공격으로부터 방어할 수 있습니다. 문제는 이렇게 생성된 계정도 오랜시간이 지나고 정책이 바뀌면서 사용되지 않을 수 있게 된다는 것입니다. 최고의 방법은 사용하지 않는채로 두는 방법이지만,이런 계정도 너무 오래 방치하면 위험이 따르기 때문에 정리가 필요한 상황이 오게됩니다. 로그인 계정을 삭제할 때 고려할 점 1. 해당 로그인 계정을 사용하는 클라이언트는 없는지?백트레이스로 로그인 계정을 수집하거나, 혹은 현재 접속하는 세션이 없는지 확인해 봅니다. 1SELECT * FROM sys.dm_exec_sessions;c..
마스터와 슬레이브가 구동되어 있을 때 Failover 하는 방법cluster failover 명령어 사용복제노드에서 cluster failover 명령어를 사용하여 Failover 를 진행할 수 있습니다. ( Failback 도 동일한 개념입니다. ) 123456789101112131415161718127.0.0.1:7000> cluster nodesa8248c454007d610685bba8e805c5a6004867d15 127.0.0.1:7001@17001 slave 869859e396c881b3c26f2a386c1495235225b57b 0 1586026738000 9 connected869859e396c881b3c26f2a386c1495235225b57b 127.0.0.1:7000@17000 mys..
슬롯이란클러스터 키를 해시함수로 적용하여 나온 값을 슬롯에 매핑하여 저장할 수 있게 해주는 기능입니다.해시함수로 적용하여 나온 값에 매핑되는 슬롯이 없으면 데이터가 저장될 수 없습니다. 따라서 슬롯이 정상적인지 확인을 할 수 있어야 합니다. 오픈되어 있는 슬롯, 없는 슬롯을 확인하는 방법check 명령어를 통해서 확인할 수 있습니다.클러스터로 묶인 노드 중 한곳에 접속해서 확인할 수 있습니다. 12345678910111213141516171819202122$ redis-cli --cluster check 127.0.0.1:7000127.0.0.1:7000 (869859e3...) -> 2 keys | 16383 slots | 1 slaves.127.0.0.1:8000 (dcae2685...) -> 0 k..
노드 제거 방법Redis 인터렉티브에서 forget 명령어를 수행하거나redis-cli 명령어에서 del-node 옵션을 부여하여 노드를 제거할 수 있습니다. 클러스터 마스터 노드 제거 방법먼저 2가지 조건을 만족해야 합니다. 슬롯이 비워져 있어야 합니다.마스터 노드에 슬롯이 할당되어 있다면, 먼저 슬롯을 비워주어야 합니다.슬롯을 비우는 방법(다른 노드로 변경하는 방법)은 아래 URL 을 참고해 주세요.https://mozi.tistory.com/384 삭제할 마스터 노드의 복제 노드가 없어야 합니다.노드를 삭제할 때는 다른 모든 노드로부터 forget 명령어를 수행하여야 하는데,삭제할 마스터의 복제노드에서 forget 명령어를 수행할 수 없기 때문에 클러스터는 계속 유지되어 있습니다. 8000 마스터 ..
클러스터 슬롯레디스 클러스터는 0 ~ 16383 까지의 슬롯 값을 가지고 있습니다.또한 이 슬롯 값을 마스터 노드별로 분배할 수 있습니다. 레디스 클러스터에서는 기본적으로 키에 해시 함수를 적용해서 나온 값(슬롯) 노드에 할당을 합니다.즉, 슬롯을 이용하여 특정 노드에 데이터가 몰리지 않도록 분산하기 위해 사용하는 기능이 클러스터 슬롯입니다. 특정 키가 어떤 슬롯에 저장되는지는 레디스의 해시함수 알고리즘에 의해 정해지기 때문에,특정 키는 특정노드에만 저장이 될 것입니다.단 서로 다른 키라고 하더라도 해시함수로 나온 값이 동일할 수 있으므로 하나의 슬로셍는 여러개의 키가 저장될 수 있습니다. 클러스터 노드간에는 해시 알고리즘을 서로 공유하고 있어특정 키가 어떤 노드에 저장되는지, 어떤 슬롯에 저장되어야하는..
꽁담
'Database' 카테고리의 글 목록 (5 Page)