-
mysql 재시작 오류 - datadir 변경프로그래밍/DB 2015. 7. 15. 19:27728x90반응형
참고) mysql 기본 파일/ 디렉토리 위치
로그 위치 - /var/log/mysqld.log
conf 파일 위치 - /etc/my.cnf
DB 디렉토리(datafile) - /var/lib/mysql
새 서버를 받아서 예전 서버의 DB를 dump하는 중에 이상하게 오래 멈춰 있어서
작업을 중지하고 mysql을 실행하니 아래와 같은 에러가 발생하였다.
shell> mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysqld 서비스를 재시작해보았으나 재시작도 실패.
shell> service mysqld restart
mysqld 를 정지 중: [ OK ]
Timeout error occurred trying to start MySQL Daemon.
mysqld (을)를 시작 중: [실패]
mysql 로그(/var/log/mysqld.log) 를 확인해보았다.
참고로 mysql 로그 기본 위치는 /var/log/mysqld.log 이다.
빈 공간이 없어 PID를 생성하지 못해 서버를 실행하지 못한다고 한다.
vi /var/log/mysqld.log
150713 17:01:11 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
150713 17:01:11 [ERROR] Can't start server: can't create PID file: No space left on device
mysqld 설정 파일을 확인해보자.mysql conf 파일 기본 위치: /etc/my.cnf데이터 디렉토리는 mysql 기본설정인 /var/lib/mysql 로 되어있다.[mysqld]datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
그럼 이제 서버 가용용량을 확인해보자
현재 mysql 데이터 파일이 있는 /var 폴더에 20기가 밖에 할당이 되어있지 않아
용량이 많은 /home/ 디렉토리에 새로 폴더를 생성하여 새로운 mysql 데이터 디렉토리로 설정하도록 변경한다.
shell> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.8G 391M 8.9G 5% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 57M 124M 32% /boot
/dev/sda8 855G 7.4G 804G 1% /home
/dev/sda7 4.8G 11M 4.6G 1% /tmp
/dev/sda2 20G 1.9G 17G 10% /usr
/dev/sda3 20G 19G 0 100% /var
우선 새로 사용할 데이터 디렉토리를 생성하고 디렉토리 생성 및 오너 지정한다.
datafile의 패스에 있는 디렉토리 권한도 읽기 및 쓰기 권한을 추가 한다.
참고로 아래와 같은 읽기 권한 오류가 발생하여 home 의 권한을 기존 700에서 755로 변경하였다.
150713 18:08:24 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
150713 18:08:24 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
150713 18:54:38 mysqld_safe Starting mysqld daemon with databases from /home/mysql
/usr/libexec/mysqld: Table 'plugin' is read only
150713 18:54:38 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
mysql 정지시키고 기존 폴더에 있던 기존 /var/lib/mysql에 있던 모든 파일을 이동한다.
shell> mkdir mysqlshell> chown mysql:mysql mysqlshell> chmod -R 775 homeshell> service mysqld stopshell> mv /var/lib/mysql/* /home/mysql//etc/init.d/mysqld 에서 datadir을 새로 사용할 데이터 디렉토리로 변경한다.
get_mysql_option mysqld datadir "/home/mysql"
datadir="$result"
conf파일에서 datadir 디렉토리를 새로 사용할 데이터 디렉토리로 변경한다.
[mysqld]datadir=/home/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
마지막으로 mysql을 다시 시작한다.shell> service mysqld start참고: http://woong.koong.net/index.php?MenuID=4&cat=Linux&mode=view&idx=925728x90반응형'프로그래밍 > DB' 카테고리의 다른 글
c#에서 mysql (MySqlCommand) 사용하기 예시 (1) 2016.11.24 mysql 실행중인 job list 확인 및 강제 종료 (0) 2016.04.03 DB connectin error - Authentication with old password no longer supported, use 4.1 style passwords (0) 2015.05.05 mysql - 유저 생성과 권한 부여하기 (0) 2015.04.25 MySQL - select 구문 사용 예시 (1) 2014.11.02