반응형

(1) 우선 mariaDB내의 저장소의 위치를 확인한다.

$ sudo mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.1.48-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |             => 현재 설치 위치를 확인한다.
+-----------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

(2) mariaDB 데몬을 종료한다.

$ sudo systemctl stop mariadb

(3) 현재 mariaDB내의 데이터 및 설정정보를 새로운 저장소로 이동시킨다.

$ sudo rsync -av /var/lib/mysql /mariadb/data/

sending incremental file list
mysql/
mysql/aria_log.00000001
mysql/aria_log_control
mysql/debian-10.1.flag
mysql/ib_logfile0
mysql/ib_logfile1
...
...
...
mysql/mysql/user.frm
mysql/performance_schema/
mysql/performance_schema/db.opt

sent 114,284,594 bytes  received 1,879 bytes  228,572,946.00 bytes/sec
total size is 114,249,816  speedup is 1.00

(4) 복사한 새로운 저장소의 mysql 폴더 권한을 변경한다.

단, 만약 권한이 자동으로 따라간 경우에는 아래 명령어를 실행하지 말도록 한다. ls -la 명령어로 /mariadb/data 폴더를 조회했을때 mysql  그룹 및 소유자 권한으로 되어 있다면 별도로 수정하지 않도록 한다.

$ sudo chown -R mysql:mysql /mariadb/data/mysql

(5) my.cnf 파일을 수정해서 저장소 바뀐 경로를 넣어주면 된다.

/etc/mysql/mariadb.conf.d$ sudo vim ./50-server.cnf

(아래내용은 50-server.cnf 내용임)

[mysqld]
lower_case_table_names = 1

#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
#datadir                = /var/lib/mysql
datadir         = /mariadb/data/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql

(6) 재시작 하면 땡!

$ sudo systemctl start mariadb

(7) 테스트!

테스트는 aaaa 라는 테이블을 만들어서 /mariadb/data 안에 물리적인 파일이 생성되는지 확인한다.

$ sudo mysql
.... 접속완료

MariaDB [(none)]> create database aaaa;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)


$ ls -la /mariadb/data/mysql/
total 110660
drwxr-xr-x 5 mysql mysql     4096 Aug 29 00:10 .
drwxr-xr-x 3 root  root      4096 Aug 28 23:57 ..
drwx------ 2 mysql mysql     4096 Aug 29 00:10 aaaa  ==> 발견!!
-rw-rw---- 1 mysql mysql    16384 Aug 28 23:56 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Aug 28 23:56 aria_log_control
-rw-r--r-- 1 mysql mysql        0 Aug 28 23:46 debian-10.1.flag
-rw-rw---- 1 mysql mysql 12582912 Aug 29 00:10 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Aug 29 00:10 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Aug 28 23:46 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Aug 28 23:46 multi-master.info
drwx------ 2 mysql mysql     4096 Aug 28 23:46 mysql
-rw-rw---- 1 mysql mysql       15 Aug 28 23:46 mysql_upgrade_info
drwx------ 2 mysql mysql     4096 Aug 28 23:46 performance_schema
-rw-rw---- 1 mysql mysql    24576 Aug 29 00:10 tc.log
ncloud@gov-mariadb:/$

이상 입니다.

 

진짜~~~ 편하네... ㅎㅎㅎ 읽으신 분들은 댓글 꼭 달아주세요.

반응형
반응형

MariaDB 를 쓰다보면은

 

대용량으로 데이터를 넣을 경우 하드디스크 용량이 꽉 차버리는 경우가 많다.

 

이 경우 대략 난감이다. 지금 나의 상황을 한번 보도록 하자!!

 

??????@????????:/etc/mysql$ df -kh
Filesystem      Size  Used Avail Use% Mounted on
udev             32G     0   32G   0% /dev
tmpfs           6.3G  650M  5.7G  11% /run
/dev/sdb2       1.8T  1.7T  361M 100% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sdb1       511M  3.4M  508M   1% /boot/efi
tmpfs           6.3G     0  6.3G   0% /run/user/1001

뜨아... 용량이 거의 없다 아무래도 대용량 db를 다루다 보니 저렇게 된 것같음.

 

그래서 mysql root로 로그인해서 한번 binary log가 얼마나 싸였는지 보았다.

 

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.024778 | 104858649 |
| mariadb-bin.024779 | 104859056 |
| mariadb-bin.024780 | 104862325 |
| mariadb-bin.024781 | 104858302 |
| mariadb-bin.024782 | 104857991 |

.............................. (엄청많음 ~~~~~ 으아) 

역시 로그때문에 용량이 꽉 찬거였음.

 

실제 insert할때마다 이걸 다 로그로 남기니 전부다 용량 과다로 넘어가는 것 같다.

 

그래서 우선 로그를 지우자!

 

MariaDB [(none)]> purge binary logs before '2019-10-29 20:00:00'

우선 오늘 이시각 이전로그는 다~~~~ 날려버려랏!!!

 

저 명령어 실행시키고 나서 로그를 보니 몇개 안남음.

 

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.025552 | 104868341 |
| mariadb-bin.025553 |  23062513 |
| mariadb-bin.025554 |       344 |
+--------------------+-----------+
3 rows in set (0.00 sec)

오오오오~~~ 딸랑 3개 남았다. 이제 로그 양도 줄이고 로그 경로도 바꿔야하니 아래 내용을 my.cnf에 추가했다.

 

log_bin                 = /??????/mariadb/log/mariadb-bin
log_bin_index           = /??????/mariadb/log/mariadb-bin.index

expire_logs_days        = 3     ==> 요건 3일치 보관함.
max_binlog_size         = 200M  ==> 요건 최대 용량

???? 라고 표현된건 HDD하나 사서 마운트 해서 추가한 경로임

 

요렇게 하면 용량이 확준다!!!

반응형
반응형

MariaDB는 Mysql과 유사하지만 CharacterSet을 변경하는 방법이 조금 다르다.

 

(1) 현재 CharacterSet이 어떤것인지 우선 조회한다.

   MariaDB [(none)]> show variables like 'c%';

 

(2) my.cnf 파일을 수정한다.

[client] 
default-character-set = utf8mb4 

[mysql]
default-character-set = utf8mb4 

[mysqldump]
default-character-set = utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake

 

(3) 서버 재식작!

 $ sudo service mysql restart

(4) 바뀐 인코딩 확인하기!

 

 

반응형
반응형

mysqldump 특정 테이블 제외하는 방법

mysqldump -u apptm -p RGS_DB  --ignore-table=RGS_DB.TB_JIBUN --ignore-table=RGS_DB.TB_DORO > RGS_20141008.sql 


반응형

+ Recent posts