BackEnd๐ฑ/DB & SQL13 select .. for update ๋์ ์ ๋ฌด์ ๋ฐ๋ฅธ ์ ๊ธ ์ํ ๊ฐ์ InnoDB ์์ง์ ๊ธฐ๋ณธ์ ์ผ๋ก DDL ์ฟผ๋ฆฌ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฐ์ดํฐ ์กฐ์ ์์ ์์ ํ ์ด๋ธ ๋ฝ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ๋ ์์ธํ๋ ๋ ์ฝ๋ ์์ฒด๋ณด๋ค๋ ์ธ๋ฑ์ค์ ์ ๊ธ์ ์ค์ ํ์ฌ ์ด๋ฃจ์ด์ง๋ฉฐ, ํ ์ด๋ธ์ ๋ช ์์ ์ธ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ด๋ถ์ ์ผ๋ก ์์ฑ๋ ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ธ์ด ์ด๋ฃจ์ด์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ Repetable-Read ๊ฒฉ๋ฆฌ ์์ค์์ InnoDB๋ record lock๊ณผ gap lock์ ๊ฒฐํฉํ Next-key lock์ ํ์ฉํ์ฌ Phantom Read๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ์กฐ๊ฑด์ ๋ถํฉํ๋ ํน์ ํ์ ์ฐพ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ์ค์บํ๋ ๊ณผ์ ์์, InnoDB๋ ํด๋น ์ธ๋ฑ์ค ๋ ์ฝ๋๋ฟ๋ง ์๋๋ผ ๊ทธ ์ด์ ๊ณต๊ฐ์๋ ์ ๊ธ์ ์ค์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋ฐ๊ฒฌ๋ ๋ ์ฝ๋์ ์ฟผ๋ฆฌ๊ฐ ์ ์ํ ๋ฒ์ ๋ด์ .. 2024. 4. 11. [Docker MySQL] Proxy Layer ๊ตฌ์ถํ๊ธฐ ๊ฐ์ ์ด์ ๊ฒ์๊ธ [Docker MySQL] Orchestrator๋ฅผ ์ด์ฉํ High Availability(HA) ๊ตฌ์ถํ๊ธฐ์์ ๋ง์คํฐ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ฅผ ๋ง์คํฐ ์๋ฒ๋ก ์น๊ฒฉ์ํค๋ ๊ณผ์ ์ ์๋ํํ๋ Orchestrator๋ฅผ ํ์ฉํ ๊ณ ๊ฐ์ฉ์ฑ(High Availability, HA) ๊ตฌ์ฑ์ ๋ํด ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ง์คํฐ ์๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก ์ฌ๋ ์ด๋ธ ์๋ฒ์ ๋๊ธฐํ๋๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ง์คํฐ ์๋ฒ์ ๋ถํ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ถ์ฐ์ํฌ ์ ์์์ต๋๋ค. ํ์ง๋ง, HA ๊ตฌ์ฑ๋ง์ผ๋ก๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ DB ์๋ฒ ์ฌ์ด์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ณด์๋ ์ฅ์ ๊ฐ ๋ฐ์ํ db001์ด ๋ง์คํฐ DB๋ก ์ค์ ๋์ด ์๋ค๋ฉด.. 2023. 11. 12. [Docker MySQL] Orchestrator๋ฅผ ์ด์ฉํ High Availability(HA) ๊ตฌ์ถํ๊ธฐ ๊ฐ์ ์ด์ ๊ฒ์๊ธ [Docker MySQL] Master-Slave Replication(๋ณต์ ) ๊ตฌ์ถํ๊ธฐ์์ MySQL์ Master-Slave ๋ณต์ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ง์คํฐ ์๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก ์ฌ๋ ์ด๋ธ ์๋ฒ์ ๋๊ธฐํ๋๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ง์คํฐ ์๋ฒ์ ๋ถํ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ถ์ฐ์ํฌ ์ ์์ต๋๋ค. ํ์ง๋ง, ๋ง์คํฐ ์๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ค๋จ๋๋ฉด, ์ฌ๋ ์ด๋ธ ์๋ฒ๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ ์ด์์๊ฐ ์ง์ ์กฐ์น๋ฅผ ์ทจํ๊ธฐ ์ ๊น์ง๋ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ฅผ ๋ง์คํฐ ์๋ฒ๋ก ๋์ฒดํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋ฌธ์ ๊ฐ ๋ํ ์กด์ฌํ์์ต๋๋ค. ์ด๋ฒ ๊ฒ์๊ธ์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง์คํฐ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ฅผ ๋ง์คํฐ ์๋ฒ๋ก ์น๊ฒฉ์ํค๋ ๊ณผ์ .. 2023. 11. 6. [Docker MySQL] Master-Slave Replication(๋ณต์ ) ๊ตฌ์ถํ๊ธฐ ๊ฐ์MySQL์ Master-Slave Replication์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ(Consistency) ๋ฐ ๊ฐ์ฉ์ฑ(Availability)์ ๋ณด์ฅํ๊ธฐ ์ํด ๋๋ฆฌ ์ฐ์ด๋ ๊ธฐ์ ์ ๋๋ค. ์ด ๊ธ์์๋ Docker๋ผ๋ ์ปจํ ์ด๋ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ MySQL ํ๊ฒฝ์์ Master-Slave Replication์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด ์ค๋ช ํ๊ฒ ์ต๋๋ค.Master-Slave Replication ๊ตฌ์ฑํ๊ธฐBridge Network์ ์ด์ฉํ Replication ๊ตฌ์ฑ Replication ๋์ ์๋ฆฌMySQL์ ๋ณต์ ๊ธฐ๋ฅ์ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ฌํญ์ ๋ง์คํฐ ์๋ฒ์์ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ก ๋ณต์ฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํฌ๊ฒ 4๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋๋ค.๋ณ๊ฒฝ์ฌํญ์ ๊ธฐ๋ก: ํด๋ผ์ด์ธํธ๊ฐ.. 2023. 11. 1. [MySQL] MVCC๋ฅผ ํตํ ์ ๊ธ์๋ ์ฝ๊ธฐ [MVCC(Multi Version Concurrency Control)] MVCC๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋์์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๊ธฐ์ ์ ํต์ฌ์ ์ ๊ธ(Locking) ์์ด ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด๋๊ฒ ์ฝ๋ ๊ฒ์ด๋ฉฐ, InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ธ๋ ๋ก๊ทธ(Undo log)๋ฅผ ํ์ฉํฉ๋๋ค. '๋ฉํฐ ๋ฒ์ '์ ๋์์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค๋ ๊ฐ๋ ์ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ 'member' ํ ์ด๋ธ์ ์์ฑํ๊ณ ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. CREATE TABLE member ( m_id INT NOT NULL, m_name VARCHAR(20) NOT NULL, m_area VARCHAR(100) NOT NULL, PRIMA.. 2023. 10. 7. [MySQL] ์ฌ์ฉ์ ์์ฑ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฐฉ๋ฒ [๊ฐ์] MySQL์ ์ฌ์ฉ์ ๊ณ์ ์ ๊ด๋ฆฌ ๋ฐฉ์์ด ๋ค๋ฅธ DBMS์ ์ฝ๊ฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค ๋ง์ DBMS์์๋ ์์ด๋๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํ์ง๋ง, MySQL์ ์ฌ์ฉ์ ์์ด๋ ์ธ์๋ ์ ์ํ๋ IP ์ฃผ์๋ฅผ ํจ๊ป ๊ณ ๋ คํ์ฌ ๋์ฑ ์ ๋ฐํ ์ ๊ทผ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ, MySQL 8.0 ๋ฒ์ ๋ถํฐ๋ '์ญํ (ROLE)'์ด๋ผ๋ ๊ฐ๋ ๋ ๋์ ๋์๊ณ , ์ด๋ฅผ ํตํด ๋ฏธ๋ฆฌ ์ ์๋ ๊ถํ ๊ทธ๋ฃน, ์ฆ 'Role'์ ์ฌ์ฉ์์๊ฒ ์ฝ๊ฒ ๋ถ์ฌํ ์ ์๊ฒ ๋์์ต๋๋ค. [์ฌ์ฉ์ ์๋ณ] ๊ณ์ ๊ณผ ํธ์คํธ๋ช ๋๋ถ๋ถ์ DBMS๋ ๊ณ์ ์ด๋ฆ๋ง์ผ๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํ์ง๋ง, MySQL์ ์ฌ์ฉ์์ ๊ณ์ ๊ณผ ์ ์ ์ง์ (ํด๋ผ์ด์ธํธ ํธ์คํธ๋ช , ๋๋ฉ์ธ, IP ์ฃผ์)์ ๋์์ ๊ณ ๋ คํฉ๋๋ค. ๋ฐ๋ผ์ MySQL ๊ณ์ ์ ์ธ๊ธํ ๋๋ ์๋์ ์์ฒ๋ผ ์์ด๋์ ํธ์คํธ ์ ๋ณด๋ฅผ ๋ช ์ํด์ผ ํฉ๋๋ค. 's.. 2023. 10. 6. MySQL์์ VARCHAR์ TEXT์ ์ฐจ์ด ๊ฐ์ MySQL์ ๋ฌธ์์ด๋ฐ์ดํฐ ํ์ ์ค VARCHAR์ TEXT๋ ์๋นํ ํํ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋์ VARCHAR๋ 255byte๋ง ์ง์ํ์ง๋ง, MySQL 5.0.3 ์ดํ๋ก VARCHAR์ TEXT ํ์ ๋ชจ๋ ์ต๋ 65,535byte ๊ธธ์ด๋ฅผ ์ง์ํ๊ฒ ๋์์ต๋๋ค. VARCHAR์ TEXT๋ ๋ ๋ค ๋ฌธ์์ด์ ์ ์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ํ์ ์ด๋ฉฐ, ๋์ ์ฃผ์ ์ฐจ์ด์ ๊ณผ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ์ฅ ์ฉ๋ VARCHAR์ ์ ์ฅ ๊ตฌ์กฐ VARCHAR๋ ์ต๋ 65,535byte๊น์ง ์ ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ, '(ํ์ฌ ์ ์ฅ๋ byte์ ํฌ๊ธฐ) + (๊ธธ์ด๋ฅผ ํํํ๋ byte)'๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด 'apple'์ ๊ฒฝ์ฐ, ๋ฌธ์์ด 'apple'์ 5byte์ด๋ฉฐ, ๊ทธ ๊ธธ์ด๋ฅผ ํํํ๋ ๋ฐ์ดํธ๋ 1byte์ด๋ฏ๋ก ์ด 6byte๊ฐ ํ์ํฉ๋๋ค. ์ฌ.. 2023. 9. 17. Redis์ ๋ฐ์ดํฐ ํ์ , ๋ช ๋ น์ด์ ํ์ฉ ์ฌ๋ก ๊ฐ๋จ ์์ฝ ๋ฐ์ดํฐ ํ์ ๋ช ๋ น์ด ์ค๋ช ์์ Strings SET ๊ฐ ์ ์ฅ `$ SET key value` GET ๊ฐ ์กฐํ `$ GET key` Lists LPUSH ์ผ์ชฝ๋ถํฐ ๊ฐ ์ถ๊ฐ `$ LPUSH mylist value` LPOP ์ผ์ชฝ์์ ๊ฐ ์ ๊ฑฐ `$ LPOP mylist` LINDEX ํน์ ์์น์ ๊ฐ ์กฐํ `$ LINDEX mylist 0` Sets SADD ๊ฐ ์ถ๊ฐ `$ SADD myset value` SMEMBERS ๋ชจ๋ ๋ฉค๋ฒ ์กฐํ `$ SMEMBERS myset` Sorted Sets(ZSets) ZADD ๊ฐ ๋ฐ ์ ์ ์ถ๊ฐ `$ ZADD myzset score member` ZRANK ํน์ ๋ฉค๋ฒ์ ์์ ์กฐํ `$ ZRANK myzset member` ZRANGE ์ ์ ๋ฒ์๋ก ๋ฉค๋ฒ ์กฐํ `$ ZR.. 2023. 9. 5. ์ค๋ฌด์์ Redisson์ ์ฐ๊ฒฐํ๋ฉด์ ๊ฒช์ ๋ฌธ์ ์ ๋ค Redisson์ ์ค๋ฌด์ ์ ์ฉํ๋ฉด์ ๊ฒผ์๋ ์ฐ๊ฒฐ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ์ฒซ ๋ฒ์งธ๋ก, ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redissonClient' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: [Redis ์ฃผ์] at org.springframework.beans.factory.su.. 2023. 8. 18. ์ด์ 1 2 ๋ค์