
root 디렉토리 용량 부족

파티션 구성 확인 => 총 50GB중 10GB만 사용중

$ sudo dnf -y install cloud-utils-growpart => 미할당 영역을 물리 파티션에 할당하기 위해, growpart 기능이 필요

growpart 명령어를 통해 물리 파티션에 용량을 추가합니다. Root가 포함되어 있는 sda5 물리 파티션에 추가합니다.

파일 시스템 유형 확인 => /dev/sda5에 마운트된 XFS 파일 시스템을 확장합니다. => 파티션 크기를 직접 조정하는 것이 아니라, 이미 할당된 공간을 모두 사용할 수 있도록 파일 시스템을 확장합니다.
$ sudo dnf -y install mysql-server
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
//
[mysqld]
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# log-error=/var/log/mysql/mysqld.log
# pid-file=/run/mysqld/mysqld.pid
log-bin = mysql-bin
server-id = 1
binlog_format = row
expire_logs_days = 7
//
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ sudo systemctl start firewalld
$ sudo systemctl start firewalld
$ sudo firewall-cmd --permanent --add-service=mysql
$ sudo firewall-cmd --reload
$ mysql -u root
mysql> CREATE USER 'slave_db'@'%' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.03 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_db'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW GRANTS FOR 'slave_db'@'%';
+--------------------------------------------------+
| Grants for slave_db@% |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `slave_db`@`%` |
+--------------------------------------------------+
1 row in set (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 866 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit

primary-db
$ sudo dnf -y install mysql-server
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
//
[mysqld]
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# log-error=/var/log/mysql/mysqld.log
# pid-file=/run/mysqld/mysqld.pid
log-bin = mysql-bin
server-id = 2
binlog_format = row
expire_logs_days = 7
//
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ sudo systemctl start firewalld
$ sudo systemctl start firewalld
$ sudo firewall-cmd --permanent --add-service=mysql
$ sudo firewall-cmd --reload
$ mysql -u root
mysql> CHANGE REPLICATION SOURCE TO
-> SOURCE_HOST = '192.168.110.110',
-> SOURCE_USER = 'slave_db',
-> SOURCE_PASSWORD = '1234',
-> SOURCE_PORT = 3306,
-> SOURCE_LOG_FILE = 'mysql-bin.000002',
-> SOURCE_LOG_POS = 2520;
Query OK, 0 rows affected, 2 warnings (0.08 sec)
mysql> start replica;
Query OK, 0 rows affected (0.04 sec)

readreplica-db
$ vim inventory
//
[primary-db]
192.168.110.110
//
$ vim ansible.cfg
//
[defaults]
inventory=inventory
remote_user=vagrant
//
$ vim mysql-server.cnf.j2
//
#
# This group are read by MySQL server.
# Use it for options that only the server (but not clients) should see
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/en/server-configuration-defaults.html
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# log-error=/var/log/mysql/mysqld.log
# pid-file=/run/mysqld/mysqld.pid
log-bin = mysql-bin
server-id = 1
binlog_format = row
expire_logs_days = 7
//
$ vim playbook.yml
//
---
- name: Configure primary db server
hosts: primary-db
become: true
tasks:
- name: Install mysql-server
dnf:
name: mysql-server
state: present
- name: MySQL binlog configuration
template:
src: mysql-server.cnf.j2
dest: /etc/my.cnf.d/mysql-server.cnf
- name: Start and enable mysql service
service:
name: mysql
state: started
enabled: true
- name: Start and enable firewalld service
service:
name: firewalld
state: started
enabled: true
- name: Open mysql service
firewalld:
servie: mysql
permanent: true
state: enabled
immediate: yes
- name: Update mysql root password for root account
mysql_user:
login_unix_socket: /var/lib/mysql/mysql.sock
name: root
host: localhost
password: "4321"
priv: "*.*:ALL,GRANT"
check_implicit_admin: true
//

서비스이름 mysql -> mysqld 변경

python3-PyMySQL패키지를 설치해줘야함

- mysqld 서비스
- firwalld 서비스
- mysql(3306)포트 개방

- slave_db 사용자 생성 확인
- slave_db 사용자는 슬레이브 서버가 마스터 서버로부터 데이터를 복제할 수 있도록 허용
$ vim inventory
//
[readreplica-db01]
192.168.110.111
//
$ vim ansible.cfg
//
[defaults]
inventory=inventory
remote_user=vagrant
//
$ vim mysql-server.cnf.j2
//
#
# This group are read by MySQL server.
# Use it for options that only the server (but not clients) should see
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/en/server-configuration-defaults.html
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# log-error=/var/log/mysql/mysqld.log
# pid-file=/run/mysqld/mysqld.pid
log-bin = mysql-bin
server-id = 2
binlog_format = row
expire_logs_days = 7
//
---
- name: Configure readreplica-db01 server
hosts: readreplica_db01
become: true
tasks:
- name: Install mysql-server
dnf:
name: "{{ item }}"
state: present
loop:
- mysql-server
- python3-PyMySQL
- name: MySQL binlog configuration
template:
src: mysql-server.cnf.j2
dest: /etc/my.cnf.d/mysql-server.cnf
- name: Start and enable mysql service
service:
name: mysqld
state: started
enabled: true
- name: Start and enable firewalld service
service:
name: firewalld
state: started
enabled: true
- name: Open mysql service
firewalld:
service: mysql
permanent: true
state: enabled
immediate: yes
- name: Update mysql root password for root account
mysql_user:
login_unix_socket: /var/lib/mysql/mysql.sock
name: root
host: localhost
password: "4321"
priv: "*.*:ALL,GRANT"
check_implicit_admin: true
- name: Change replication source on slave servers
mysql_replication:
mode: changeprimary
login_user: root
login_password: 4321
primary_host: "192.168.110.110"
primary_user: "slave_db"
primary_password: "1234"
primary_port: 3306
primary_log_file: "mysql-bin.000002"
primary_log_pos: 1743
- name: Start slave replication
mysql_replication:
login_user: root
login_password: 4321
mode: startreplica

Ansible이 MySQL 모듈을 사용하여 MySQL에 접속할 때 필요한 인증 정보(login_user 및 login_password)가 제공되지 않았을 때 발생합니다.
=> login_user: root / login_password: 4321 해당 task에 추가

- mysqld 서비스
- firwalld 서비스
- mysql(3306)포트 개방

DB 이중화 성공

- Reading table information for completion of table and column names: 이 부분은 MySQL 콘솔이 사용자가 테이블 이름이나 열 이름을 입력할 때 자동 완성을 지원하기 위해 데이터베이스의 정보를 읽고 있다는 것을 의미합니다.
- You can turn off this feature to get a quicker startup with -A: 이 부분은 자동 완성 기능을 비활성화하여 MySQL 클라이언트가 더 빠르게 시작될 수 있다는 것을 알려줍니다. -A 옵션을 사용하여 이 기능을 끌 수 있습니다.
이 메시지는 MySQL 콘솔 사용 시 도움이 되는 정보를 제공하며, 직접 서버에서 실행 중인 문제나 오류 메시지와는 관련이 없습니다. MySQL 콘솔에서 이러한 정보는 사용자 경험을 향상시키는 데 도움을 줄 수 있습니다.
Bringing machine 'primary-db' up with 'virtualbox' provider...
Vagrant locks each machine for access by only one process at a time.
Please wait until the other Vagrant process finishes modifying this
machine, then try again.
If you believe this message is in error, please check the process
listing for any "ruby" or "vagrant" processes and kill them. Then
try again.
해결방벙 => https://velog.io/@ww3ysq/4k3u2kol