상세 컨텐츠

본문 제목

043. Raspberry Pi 라즈베리파이 - mariadb(mysql) 데이터 파일 위치 변경 (move to mariadb data directory)

raspberrypi/raspbian

by ZelKun 2019. 9. 8. 23:27

본문

반응형

이것저것 깔다보니 어느새 디스크 사용률이 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 미디어위키 설치

[embedded/raspberrypi] - 042. Raspberry Pi 라즈베리파이 - mysql(10.1.38-MariaDB-0+deb9u1) 재설치 (Raspberry pi reinstall mysql)

[embedded/raspberrypi] - 043. Raspberry Pi 라즈베리파이 - mariadb(mysql) 데이터 파일 위치 변경 (move to mariadb data directory)


 

참고

https://www.tecmint.com/change-default-mysql-mariadb-data-directory-in-linux/

반응형

관련글 더보기

댓글 영역