728x90
MySQL 엔진 및 MySQL MHA를 설치하고 구성하는 방법
Ubuntu 서버 3대
- mhauser 계정 생성
- SSH 키 교환(SSH를 통해 서로 연결된 서버)
MySQL 엔진 설치
MySQL 초기화
mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql
MySQL root 계정 패스워드 초기화
cat /usr/local/mysql/data/error.log | egrep "A temporary password is generated for root@localhost"
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
mysql -uroot -p
alter user 'root'@'localhost' identified by 'mysql_root_password1!';
FLUSH PRIVILEGES;
MySQL 엔진 재시작
- shutdown
mysqladmin -u root -p'mysql_root_password1!' shutdown
- start
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
MySQL 계정 생성
mysql -u root -p'mysql_root_password1!'
MySQL에서 mhauser 계정 생성(mhauser 계정 생성(mhauser/mysql_mhauser_password1!))
use mysql;
CREATE USER 'mhauser'@'192.168.56.%' IDENTIFIED WITH 'mysql_native_password' BY 'mysql_mhauser_password1!';
GRANT ALL ON *.* TO 'mhauser'@'192.168.56.%';
FLUSH PRIVILEGES;
SELECT Host,User,plugin,authentication_string FROM mysql.user WHERE user = 'mhauser';
MySQL에서 repluser 계정 생성(repluser 계정 생성(repluser/mysql_repluser_password1!))
use mysql;
CREATE USER 'repluser'@'192.168.56.%' IDENTIFIED WITH 'mysql_native_password' BY 'mysql_repluser_password1!';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.56.%';
FLUSH PRIVILEGES;
SELECT Host,User,plugin,authentication_string FROM mysql.user WHERE user = 'repluser';
728x90
MySQL 복제
마스터 서버에서 마스터 상태 확인
mysql -h localhost -uroot -p'mysql_root_password1!' -e "SHOW MASTER STATUS\G;"
마스터 서버에서 테이블 잠금
mysql -h localhost -uroot -p'mysql_root_password1!' -e "FLUSH TABLES WITH READ LOCK;"
MySQL 덤프 생성
mysqldump -uroot -p'mysql_root_password1!' --all-databases > alldatabases-backup.sql
scp 명령어를 사용하여 덤프 파일을 슬레이브 서버로 복사
scp alldatabases-backup.sql vagrant@192.168.56.212:~
scp alldatabases-backup.sql vagrant@192.168.56.213:~
마스터 서버에서 테이블 잠금 해제
mysql -h localhost -uroot -p'mysql_root_password1!' -e "UNLOCK TABLES;"
슬레이브 서버에서 덤프 파일을 복원(192.168.56.212, 192.168.56.213)
mysql -uroot -p'mysql_root_password1!' < alldatabases-backup.sql
mysql shutdown
mysqladmin -uroot -p'mysql_root_password1!' shutdown
mysql start
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
마스터 서버에서 File 및 Position 확인
mysql -h localhost -uroot -p'mysql_root_password1!' -e "SHOW MASTER STATUS\G" | egrep 'File|Position'
슬레이브 서버에서 복제 설정 구성
mysql -h localhost -uroot -p'mysql_root_password1!' -e "stop slave"
mysql -h localhost -uroot -p'mysql_root_password1!' -e "reset slave"
mysql -h localhost -uroot -p'mysql_root_password1!' -e "
CHANGE MASTER TO
MASTER_HOST='192.168.56.211',
MASTER_USER='repluser',
MASTER_PASSWORD='mysql_repluser_password1!',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=34977;
"
mysql -hlocalhost -uroot -p'mysql_root_password1!' -e "start slave"
mysql -hlocalhost -uroot -p'mysql_root_password1!' -e "SHOW REPLICA STATUS \G"
MySQL MHA 설치
MySQL 테스트 계정 생성
testuser 계정 생성(testuser/testpassword1!)
mysql -u root -p'mysql_root_password1!'
use mysql;
CREATE USER 'testuser'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'mysql_test_password1!';
GRANT ALL ON *.* TO 'testuser'@'%';
FLUSH PRIVILEGES;
SELECT Host,User,plugin,authentication_string FROM mysql.user WHERE user = 'testuser';
MySQL Query 테스트
데이터베이스 확인
mysql -hlocalhost -utestuser -p'mysql_test_password1!' -e "show databases;"
users_db 데이터베이스 생성
mysql -h192.168.56.200 -utestuser -p'mysql_test_password1!' -e "CREATE DATABASE users_db;"
users 테이블 생성
mysql -h192.168.56.200 -utestuser -p'mysql_test_password1!' --database=users_db -e "
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
"
users 테이블 구조 확인
mysql -h192.168.56.200 -utestuser -p'mysql_test_password1!' --database=users_db -e "DESCRIBE users;"
INSERT Query 실행
mysql -h192.168.56.200 -utestuser -p'mysql_test_password1!' --database=users_db -e "INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');"
SELECT Query 실행
mysql -h192.168.56.200 -utestuser -p'mysql_test_password1!' --database=users_db -e "SELECT * FROM users ORDER BY id DESC LIMIT 5;"
참고URL
- 우분투에서 MySQL 바이너리 파일로 설치하는 방법 : https://scbyun.com/1630
- MySQL에서 신규 데이터베이스를 생성하고 데이터를 추가하고 조회하는 방법 : https://scbyun.com/1660
- SSH 키를 생성하고 배포하여 원격 서버에 SSH 접속하는 방법 : https://scbyun.com/554
728x90
'리눅스' 카테고리의 다른 글
history 명령어 (0) | 2023.09.21 |
---|---|
ping, telnet으로 통신(포트) 상태 확인 (0) | 2023.09.20 |
MySQL에서 Time Zone 관련 변수를 설정하고 사용하는 방법 (0) | 2023.09.19 |
jq 명령어 (0) | 2023.09.19 |
리눅스 password hashing 알고리즘 변경하기 (0) | 2023.09.18 |