요즘 핫한 내 인생의 해답 책.

유명 비제이가 이 책으로 컨텐츠를 하는걸 보고 책의 존재를 알게되었었다.

책은 마법서처럼 두꺼운 양장표지에 검정색 배경, 금색 글씨로 되어있다.

 

책의 두께도 생각보다 두껍다.

이 책을 읽는 방법은 조금 다르다.

처음부터 한장씩 읽어나가는것이 아니기 때문이다.

책에서도 수리수리마수리 어떻게하면 좋을까요 책님?!??!?? 하며 책을 읽으라고 권고한다.

자 이렇게 한다는 뜻이다.

먼저 고민을 한다.

책님!!

남자친구가 자꾸 깐족거리는데

저는 어떻게해야 할까요?!?!??

하고 책을 펼치면

이렇게 해답을 준다.

가끔 문맥이 안맞을 때도 있는데 그런경우엔 다른 페이지를 다시 돌려 보는 편이다.

그럼 한두번 내에는 해답이 나오더라.

 

그것 외에도 수많은 해답이 이렇게 있다.

인생의 해답을 재미삼아 타로점보듯 찾고싶다면 이 책을 추천한다.

인생 뭐 별거 아니듯이 이 책에있는 방법으로 긍정적인 마음을 갖는다면 인생을 좀 더 가볍게 살아갈 수 있지 않을까?

요즘 나는 고민이 있다면 이 책으로 생각의 방향을 바꿔보기도 한다.

판교에 출장간 김에 판교에서 일하는 언니를 보고왔다.

판교에 출장은 처음이라 ㅋㅋ 또 언니만 믿고 따라간 카페다.

판교 근무자들 사이에서 맛있다고 유명한 카페라고 했다.

 

카페의 외관과 메뉴판 모습이다.

요즘은 작은 키오스크로 주문하는게 유행인가보다.

내 메뉴는 언니가 시킨 아메리카노를 따라 시켰다!

 

이렇게 예쁜 트레이에 담겨 나온다.

근데 트레이를 들때 좀..무서웠다. 안정감이 부족한 느낌 ㅎ;

맛은 그냥 일반 카페커피랑 비슷했던 것 같다.

사실 커알못이라..커피 맛 다 똑같음 ㅎ;

신맛은 세지 않앗던 것같다. 그냥 평범한 커피 같았다.

커피가 평범해도 인테리어가 예쁘니까 오케입니다~

커피 뿐만이 아니라 빵도 파는 것 같았다.

나중에 기회가되면 빵도 한번 먹어보고 싶다.

점심시간이 다 끝나갔는데도 사람들이 많은걸 보면 유명한 카페는 맞나보다.

점심시간엔 확실히 많은 사람들이 북적였다.

판교 가보시는분이 있다면 한번 가보길 추천한다.

 

 

오랜만에 전 회사에 같이 다니던 언니를 만났다.

여의도쪽에 볼일이있어 갔다가 영등포구청쪽에서 회사를 다니는 언니가 생각나 연락하여 급 만남을 가졌다.

영등포구청을 떠난지 어언..3년..

그 동안 새로운 카페들도 생기고 맛집들도 생겼나보다.

언니가 맛있는 커피를 먹여주고 싶다며 프라우커피로 날 안내했다.

위치는 당산과 영등포 구청 사이쯤이다.

생각보다 골목골목으로 들어가서 현지인(?) 아니면 찾기 힘든 곳에 위치해있어 보였다.

가게는 내부는 아담하니 적당했다.

가게에 들어서면 이곳이 주문대이다. 메뉴판과 조그만한 키오스크가 우릴 반겨준다.

메뉴판에서 가장 현란한 "웨이프 커피" 가 이 가게의 메인인 것 같다.

언니는 이 메뉴를 먹여주고싶어서 나를 이곳에 데리고 온 것이라 했다.

나는 우유를 먹지 못한다. 정확히 말하면 유당불내증을 갖고있다.

내 몸으로 실험해봤을땐 한..200ml 까지는 먹을 수 있긴한데 그 이상 먹으면 배에 극심한 통증이..ㅋㅋ..

하지만, 유당 불내증을 해소해줄 수있는 락타아제를 들고다녀서 먹을 수 있었다.

언니한테 약 먹을까요? 물어보니까 약을 먹어서라도 꼭 먹어봐야하는 커피라고 했다.

도데체 어떤 커피일까 궁금한 마음을 갖고 웨이프 커피를 주문했다.

잠시 뒤, 웨이프 커피가 나왔다.

우리는 보통 커피를 받으면 본능적으로 커피를 저어 먹으려고 빨대를 찾는다.

나도 그랬다.

커피를 사장님이 가져다 주셨는데, 빨대를 주지 않았다.

빨대를 찾으니 사장님은 빨대를 사용하지 말고, 커피를 젓지도 말고 그대로 마셔보라고 권유해주셨다.

한번 마셔봤을 때 커피 거품의 부드러움과 우유의 부드러움이 어우러졌다.

라떼? 라고 하기엔 느낌이 묵직하지 않았다.

보통 라떼면 묵직한 맛이 느껴지기 마련인데 여기는 생각보다 가벼운 느낌이었다.

생각보다 너무 맛있고 일반 커피집에서 먹어 볼 수 없는 맛이므로 기회가 된다면 꼭 먹어보길 바란다.

커피를 먹으면서 보이는 인테리어들도 너무 예뻤다.

 

영등포 구청에 갈 일이 있거나, 사시는분들은 한번 가보시는걸 추천한다.

오늘 맛있는 커피를 먹여준 언니한테 감사하며 오늘은 여기까지 :)

 

'리뷰 > 카페' 카테고리의 다른 글

판교역 유명 카페 알레그리아 후기  (2) 2024.11.16

요즘 애매한 가을 날씨라 보일러를 틀기도 애매해서 전기난로를 켜기 시작했다.

문득 난로를 켜다 집에 불이나면 어떡하지? 라는 생각에

소화기를 주문했다.

집 인테리어도 중요했기 때문에 나는 고민에 빠져버렸다.

예쁜 소화기를 사자니 소화기가 2배 3배 가격이 비싸지고,

일반 소화기를 사자니 집 인테리어와 너무 안맞는다.

고민끝에 나는 소화기 커버를 주문하기로 했다.

소화기 커버도 여러 종류가 있었는데, 우리집이 우디한 인테리어기 때문에 소화기 커버도 나무로 되어있었으면 했다.

찾아보니 모두 철제였고 그 중 마음에 드는 우드 스타일 커버 하나를 발견했다.

가격은 조금 비싸지만, 비싼 소화기나 비싼 커버나 똑같다고 생각해 주문했다.

소화기 커버를 처음 뜯었을 때 냄새가 좀 많이 났다. 리스냄새같기도 하고..

아무튼 베란다에 3시간 방치하니 없어지긴 했다.

소화기 커버 옆모습이다. 우드우드한게 너무 예쁘다.

소화기를 넣은 커버의 모습이다.

빨간 소화기가 살짝 보여서 더 예쁜 것 같다.

소화기 뒷면은 이렇게 생겼다.

뒷쪽에 구멍이 있어 소화기를 넣을 수 있다.

이 소화기 커버의 장점은 들고다니기 편하게 손잡이가 있다는 점

그리고 바닥에 고무받침도 있어 바닥에 있어도 움직이지 않는다.

소화기가 집에 있어야 할것 같긴 한데, 인테리어때문에 고민이었던 분들에게 소화기 커버를 추천한다.

소화기 커버 위에 화분을 비치하여 인테리어를 더 꾸밀 수 있고,

못생긴 소화기를 예쁜 빨간 무언가로 바꿔줘서 보기싫은것도 해결됐다.

아래는 제품 링크이다. 최저가로 찾으려 했는데 아래 위치 말고는 똑같은 제품을 찾기 힘들었다.

끝!

string s = "Zbcdefg";

string str = new String(s.ToCharArray().OrderByDescending(x => x).ToArray());

Console.WriteLine(str);

 

결과값 : gfedcbZ

============================================

string s = "gfedcbZ";

string str = new String(s.ToCharArray().OrderBy (x => x).ToArray());

Console.WriteLine(str);

 

결과값 : Zbcdefg

 

참고 및 출처 : scalability.tistory.com/28

어디서든 쓸수있는 DeepCopy 클래스

아 이번에 자꾸 어디서 알수없는 래퍼런스 자료구조가 자꾸 바뀌어서 딥카피로 해결했다

딥카피만세

1
2
3
4
5
6
7
8
9
10
11
12
13
public class StaticDeepCopy
{
    public static T DeepClone<T>(T obj)
    {
        using (var ms = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            return (T)formatter.Deserialize(ms);
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

예제는 다음과 같다. 걍 쓰면됌

Dictionary<string, WatchNode> temp = new Dictionary<string, WatchNode>();

Dictionary<string, WatchNode> deepCopy = StaticDeepCopy.DeepClone(temp);

이렇게 하면 값은 같지만 메모리적으로 temp 와 deepCopy는 전혀 다르당. 

 

아, 단점은 딥카피 하고싶은 자료구조마다 Serializable을 해야된다는것..

1
2
3
4
5
    [Serializable]
    public class WatchNode
    {
        public string test;
    }
 

이런식으로 클래스 위에 Serializable을 해주어야 포멧팅 시리얼라이징이 된다.

MSSQL 빨간줄 없애는 단축키


Ctrl+T


아 MSSQL을 쓰다보면 Table 내용이 바뀌면 프로시저 작성할때 자꾸 빨간줄이 뜬당

이게 틀린건아닌데 SSMS가 테이블이 바뀐걸 빠르게 인식을 못해서 빨간줄이 떠지는거같당

뭐 실행시켜보면 빨간줄임에도 불구하고 실행은 잘 된다. 단지 헷갈릴 뿐이지.. 뭐가틀렷지 하고..

그때 Ctrl+T를 눌러주면 빨간줄이 싹 사라진당 ㅎ.ㅎ 연결을 다시하는 느낌인듯


옛날에 찾아놨는데 까먹어서 다시 찾으려다보니 없길래

여러 단축키 눌러보다가 발견해서 적어놓는당



새 테이블을 만들 때 시퀀스는 SERIAL 즉, 다음과 같이 사용하면 됩니다.

1
2
3
CREATE TABLE table_name(
    id SERIAL
);
cs

 SERIAL pseudo-type을 id 컬럼에 할당함으로써 PostgreSQL은 다음을 수행합니다.

1. 순서 오브젝트를 작성해, 순서에 의해 생성된 다음 값으 열을 디플트로 설정합니다.

2. 시퀀스가 항상 null이 아닌 정수를 생성하기 때문에 NOT NULL 제약조건을 열에 추가합니다.

3. 시퀀스의 소유자를 id 열에 할당합니다. 결과적으로 id열 또는 표를 삭제하면 순서 객체가 삭제됩니다.

즉, 위의 소스는 다음과 동일합니다.

1
2
3
4
5
6
7
8
CREATE SEQUENCE table_name_id_seq;
 
CREATE TABLE table_name (
    id integer NOT NULL DEFAULT nextval('table_name_id_seq')
);
 
ALTER SEQUENCE table_name_id_seq
OWNED BY table_name.id;

cs


세부 내용 및 출처 : http://www.postgresqltutorial.com/postgresql-serial/


기존 컬럼에 자동증가 속성 및 pk 추가

ALTER TABLE table_name MODIFY coulmn_name INT NOT NULL AUTO_INCREMENT PRIMARY KEY;


기존 컬럼에 자동증가 속성만 추가

ALTER TABLE table_name MODIFY coulmn_name INT NOT NULL AUTO_INCREMENT;


자동 속성값 초기화

ALTER TABLE table_name AUTO_INCREMENT = 1;


출처 및 추가내용 : http://hammer.tistory.com/entry/MYSQL-%EC%BB%AC%EB%9F%BC-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80-%EC%86%8D%EC%84%B1-%EB%B3%80%EA%B2%BD-%EB%B0%8F-%EC%B6%94%EA%B0%80-%EC%B4%88%EA%B8%B0%ED%99%94-%EC%BF%BC%EB%A6%AC

안녕하세요. 이번 후기는 이번에 아리따움 10주년 이벤트로 나눠준 플라워 마스크 미니 키트 입니다.

이번 이벤트로 나눠주는 키트는 올해10월 초에 있을 스마트클럽의 스마트 키트에도 포함되어있을건데요, 이번에 저도 이 키트를 탐내고 있던 터라 이번 이벤트를 통해 미리 접하게 되었을때 매우 기대되었습니다. 먼저 키트를 받았을 때 외관은 아래 그림과 같아요

저는 이렇게 4가지 마스크만 들어있는줄 알았는데 시트마스크도 세트로 들어있더라구요

 이렇게 세트로 들어있었어요 ㅎㅎ!

이번 명절을 맞아 가족들과 함께 발라보았습니다.

먼저 엄마 아빠는 인리치드 뉴트리 슬리핑 마스크(달맞이꽃함유)를 발라주고 재웠고여 ㅋㅋㅋ 이부분의 후기는 내일 엄마 아빠의 피부후기를 업데이트 하겠습니다.

우리 이모님한테는 모공관리를 위한 마몽드 포어클린 클레이 마스크(어성초 함유)를 발라주었습니다. 이모님은 바르고 난후에 피부가 더 쫀쫀해진거같다며 너무 좋아하셨어요 ㅎㅎ!! 제가 만져봐도 피부가 부들부들한 느낌이 들었습니다. 그냥 비누도 안하고 단순 물세수만 했는데도 효과가 좋은거같다고 하시네요~

이모랑 같은 제품을 여드름이 좀 있는 사촌동생한테도 발라주었어요 ㅎㅎ

여드름 진정 효과가있다는 어성초이기때문에 여드름이 있는곳에만 발라주었어요.
역시 어성초가 들어있어서 그런지 진정효과도 보이는것 같네요. 사촌동생은 잘 모르겠다하는데 저는 조금 진정된느낌이 드는데요 ㅎㅎ 발라줬을때보다 씻고나왓을때 느낌이 좀더 깨끗한 느낌이었어요.

클레이 마스크는 이모가 매우 좋아해서 울 이모 쓰시라고 드릴 생각입니다 ㅎㅎ 엄마랑 할머니도 하나씩 챙겨드려야겠어요ㅎㅎ!

이번 후기는 아리따움 이벤트로 상품을 제공받아 주관적인 생각으로 작성되었음을 알립니다.

'리뷰' 카테고리의 다른 글

[게스트하우스]목포 청춘 게스트하우스 리뷰  (1) 2018.07.31

http://msdn.microsoft.com/ko-kr/library/3dasc8as(v=vs.80).aspx

'기타' 카테고리의 다른 글

ASYNC vs Thread 강의  (0) 2018.09.07

https://www.youtube.com/watch?v=kdzL3r-yJZY


'기타' 카테고리의 다른 글

MSDN 병렬프로그래밍 링크  (0) 2018.09.07

C# Stopwatch 로 코드 시간재기


1
2
3
4
5
6
7
8
9
//using namespace : using System.Diagnostics;
 
Stopwatch sw = new Stopwatch();
sw.Start();
 
//do work 
 
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + "ms");
cs


C#에 내장되어있는 Stopwatch를 이용하여 work 시간을 잽니다.

링크 : 갓갓깃허브링크!!


출처링크 : Apress

'Network > Tip' 카테고리의 다른 글

슈퍼넷팅 하는법  (0) 2017.12.13
네트워크관리사 1급 필기 후기 2017 1회  (0) 2017.04.13
네트워크 관리사 문제은행  (0) 2017.04.03
Well Known Port 검색 사이트  (0) 2017.03.13

다음과 같이 트랜잭션 에러가 나타날 때 에러를 해소할 수 있는 방법입니다.


에러 메시지 : 

미러 데이터베이스 "test"의 트랜잭션 로그 데이터가 부족하여 주 데이터베이스의 로그 백업 체인을 유지...


에러 해소 방법은 주 서버에서 로그를 백업하여 미러서버에서 NORECOVERY로 복원시켜주면 해결됩니다.

로그 백업은 T-SQL로 작업하겠습니다.


먼저 주 서버에서 작업을 진행합니다.


주 서버의 새 쿼리에서 다음과 같이 쿼리를 작성하고 실행합니다.


backup log test to disk = 'c:\test.log' with init

go


test는 데이터베이스 이름입니다.

'c:\test.log'는 로그를 생성할 경로입니다.


저 명령어는 test 데이터베이스를 'c:\test.log' 의 경로에 백업파일을 만들어라 라는 명령어라고 보시면 됩니다.



이렇게 메시지에 위와같은 문구가 뜨고, 쿼리 실행이 정상적으로 수행되었으면 백업파일이 만들어 진 것입니다.

해당 경로에 들어가서 확인해보세요! (어짜피 그 파일 옮겨야해요!)


다음으로 로그 백업 파일을 주 서버에서 미러 서버로 이동시킵니다.

주 서버에서 생성한 백업 파일을 미러서버로 반드시 옮겨줘야 미러서버에서 복원을 진행할 수 있습니다.


그다음은 미러서버에서 작업을 진행합니다.


미러서버의 새 쿼리에서 다음과 같이 쿼리를 작성합니다.


restore log test from disk = 'c:\test.log'

with norecovery, stats

go


test는 데이터베이스 이름입니다.

'c:\test.log'는 주 서버에서 가져온 백업 파일이 있는 미러서버안의 경로입니다.


반드시 'c:\test.log' 경로에 test.log 파일이 미러서버 안에 존재해야 미러서버가 복원할 수 있습니다.

만약 주 서버의 test.log 파일을 D드라이브에 옮겼다면 'c:\test.log'가 아니라 'd:\test.log'로 수정해야겠죠?



위와 같이 쿼리 메시지가 뜨고, 쿼리가 정상적으로 수행되었으면 성공입니다.


복원이 성공되었으면, 다시 미러링을 T-SQL로 연결해봅니다.


>>T-SQL 연결 방법




2.4 미러링 연결 - 파트너 연결


T-SQL의 파트너 연결은 반드시 미러서버에서 먼저 미러링을 연결(T-SQL 실행)한 후 주 서버를 연결해야 합니다.


미러서버에서 먼저 작업을 진행합니다.


미러서버의 새 쿼리에서 다음과 같이 쿼리를 작성한 후 실행합니다. 아래는 예시 쿼리입니다.


alter database test set partner = 'tcp://192.168.10.207:5022'


test는 데이터베이스 이름입니다.

'tcp://192.168.10.207:5022' 는 주서버 ip주소 및 주서버의 미러링 포트번호 입니다.


명령이 완료되었다는 메시지가 뜨면 성공입니다.


다음으로 주 서버에서 작업을 진행합니다.

명령어는 미러서버와 비슷하지만, ip및 포트 부분이 미러서버의 정보로 변경된 명령어입니다.


alter database test set partner = 'tcp://192.168.10.212 : 5022'


test는 데이터베이스 이름입니다.

'tcp://192.168.10.212 : 5022' 는 미러서버의 ip 주소 및 미러서버의 미러링 포트번호 입니다.



미러링이 성공하면 개체 탐색기를 통하여 아래와 같은 결과를 확인할 수 있습니다.


만약, 쿼리 수행 중 트랜잭션 에러가 발생하는 경우에는 다음 미러링 트랜잭션에러편 에서 해당 에러를 해소할 수 있습니다.

>> 트랜잭션 에러편


종종 나타나는 에러긴 한데, 저도 왜 이런 에러가 발생하는지는 아직 파악하지 못했습니다. 아시는분 댓글 부탁드립니다.

저는 어떤 때는 잘 미러링이 되었다가, 어떤 때는 트랜잭션 에러가 발생했습니다.


주 서버의 미러링 성공시 출력 화면입니다.


미러서버의 미러링 성공시 출력 화면입니다.



이제 미러링을 통해 미러서버에 데이터를 쌓은 후, 미러링 옵션을 이용하여 미러링 주체를 바꾸면 미러서버가 주 서버가 되고, 관련 데이터를 확인하시어 미러링테스트를 완료하면 완벽합니다!


이 포스팅을 작성한 이유는, SSMS 2016 버전의 미러링 버그가 있음을 사람들이 잘 인지하지 못하고 있고, 저 역시 버그인줄 몰랐던 터라 해외사이트를 뒤져가면서 삽질아닌 삽질을 계속 하게 되고 운이 좋아 어느 회사의 문서로 T-SQL이 있음을 알게되었고 이렇게 미러링을 완성할 수 있었습니다.


제가 찾아보았던 내용을 정리하여 다른분들께도 도움이 되었으면 하는 바램에 포스팅을 씁니다. 더이상 삽질하지마세요 ㅠ.ㅠ

2. 미러링 구축하기


2.1 데이터베이스 백업


**주서버에서 작업해줘야하는 부분입니다. 예제에서는 192.168.10.207 서버의 데이터베이스에서 이를 진행합니다.


먼저 미러링을 할 데이터베이스를 백업해줍니다.

미러링을 하려는 주 서버의 데이터베이스를 우클릭후, 테스크>백업 버튼을 눌러 백업창으로 들어갈 수 있습니다.



데이터베이스와 백업 유형을 전체로 설정하고, 백업 구성 요소는 데이터베이스로 선택합니다.

그다음 디폴트값으로 설정되어있는 경로를 제거합니다.

제거한 뒤 추가를 눌러 경로를 재설정 해줍니다.




경로를 재 설정해줄 때, 백업 파일을 찾기 쉽게 하도록 경로를 C:\ 로 두었고, 파일명은 "백업파일명.bak" 로 백업파일을 만듭니다.

예시의 경우엔 test.bak 파일로 만들었습니다.


만약, 운영체제 접근 관련 문제가 발생하여 C:\ 의 경로에 백업파일이 생성되지 않는다면, C:\에 폴더를 하나 생성하고 그 폴더 안에 백업파일을 생성하면 문제가 해결될 것입니다.




2.2 데이터베이스 복원


** 이 작업은 미러서버에서 진행합니다. 예시의 경우엔 192.168.10.212 서버에서 진행합니다.


2.1 에서 했던 백업파일을 미러서버에 이동시켜 적용시킵니다.


미러서버의 데이터베이스에서 우 클릭 후 데이터베이스 복원을 클릭합니다.



주 서버에서 생성했던 백업파일을 미러서버에서 적용시켜줍니다.

적용 방법은 아래와 같습니다.


데이터베이스 복원 창에서 일반 > 원본 메뉴의 장치 라디오 버튼 클릭 후 오른쪽에 ... 버튼 클릭


백업 미디어 유형이 파일인지 확인한 후, 오른쪽에 추가 버튼 클릭


주 서버에서 만들어놓은 백업파일을 미러서버로 옮겨온 뒤 (물리적으로 옮겨옵니다.) 그 파일 적용합니다.


만약, 해당 위치에 파일이 없다면, 주 서버에서 미러서버로 백업파일을 옮겨왔는지 확인합니다.

주 서버에서 백업파일을 생성만 하면 미러서버에서 찾을 수 없습니다. 반드시 미러서버로 백업 파일을 옮겨주세요.

USB로 옮기든, 공유 폴더로 옮기든 미러서버로 가져오셔야 합니다.


다음으로, 파일>데이터베이스 파일 복원 메뉴에서

모든 파일을 폴더로 위치 변경 을 체크해주시는걸 권장 드립니다. (자동으로 미러 서버 경로로 변경되는 효과)


모든 파일을 폴더로 위치 변경을 체크하고 싶지 않다면(미러 서버에 특정 위치에 데이터베이스 파일을 놓아야 한다면), 아래 표의 4번째 셀인 "다음으로 복원" 의 경로를 미러서버에 존재하는 폴더로 경로를 변경해줘야 합니다. 경로를 변경하는 방법은 해당 표에서 더블클릭하면 경로를 변경할 수 있습니다.


위와 같은 방법으로 경로를 변경해줘야 하는 이유는 "다음으로 복원" 의 디폴트 위치가 주 서버의 위치로 되어있기 때문입니다. 주 서버에있는 경로를 미러서버에서 읽으려 하니 에러가 날 수 밖에 없기 때문입니다.


경로는 반드시 행 데이터 파일 형식과 로그 파일 형식 둘 다 변경해주어야 합니다. 마찬가지로 하나만 경로를 변경해주면 다른 하나는 주 서버의 경로로 되어있기 때문에 미러 서버가 경로를 찾지 못할 수 있기 때문입니다.


공교롭게도 미러서버와 주 서버의 위치가 같다면 위의 문제는 일어나지 않습니다.


옵션>복원 옵션 에서 

복구 상태는 반드시 RESTORE WITH NORECOVERY로 설정해줍니다.

이 모드가 가장 성능이 좋다고 합니다.


데이터베이스명 (복원 중...) 이라고 뜨는것이 정상이며, 복원중으로 계속 진행되고 있음이 정상입니다. (복원 완료라고 절대 뜨지 않습니다.)

미러서버의 데이터베이스는 복원 중... 이라고 나와야 합니다. 

(나중에 주서버와 미러서버가 변경되었을 경우에도, 주서버가 미러서버가 되었으면 이제 미러서버가 된 구 주 서버의 데이터베이스의 형태는 복원 중 ... 으로 바뀔 것입니다.)


2.3 미러링 연결 - 마법사

* 이 작업은 주 서버에서 진행됩니다.


주 서버의 데이터베이스 우클릭 후, 테스크 > 미러 로 들어갑니다.


미러링에 대해 찾아봤으면 알겠지만, 미러링 모니터 서버를 추가로 구성하려면 위의 예를 누르는게 맞습니다.

하지만 본 예제에선 미러링 모니터를 설정하지 않을 것이기 때문에 아니오로 진행됩니다.


만약, 여러분들 중, 미러링 모니터도 설정해야 한다면, 예를 눌러 미러링 모니터도 설정할 수 있습니다. 미러링 모니터는 연결해보지 않아서 정확하게 말씀드릴 수 없습니다.


주 서버 인스턴스는 미러링을 하기 위해 선택한 데이터베이스 (주 서버) 의 이름으로 적용됩니다. 

저는 IP로 인스턴스 이름을 설정하였지만, 서버 이름이 검색되면 서버 이름으로도 연결이 됨을 확인하였습니다.


포트 및 끝점 이름은 사용자에 의해 변경될 수 있습니다. 만약, 포트가 변경되었으면 "미러링 구축하기 1편의 1.5 방화벽 포트 확인" 및 나중에 연결할 "2.4 미러링 연결 - 파트너 연결" 시 변경된 포트로 적용해야 합니다.



미러서버 인스턴스는 미러링을 연결하기 위해 복원한 데이터베이스(미러 서버)가 있는 서버를 연결해줍니다.

주 서버와 마찬가지로 서버 이름으로 연결했을 시 연결됨을 확인하였습니다.


미러 서버 인스턴스를 보면 <더 찾아보기...>를 클릭하여 연결할 수 있는 창이 뜨고, 연결할 서버의 IP(미러서버) 주소를 입력한 뒤, SA 계정으로 로그인을 수행하면 됩니다.


포트 및 끝점은 사용자에 의해 변경될 수 있습니다.

만약 포트가 변경되었다면 주 서버와 마찬가지로 "미러링 구축하기 1편의 1.5 방화벽 포트 확인" 및 나중에 연결할 "2.4 미러링 연결 - 파트너 연결" 시 변경된 포트로 적용해야 합니다.


SQL Server 2016의 경우에는 미러링 GUI 설정 방법에 문제가 있기 때문에 T-SQL을 이용하여 연결해줘야 합니다..

SQL Server 2012 에서는 미러링 시작 버튼을 눌렀을 때 정상작동을 확인 했습니다. 

본 예제에서는 SQL Server 2016 에서 진행하기 때문에 T-SQL을 이용하여 미러링 연결을 시도합니다.


SQL Server 2016은 버그가 있기 때문에 T-SQL 연결로 시도해야 하는데

그 연결방법은 3편에서 진행됩니다.

MSSQL SQL Server 2016 미러링 구축하기 - 1편


본 포스팅은 SQL Server 2016에 관한 포스팅이 보이지 않아 고초를 겪고 있을 사람들을 위해 정리하였습니다.

SQL Server 2016은 미러링시 약간의 버그가 있음을 확인하였고, 그 버그 부분만 잘 넘겨주시면 기존에 정리되어있는 SQL Server 2012와 동일하게 이용하실 수 있습니다.

버그는 Server 2016은 미러링설정 중, 특정 부분(미러링을시작하는 부분)이 GUI로 해소되지 않음인데 그 부분은 여기에 자세히 나와있습니다.


1. 미러링 환경 및 주의사항


다음 표는 본 예제의 환경입니다.


 

 주 서버

 미러 서버

 OS

 Window Server 2016

 Window Server 2016 

 SQL Server

 SQL Server 2016 

 SQL Server 2016 

 Server Name

 192.168.10.207 

 192.168.10.212 

 Mirroring Port

 5022

 5022

 Sql Port

 1433

 1433 

 Database Name

 test


본 예제의 미러링 연결 모드는 동기화 방식이며 장애조치가 없는 보호 우선 모드로 진행합니다.

또한 본 예제는 서로다른 ip에서 미러링을 하는 것이기 때문에, 미러링 포트는 동일하게 하여도 상관 없습니다.


1.1 SQL Server Version 확인


미러링을 진행하실 때는 주 서버와 미러 서버의 SQL Server가 반드시 동일해야 합니다.

예를 들어, 주 서버가 SQL Server 2016을 사용한다면 미러 서버도 반드시 SQL Server 2016을 사용하여야 합니다.



1.2 동일한 window 계정 존재 확인


주 서버의 Windows 계정에 대한 아이디, 패스워드는 미러서버의 Window 계정에 대한 아이디, 패스워드와 반드시 동일해야 합니다.

▲ 주 서버의 Windows 계정


▲ 미러 서버의 Windows 계정


반드시 계정이 Administrator일 필요는 없으며, test 계정을 만들어 사용해도 상관이 없습니다.

단, 주 서버에 test 계정과 계정의 패스워드가 생성되어야 하고, 미러 서버에도 주 서버와 "동일한" 아이디인 test 계정과 주 서버와 "동일한" 패스워드로 생성 되어야 합니다.


본 예제에서는 Administrator 계정으로 진행될 예정입니다.



1.3 SQL Server의 계정 동일화


SQL Server의 계정은 주 서버와 미러 서버 모두 동일하게 맞춰줘야 합니다.

가급적이면 위에서 "1.2 동일한 window 계정 존재 확인" 에서 맞춰주었던 계정(본 예제에서는 Administrator)을 이용하는 것을 추천합니다.


시작 > SQL Server 2016 구성관리자


▲ 구성 관리자 선택


SQL Server 서비스 > SQL Server (MSSQLSERVER) 우 클릭 > 속성


▲ SQL 속성 선택


찾아보기를 클릭하여 계정 선택


반드시 계정을 선택할 땐 "1.2 동일한 window 계정 존재 확인" 에서 확인했던 동일한 계정으로 설정합니다.

본 예제에서는 Administrator로 선택하였지만, 혹여나 다른 계정으로 만들었으면 그 계정을 선택하여야 합니다.


▲ 계정 선택


▲ 계정 선택


▲ 반드시 "1.2 동일한 window 계정 존재 확인" 에서 확인했던 계정으로 선택!!


▲ 확인을 눌러 계정 선택


다음으로, "1.2 동일한 window 계정 존재 확인" 에서 확인했던 계정과 같은 비밀번호를 입력합니다.


▲ 비밀번호 입력 및 계정 변경 완료


▲ 서비스 재시작


다음과 같이 SQL 계정이 변경되었는지 확인합니다.


▲ SQL 계정 변경 확인


반드시 미러 서버도 확인하여 주 서버와 같이 계정을 동일하게 변경하여 줍니다.


아래의 JYTEST 서버는 이중 서버 테스트이니 본 미러링과는 상관이 없습니다. 신경쓰지마세여~


1.4 SSMS 의 로그인 계정 확인


주 서버와 미러 서버 모두 로그인 계정("1.3 SQL Server 계정 동일화"에서 설정한 계정)이 있는지 확인합니다. (반드시 미러서버도 확인해주세요.)

예제에서는 Administrator로 계정이 설정되어 있습니다.


SSMS에 들어가셔서 보안>로그인 에서 계정이 있는지 확인합니다.




로그인 계정을 확인 했으면 "1.5 방화벽 포트 확인"으로 넘어가시고, 로그인 계정이 없으면 다음과 같은 절차로 계정을 만들어놔야 합니다.


<< SSMS DB Window 인증 계정 만들기 >>


로그인 우 클릭 > 새 로그인



윈도우 인증 선택 후 검색



고급 클릭




지금 찾기 > 해당 계정 선택(예시의 경우 Administrator) > 확인


서버 역할 > sysadmin 체크



상태 > 로그인 사용 체크 > 확인  이 부분 매우 중요!! 사용 안함으로 하면 해당 계정을 사용할 수 없음!



미러서버도 반드시 위와 같이 계정이 있는지 확인한 후, 없다면 계정을 생성하여 활성화 시켜주어야 합니다.


1.5 방화벽 포트 확인


서버관리자 > 도구 > 고급 보안이 포함된 windows 방화벽 클릭



SQLPort(1433) 포트와 Mirroring Port(5022) 및 ping 관련 포트를 인바운드 규칙에 추가시켜줍니다.

위의 포트는 예시 포트이며, 다른 포트를 사용하신다면 사용하시는 포트를 인바운드 규칙에 추가시켜주어야 합니다.

Ping은 윈도우 10의 경우, 보안 규칙으로 인해 막혀있으니 풀어주시길 권장드립니다.
(Ping 이 막혀있어서 미러링이 안됐었던적이 있어서 ㅠㅠ)


아래 그림과 같이 작업을 허용시켜줍니다. 



포트를 추가하는 방법은 다음과 같습니다.


<< 방화벽에 포트 추가하는 방법 >> 


본 예시는 1433 포트를 추가하는 예시로 들 것이니, 5022 포트나 다른 포트 추가 방법은 아래의 방법을 응용하여 추가하십시오.


새 규칙을 클릭하여 새로운 규칙을 만듭니다.



다음 절차에 따라 포트를 추가합니다. 본 예시는 1433 포트를 추가하는 방법입니다. 포트 번호를 바꿔 응용하시면 됩니다.



주 서버와 미러서버 모두 3개의 포트(sql port, mirroring port, ping) 총 6개의 포트를 열어 주어야 합니다.

win10의 경우, ping 포트는 인바운드 규칙에 등록되어 있으니 해당 규칙을 활성화시켜주기만 하면 됩니다.


여기까지 미러링 준비가 완료되었습니다. 위의 조건이 충족되어야만 미러링이 정상적으로 연결되니, 조건을 반드시 확인해주시기 바랍니다.


다음 2편에서는 미러링 구축 본격적으로 해보도록 하겠습니다.

얼마전 목포로 여행을 가게 되어 계획을 짜던 중 잠 잘 곳을 찾아보았다.

호텔은 너무 비싸고, 모텔은 싫다는 생각이 들어 게스트하우스를 찾아보던 중 청춘 게스트하우스 라는곳이 한옥테마이고, 윗쪽으로는 목포의 유명한 산인 유달산과, 벽화마을을 바로 갈 수 있어 지리적 위치도 괜찮은것 같고, 깔끔하고 예뻐서 선택하게 되었다.


예약후기는 있는데 블로그후기는 하나도 없어 반신반의했지만 다른 곳은 화장실이 없거나 불편해보이기도 하고, 이곳이 제일예뻐서 일단 예약했다.


목포 게스트하우스에 도착하면 카페처럼 보이는데, 카페 옆에 있는 작은 대문으로 게스트하우스에 들어갈 수 있다. 카페처럼 보이는곳이 게스트하우스의 쉼터같은 곳이라고 했다 ㅋㅋ


주인언니 말로는 사람들이 카펜줄알고 들어오시는 분도 많다고 그랬다. 나같아도 착각할듯 ㅋㅋ


사진을 몇개 찍어왔는데 너무 이쁘다.



▲ 게스트하우스의 복도 사진이다. 복도가 꼭 마루같은 느낌이 난다. 인테리어도 너무 예뻤다.





▲ 문이 너무 예쁘고 독특해서 찍어보았다. 옛날 문인 창호지? 같은 느낌 나는거같은데 너무 신선했다.





▲안쪽으로는 복층형으로 올라가면 조금 특별한 분위기를 느낄 수 있었다. 친구들과 복층에서 보드게임을 즐겨도 좋을 듯 하다! 다음엔 저기서 해봐야지 ㅎㅎ





▲게스트하우스의 주의사항이다. 


옆 게스트하우스의 사람들을 배려해주자는 내용의 주의사항인것 같다. 덕분에 조용히 잠자리에 들 수 있었다.


밤늦게 즐기고싶은 사람들은 게스트하우스의 쉼터인 요 앞 카페같은 느낌나는 곳에서 즐길수 있도록 보드게임과 책 등이 마련되어 있다.


빔프로젝트도 있으니 혹시 써야하는 분들은 주인언니의 허락을 구해보면 어떨까 싶다 ㅎㅎ!


위의 스티커들은 비밀번호 및 주인언니 연락처라 혹시 몰라 가려두었다. 주인언니 연락처는 아래 블로그를 링크걸어두도록 하겠으니 참고하실분은 참고하시길 바란다.




▲ 이 게스트하우스를 추천하고 싶은 이유중에 가장 베스트한 이유!! 침구가 너무 좋았다 ㅠㅠㅠㅠ


침구가 너무 푹신푹신하고, 분명 침대가 아닌데도 침대같은 느낌이 들었다.


잠자리가 예민하신 분들은 이 게스트하우스를 이용해 보시기 바란다!


진짜 여기 침구 채고!!!!!!! 침구 그대로 집가져가고 싶었어ㅠㅠㅜㅜㅠㅜㅠ


지친 여행길 이 침구로 모두 풀 수 있었다. 주인언니한테 어디서 사셨냐고 물어보기까지 했었는데.. 서울에서 사왔다고 하시는 이야기를 듣고 열정에 감탄했다





▲ 마지막으로 화장실 사진이다. 화장실이 너무 넓고 깨끗했다. 샴푸랑 컨디셔너, 바디워시가 있었는데 내가 가져온 트래블키트를 캐리어에서 꺼내지 않아도 될 정도로 괜찮았다. 실제로 난 이곳에서 제공해주는것을 써봤는데 괜찮았다. 이 게스트하우스를 묵을 예정이라면 칫솔만 가져가면 될 것 같다.


이 게스트하우스에서 가장 좋았던 점 두번째는 바로 규조토 발매트가 있다는점! 규조토 발매트 덕분에 수건을 굳이 깔지 않아도 되었고, 맨발로 들어갔다 나와야 하는 상황에서도 뽀송하게 실내를 돌아다닐 수 있었다. 규조토 채고 ㅠㅠ!



이번에 목포를 처음 가봤는데 운좋게 좋은 게스트하우스를 잡아서 편하게 쉬다 간것 같아서 좋았다.

편한 여행을 계획하시고 계시는분, 유달산 주변이나 유달산 벽화마을을 갈 예정이 있으신분, 잠자리가 예민하신분 혹은 특별한 한옥 테마로 여행하고싶으신분들에게는 이 게스트하우스를 추천한다. 


보드게임도 제공해주고, 예쁘신 주인언니가 조식도 정성껏 챙겨주신다.조식은 맛있는 샌드위치였따.

핸드드립으로 커피도 내려주시는데 짱짱맛있었다!!!



주인언니가 운영하는 블로그 링크를 걸어둘테니 관심있으신분들은 타고 들어가 보길 바라며~


청춘 게스트하우스 블로그 링크 : https://m.blog.naver.com/PostList.nhn?blogId=s3586s


*본 포스팅은 직접 내돈내고 체험한 것으로 돈을 받고 포스팅함이 아님을 밝힙니다.




태그 : #목포여행 #목포게스트하우스 #목포한옥게스트하우스 #목포 #한옥 #게스트하우스 #잠자리가편한 #청춘 #청춘게스트하우스 #예쁜게스트하우스 #분위기있는게스트하우스 #유달산 #유달산주변 #유달산주변게스트하우스 #목포벽화마을주변 #목포벽화주변게스트하우스 #4인게스트하우스 #친구들과가기좋은게스트하우스 #화장실깨끗한게스트하우스

[DataContract], [DataMember] 사용 네임 스페이스


1. 해당 프로젝트의 참조 > 참조추가 > 어셈블리 > 프레임워크


System.Runtime.Serialization 을 추가


2. using 추가


using System.Runtime.Serialization; 입력

+ Recent posts