이전글
25년 DB 공부 (1) 환경설정, 로컬에 docker로 MySQL 띄우기
서론회사에서 aws 위의 Aurora MySQL cluster의 업그레이드를 준비하면서, DB 자체에 대한 공부가 부족한 것을 느꼈다.늘 공부해도 다른 부분에서 부족한 것 같은 느낌이 든다.무튼, 매번 새로운 걸 하
naa0.tistory.com
실습용 스키마 및 계정 생성
primary DB 접속
가장 먼저, docker exec -it mysql1 mysql -uroot -prootpass 로 primary DB에 접속해준다.
실습용 스키마 생성
먼저, 실습용으로 사용할 스키마를 생성해준다.
- CREATE DATABASE binlog_test;
실습용 계정 생성
계정 및 패스워드를 생성해주고, 해당 계정에 위의 스키마에 대한 전체 권한을 부여한다.
- CREATE USER 'naa0'@'%' IDENTIFIED BY 'skdud';
- GRANT ALL PRIVILEGES ON binlog_test.* TO 'naa0'@'%';

DML 날려보기
테이블 생성하기
- 스키마 사용하기
- USE binlog_test;
- CREATE TABLE orders (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
product VARCHAR(64) NOT NULL,
qty INT NOT NULL,
price DECIMAL(10,2) NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
위와 같이 명령어를 수행하고 나면, SHOW TABLES; 및 SHOW COLUMNS ~; 명령어를 통해 잘 생성되었는지도 확인할 수 있다.


CUD 수행 해보기
- -- INSERT (3개 데이터 추가)
INSERT INTO orders(product, qty, price)
VALUES ('pen', 10, 1.20), ('notebook', 5, 3.50), ('eraser', 3, 0.80); - -- UPDATE (특정 조건 수행)
UPDATE orders SET qty = qty + 2 WHERE product='pen'; - -- DELETE (1행)
DELETE FROM orders WHERE product='notebook' LIMIT 1; - -- 전체 가격 10% 인상 (여러 행 UPDATE)
UPDATE orders SET price = price * 1.10;


롤백해보기
트랜잭션 후에 롤백을 해보고, 추후에 이게 어떤 식으로 binlog에 남는 지 보려고 한다.
SET autocommit=0;
START TRANSACTION;
INSERT INTO orders(product, qty, price) VALUES ('pencil', 4, 0.50);
UPDATE orders SET qty = qty - 1 WHERE product='eraser';
ROLLBACK;
START TRANSACTION;
INSERT INTO orders(product, qty, price) VALUES ('marker', 2, 2.40);
COMMIT;
SET autocommit=1;
'DevOps' 카테고리의 다른 글
| 25년 DB 공부 (1) 환경설정, 로컬에 docker로 MySQL 띄우기 (3) | 2025.08.14 |
|---|