043. Raspberry Pi 라즈베리파이 - mariadb(mysql) 데이터 파일 위치 변경 (move to mariadb data directory)
이것저것 깔다보니 어느새 디스크 사용률이 86%정도 되어
데이터 파일 위치를 변경해주려고 합니다
우선 데이터 파일 위치를 확인해줍니다
Postgresql도 /var/lib/ 디렉토리아래에 위치해 있는데
역시나 같은 위치네요
pi@rasp-dev:~ $ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
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)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed MariaDB [mysql]> select @@datadir; +-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
MariaDB [mysql]> quit Bye pi@rasp-dev:~ $ |
위치를 확인했으니 mariadb 서비스를 종료하고
외장하드에 디렉토리를 복사해줍니다
그리고 서비스를 정지 시켜줍니다
pi@rasp-dev:~ $ ps -ef | grep maria pi 1359 1068 0 19:16 pts/0 00:00:00 grep --color=auto maria pi@rasp-dev:~ $ ps -ef | grep mysql pi 1361 1068 0 19:16 pts/0 00:00:00 grep --color=auto mysql pi@rasp-dev:~ $ sudo service mariadb start pi@rasp-dev:~ $ ps -ef | grep mysql mysql 1473 1 6 19:16 ? 00:00:00 /usr/sbin/mysqld pi 1512 1068 0 19:16 pts/0 00:00:00 grep --color=auto mysql pi@rasp-dev:~ $ ps -ef | grep maria pi 1514 1068 0 19:16 pts/0 00:00:00 grep --color=auto maria pi@rasp-dev:~ $ sudo service mariadb stop pi@rasp-dev:~ $ ps -ef | grep maria pi 1550 1068 0 19:16 pts/0 00:00:00 grep --color=auto maria pi@rasp-dev:~ $ ps -ef | grep mysql pi 1552 1068 0 19:16 pts/0 00:00:00 grep --color=auto mysql pi@rasp-dev:~ $ |
재미있는건 mariadb로는 프로세스가 검색조차 안되는데
mysql 프로세스가 죽네요
데이터 디렉토리 복사
sudo rsync -av /var/lib/mysql /mnt/db_file/
pi@rasp-dev:~ $ sudo rsync -av /var/lib/mysql /mnt/db_file/ sending incremental file list mysql/ mysql/aria_log.00000001 mysql/aria_log_control
. . .
mysql/performance_schema/ mysql/performance_schema/db.opt
sent 114,283,882 bytes received 1,841 bytes 12,030,076.11 bytes/sec total size is 114,249,114 speedup is 1.00 pi@rasp-dev:~ $ pi@rasp-dev:~ $ ls -al /mnt/db_file/ 합계 32 drwxr-xr-x 5 root root 4096 9월 8 19:26 . drwxr-xr-x 6 root root 4096 9월 8 12:44 .. drwx------ 2 root root 16384 9월 8 15:12 lost+found drwxr-xr-x 4 mysql mysql 4096 9월 8 19:16 mysql drwxr-xr-x 3 postgres postgres 4096 9월 8 16:19 postgresql pi@rasp-dev:~ $
|
에러도 없고 복사가 끝나면
원본 디렉토리를 mv 이용해서 백업해줍니다
sudo mv /var/lib/mysql /var/lib/mysql_
심볼릭 링크
pi@rasp-dev:~ $ ls -al /mnt/db_file/ 합계 32 drwxr-xr-x 5 root root 4096 9월 8 19:26 . drwxr-xr-x 6 root root 4096 9월 8 12:44 .. drwx------ 2 root root 16384 9월 8 15:12 lost+found drwxr-xr-x 4 mysql mysql 4096 9월 8 19:16 mysql drwxr-xr-x 3 postgres postgres 4096 9월 8 16:19 postgresql pi@rasp-dev:~ $ sudo mv /var/lib/mysql /var/lib/mysql_ pi@rasp-dev:~ $ sudo ln -s /mnt/db/mysql /var/lib/mysql pi@rasp-dev:~ $ ls -al /var/lib/ | grep mysql lrwxrwxrwx 1 root root 13 9월 8 19:28 mysql -> /mnt/db/mysql drwxr-xr-x 4 mysql mysql 4096 9월 8 19:16 mysql_ pi@rasp-dev:~ $ |
외장하드의 mysql 디렉토리를 /var/lib/ 하위에 링크해줍니다
보면 백업한 mysql_ 와 심볼릭 링크된 링크 파일을 확인할 수 있습니다
서비스 재시작
pi@rasp-dev:~ $ sudo service mariadb start pi@rasp-dev:~ $ ps -ef | grep mysql mysql 1837 1 3 19:29 ? 00:00:00 /usr/sbin/mysqld pi 1874 1068 0 19:29 pts/0 00:00:00 grep --color=auto mysql pi@rasp-dev:~ $ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
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)]> create database test; Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> Bye pi@rasp-dev:~ $ |
mariadb 를 재시작하고
database를 하나 만들어 줍니다
pi@rasp-dev:~ $ ls -al /mnt/db_file/mysql/ 합계 110656 drwxr-xr-x 5 mysql mysql 4096 9월 8 19:30 . drwxr-xr-x 5 root root 4096 9월 8 19:26 .. -rw-rw---- 1 mysql mysql 16384 9월 8 19:16 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 9월 8 19:16 aria_log_control -rw-r--r-- 1 root root 0 8월 18 16:25 debian-10.1.flag -rw-rw---- 1 mysql mysql 50331648 9월 8 19:29 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 8월 18 16:26 ib_logfile1 -rw-rw---- 1 mysql mysql 12582912 9월 8 19:29 ibdata1 -rw-rw---- 1 mysql mysql 0 8월 18 16:26 multi-master.info drwx------ 2 mysql root 4096 8월 18 16:26 mysql drwx------ 2 mysql mysql 4096 8월 18 16:26 performance_schema -rw-rw---- 1 mysql mysql 24576 9월 8 19:29 tc.log drwx------ 2 mysql mysql 4096 9월 8 19:30 test pi@rasp-dev:~ $ |
그리고 외장하드의 mysql 디렉토리를 조회해보면
test 디렉토리가 생긴걸 확인할 수 있습니다
잘되네요
설정파일을 수정하는것도 테스트 해봐야죠
설정파일 수정
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
pi@rasp-dev:~ $ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
11 # this is only for the mysqld standalone daemon 12 [mysqld] 13 14 # 15 # * Basic Settings 16 # 17 user = mysql 18 pid-file = /var/run/mysqld/mysqld.pid 19 socket = /var/run/mysqld/mysqld.sock 20 port = 3306 21 basedir = /usr 22 #datadir = /var/lib/mysql 22 datadir = /mnt/db_file/mysql 23 tmpdir = /tmp 24 lc-messages-dir = /usr/share/mysql 25 skip-external-locking 26 27 # Instead of skip-networking the default is now to listen only on 28 # localhost which is more compatible and is not less secure. 29 #bind-address = 127.0.0.1 30 31 # 32 # * Fine Tuning 33 # :set nu 22,13-20 9% |
참고한 링크는 my.cnf 를 수정하는데
버전차이 인지 my.cnf에는 datadir 선언부가 없습니다
뭐 거기에 추가해도 되는지는 테스트를 안했지만..
일단 22번 라인의 datadir 경로를 외장하드로 변경해줍니다
서비스 재시작
pi@rasp-dev:~ $ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf pi@rasp-dev:~ $ sudo service mariadb start pi@rasp-dev:~ $ ps -ef | grep mysql mysql 2667 1 4 19:50 ? 00:00:00 /usr/sbin/mysqld pi 2704 1912 0 19:51 pts/0 00:00:00 grep --color=auto mysql pi@rasp-dev:~ $ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
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)]> create database datadir_move_test;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> quit Bye pi@rasp-dev:~ $ ls -al /mnt/db/mysql/ 합계 110660 drwxr-xr-x 6 mysql mysql 4096 9월 8 19:51 . drwxr-xr-x 5 root root 4096 9월 8 19:26 .. -rw-rw---- 1 mysql mysql 16384 9월 8 19:46 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 9월 8 19:46 aria_log_control drwx------ 2 mysql mysql 4096 9월 8 19:51 datadir_move_test -rw-r--r-- 1 root root 0 8월 18 16:25 debian-10.1.flag -rw-rw---- 1 mysql mysql 50331648 9월 8 19:50 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 8월 18 16:26 ib_logfile1 -rw-rw---- 1 mysql mysql 12582912 9월 8 19:50 ibdata1 -rw-rw---- 1 mysql mysql 0 8월 18 16:26 multi-master.info drwx------ 2 mysql root 4096 8월 18 16:26 mysql drwx------ 2 mysql mysql 4096 8월 18 16:26 performance_schema -rw-rw---- 1 mysql mysql 24576 9월 8 19:50 tc.log drwx------ 2 mysql mysql 4096 9월 8 19:30 test pi@rasp-dev:~ $ |
이번에도 새로운 데이터베이스를 생성하고
외장하드 디렉토리를 조회 해보니 datadir_move_test 가 생겨있네요
성공이네요
혹시모르니 db에서 조회해 봅니다
pi@rasp-dev:~ $ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
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)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed MariaDB [mysql]> select @@datadir; +-------------------+ | @@datadir | +-------------------+ | /mnt/db_file/mysql/ | +-------------------+ 1 row in set (0.00 sec)
MariaDB [mysql]> |
잘 바껴 있네요
이제 백업한 원본을 삭제하면 됩니다
pi@rasp-dev:~ $ sudo rm -rf /var/lib/mysql /var/lib/mysql_ pi@rasp-dev:~ $ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 7 Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
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)]> drop database test; Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> drop database datadir_move_test; Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit Bye pi@rasp-dev:~ $ ls -al /mnt/db_file/mysql/ 합계 110652 drwxr-xr-x 4 mysql mysql 4096 9월 8 19:58 . drwxr-xr-x 5 root root 4096 9월 8 19:26 .. -rw-rw---- 1 mysql mysql 16384 9월 8 19:46 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 9월 8 19:46 aria_log_control -rw-r--r-- 1 root root 0 8월 18 16:25 debian-10.1.flag -rw-rw---- 1 mysql mysql 50331648 9월 8 19:50 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 8월 18 16:26 ib_logfile1 -rw-rw---- 1 mysql mysql 12582912 9월 8 19:50 ibdata1 -rw-rw---- 1 mysql mysql 0 8월 18 16:26 multi-master.info drwx------ 2 mysql root 4096 8월 18 16:26 mysql drwx------ 2 mysql mysql 4096 8월 18 16:26 performance_schema -rw-rw---- 1 mysql mysql 24576 9월 8 19:50 tc.log pi@rasp-dev:~ $ |
심볼릭 링크와 원본을 삭제하고
테스트하느라 생성한 test, datadir_move_test 를 drop 하고
외장하드에서 조회해보니 삭제되서 없네요
굿굿
관련글
[embedded/raspberrypi] - 012. Raspberry Pi 라즈베리 파이 - Apache2, PHP, Mysql APM설치
[programing/JAVA&JSP&SERVLET&SPRING] - JAVA 자바 Mysql Load Data Infile
[OS/Utils] - 강추)다람쥐 SQL SQuirreL SQL 만능 DB 접속툴
[embedded/raspberrypi] - Raspberry Pi Jessie 라즈베리파이 - WordPress 4.7 설치
[embedded/raspberrypi] - 030. Raspberry Pi 라즈베리 파이 - Mysql 외부접속 허용
[OS/MAC OS X] - [macOS High Sierra] Mysql 8.x brew install 설치
[OS/MAC OS X] - [macOS High Sierra] Mysql 8.x dmg install 설치
[OS/MAC OS X] - [macOS High Sierra] Mysql 8.x password change 변경
[embedded/raspberrypi] - Raspberry Pi Jessie 라즈베리파이 - install MediaWiKi 미디어위키 설치
참고
https://www.tecmint.com/change-default-mysql-mariadb-data-directory-in-linux/
댓글 영역