MySQL with an external disk
챗봇모델에 학습되는 데이터는 2006~2017 질의응답 comment 데이터는 대략 1.5 TB가 된다. 이것을 데이터로 저장하고 DB에 업로드하기 위해서 외장하드에 MySQL을 연결할 필요성이 있는데 그 방법을 설명하고자 한다.
상태 확인
/var/lib/mysql/
의 경로를 externel disk의 경로로 바꾸려고 함~$ mysql -u root -p
mysql> select @@datadir;
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
MySQL 서비스중지
~$ sudo service mysql stop
data dir 설정
~$ sudo cp -R /var/lib/mysql /저장되는PATH
~$ sudo chown -R mysql:mysql /저장되는PATH
/mnt/00B267E9B267E1A0/MYSQL
일 경우 아래와 같정이 입력# e.g
~$ sudo cp -R /var/lib/mysql /mnt/00B267E9B267E1A0/MYSQL
~$ sudo chown -R mysql:mysql /mnt/00B267E9B267E1A0/MYSQL
mysqld.cnf
파일을 실행~$ sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
...
- datadir = /var/lib/mysql/ -> /저장되는PATH/mysql
- innodb_data_home_dir = /var/lib/mysql/ -> /저장되는PATH/mysql
- innodb_log_group_home_dir = /var/lib/mysql/ -> /저장되는PATH/mysql
...
/mnt/00B267E9B267E1A0/MYSQL
일 경우 아래와 같이 입력[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /mnt/00B267E9B267E1A0/MYSQL/mysql
innodb_data_home_dir = /mnt/00B267E9B267E1A0/MYSQL/mysql
innodb_log_group_home_dir = /mnt/00B267E9B267E1A0/MYSQL/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
data dir access 설정
usr.sbin.mysqld
파일을 실행~$ sudo gedit /etc/apparmor.d/usr.sbin.mysqld
/mnt/00B267E9B267E1A0/MYSQL
일 경우 아래와 같이 입력# Allow data dir access
/mnt/00B267E9B267E1A0/MYSQL/mysql/ r,
/mnt/00B267E9B267E1A0/MYSQL/mysql/** rwk,
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
Configuring AppArmor Access
~$ sudo gedit /etc/apparmor.d/abstractions/mysql
#/var/lib/mysql{,d}/mysql{,d}.sock rw,
/ext/mysql{,d}/mysql{,d}.sock rw,
/{var/,}run/mysql{,d}/mysql{,d}.sock rw,
/usr/share/{mysql,mysql-community-server,mariadb}/charsets/ r,
/usr/share/{mysql,mysql-community-server,mariadb}/charsets/*.xml r,,
AppArmor profile
~$ sudo /etc/init.d/apparmor reload
MySQL 재 시작
~$ sudo service mysql start
변경 후 상태 확인
~$ mysql -u root -p
mysql> select @@datadir;
+------------------------------------+
| @@datadir |
+------------------------------------+
| /mnt/00B267E9B267E1A0/MYSQL/mysql/ |
+------------------------------------+
1 row in set (0.00 sec)
부팅 후 연결이 안될 때
~$ sudo service mysql start