[ERROR] Can't start server: can't create PID file: No such file or directory

리눅스/MySQL|2015. 1. 16. 10:56
반응형

에러 종류
081223 10:13:55 
[ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)
081223 10:13:55 [ERROR] Can't start server: can't create PID file: No such file or directory
081223 10:13:55  mysqld ended 


확인 결과
/var/run/mysqld/mysqld.pid 를 생성하지 못해서 에러가 생김


처리 방법
/var/run 아래에 mysqld 디렉토리 생성 후 소유권을 줌으로써 해결

[root@localhost run]# cd /var/run
[root@localhost run]# mkdir mysqld
[root@localhost run]# chown mysql mysqld
[root@localhost run]# chgrp mysql mysqld 



[출처] [Errcode: 2] Can't create/write to file '/var/run/mysqld/mysqld.pid'|작성자 앙마


반응형

'리눅스 > MySQL' 카테고리의 다른 글

InnoDB 사용 여부 확인하기  (0) 2015.01.16
MySQL 5.1.x 설치시 구동 에러  (0) 2015.01.16
MySQL 6.0.6 (alpha) 설치하기  (0) 2015.01.16
MySQL 4.x 버전 이상 old_password 문제  (0) 2015.01.16
슬로우 쿼리 로그 남기는법  (0) 2015.01.16

댓글()

MySQL 6.0.6 (alpha) 설치하기

리눅스/MySQL|2015. 1. 16. 10:56
반응형

mysql 을 tar xzvf 로 푼다.
압축을 푼 mysql 을 /usr/local/ 로 이동을 하되 디렉토리 명을 mysql 로 변경한다.
# mv ./mysql-6.0.9~~ /usr/local/mysql 

[설치 시작]
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# chown -R root:root mysql
# cd mysql 
# ./scripts/mysql_install_db --user=mysql
# chown -R mysql:mysql data
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysql

# vi /etc/rc.d/init.d/mysql
basedir=/usr/local/mysql 로 설정 확인
datadir=/usr/local/mysql/data 로 설정 확인 

# /etc/rc.d/init.d/mysql start

./bin/mysql -uroot 엔터로 mysql 에 잘 접속 되는지 확인해 보자. 잘되면 오케이~~~


원문 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=62950

반응형

댓글()

MySQL 4.x 버전 이상 old_password 문제

리눅스/MySQL|2015. 1. 16. 10:52
반응형

1. old_password 로 변경하기

Warning : mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:Program FilesApache GroupApache2 testcreatemovie.php on line 8

이 경고는 MySQL 4.1에서 나는 경고입니다.
MySQL 4.1에서는 사용자 패스워드 저장 방식이 바뀌었기 때문에 PHP4 이전에서 쓰던 mysql_connect는 통하지 않습니다.
PHP5의 mysqli_connect를 쓰셔야 합니다.

만약 mysql_connect로 접속하시려면 MySQL 사용자의 패스워드를 예전 방식으로 변경해야 하는데, 프롬프트 상에서 다음과 같이 하시거나

mysqladmin  -u  root  -p  old-password  9999999

MySQL에 접속하여 다음과 같이 하시면 됩니다.

SET  PASSWORD  FOR  'root'@'localhost'  =  OLD_PASSWORD('9999999');



[출처] mysql 4.x버전 이상 old_password 변경하기|작성자 정연아빠



2. old_password 로 구동하기

mysql 데몬 띄울때 아래 옵션 주고 띄우면 소스 수정할 필요없음..

/usr/local/mysql/bin/mysqld_safe --old_password &


[출처]  mysql old_password 문제  |  작성자   플래셔



3. mysql 에 적용하기

/etc/my.cnf 파일을 열고,
[mysqld] 하단에 old_passwords = 1 내용을 추가 후, 데몬 재시작

반응형

댓글()

슬로우 쿼리 로그 남기는법

리눅스/MySQL|2015. 1. 16. 10:52
반응형

my.cnf  파일의 [mysqld] 항목에 아래 내용을 입력 후, mysql 재시작을 해줍니다.

> 슬로우 쿼리로 분류할 시간, 로그파일 위치

 

MySQL 5.1.34 이상 버전

slow_query_log = 10

slow_query_log_file = /usr/local/mysql/data/mysql-slow-queries.log

 

MySQL 4.x 이상 버전

long_query_time = 10

log-slow-queries = /usr/local/mysql/data/mysql-slow-queries.log

 

MySQL 3.x 이하 버전

set-variable = long_query_time = 10
log-slow-queries = /usr/local/mysql/data/mysql-slow-queries.log

반응형

댓글()

MySQL DataBase 서버 튜닝 - Connection, Memory

리눅스/MySQL|2015. 1. 16. 10:49
반응형

MySQL Database의 경우 Oracle 이나 MS SQL Server에 비해서 대용량의 자료를 처리하는 경우가 적기에 튜닝에 필요성이 적은 것 같습니다. 그러나 웹이라는 환경은 많은 사용자가 동시에 접속을 할 수 있기에 항상 모니터링과 최적화는 기본이라고 생각합니다.

본 강좌에서는 기본적인 모니터링 방법과 Connection과 Memory 부분에 대한 튜닝 방법을 소개하도록 하겠습니다.



가. 모니터링 및 초기화 명령어


show status - MySQL 데이타베이스의 현재 상황

  • show Processlist - MySQL 프로세스 목록
  • show variables - 설정 가능한 모든 변수 목록
  • flush logs - MySQL의 로그파일 초기화
  • flush status - MySQL 상태정보 초기화
  • flush thread - 쓰레드 캐시에 저장된 쓰레드 초기화
  • flush tables - MySQL에 캐싱된 테이블 초기화
  • flush privileges - 권한정보 재 설정

나. Connection 튜닝


1. status

  • Aborted_clients - 클라이언트 프로그램이 비 정상적으로 종료된 수
  • Aborted_connects - MySQL 서버에 접속이 실패된 수
  • Max_used_connections - 최대로 동시에 접속한 수
  • Threads_cached - Thread Cache의 Thread 수
  • Threads_connected - 현재 연결된 Thread 수
  • Threads_created - 접속을 위해 생성된 Thread 수
  • Threads_running - Sleeping 되어 있지 않은 Thread 수

2. system variables

  • wait_timeout - 종료전까지 요청이 없이 기다리는 시간 ( TCP/IP 연결, Shell 상의 접속이 아닌 경우 )
  • thread_cache_size - thread 재 사용을 위한 Thread Cache 수로써, Cache 에 있는 Thread 수보다 접속이 많으면 새롭게 Thread를 생성한다.
  • max_connections - 최대 동시 접속 가능 수

그외에 status 또는 system variables 값은 참고의 Mysql 메뉴얼을 참조해 주십시요.

mysql> show variables like '%max_connection%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%connect%';
+----------------------+---------+
| Variable_name      | Value   |
+----------------------+---------+
| Aborted_connects  | 3782    |
| Connections          | 2961108 |
| Max_used_connections | 90      |
| Threads_connected    | 1       |
+----------------------+---------+
4 rows in set (0.01 sec)

mysql> show status like '%clients%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Aborted_clients | 2160  |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%thread%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Delayed_insert_threads | 0     |
| Slow_launch_threads    | 0     |
| Threads_cached         | 7     |
| Threads_connected      | 1     |
| Threads_created        | 1364  |
| Threads_running        | 1     |
+------------------------+-------+
6 rows in set (0.00 sec)

Cache Miss Rate(%) =  Threads_created / Connections * 100
Connection Miss Rate(%) = Aborted_connects / Connections * 100
Connection Usage(%) = Threads_connected / max_connections * 100

위의 경우는 Cache Miss Rate(%) = 0.05%, Connection Miss Rate(%) = 0.12%, Connection Usage(%) = 1%


3. 튜닝

  • Connection Usage(%)가 100% 라면 max_connections 수를 증가시켜 주십시요. Connection 수가 부족할 경우 Too Many Connection Error 가 발생합니다.
  • DB 서버의 접속이 많은 경우는 wait_timeout 을 최대한 적게 (10~20 정도를 추천) 설정하여 불필요한 연결을 빨리 정리하는 것이 좋습니다. 그러나 Connection Miss Rate(%) 가 1% 이상이 된다면 wait_timeout 을 좀 더 길게 잡는 것이 좋습니다.
  • Cache Miss Rate(%) 가 높다면 thread_cache_size를 기본값인 8 보다 높게 설정하는 것이 좋습니다. 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정하는 것이 좋습니다.
  • MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하게 됩니다. skip-name-resolve를 설정하시고 접속시에 IP 기반으로 접속을 하게 되면 hostname lookup 과정을 생략하게 되어 좀 더 빠르게 접속을 하실 수 있습니다.

다. Memory 튜닝


1. status

  • key_block_unused - Key Cache에서 사용되고 있지 않은 Block 수
  • key_reads - Key Block 읽기 요청시 Disk을 읽은 수
  • key_read_requests - Key Block 읽기 요청수

2. system variables

  • key_buffer_size - 인덱스를 메모리에 저장하는 버퍼의 크기
  • table_cache - 전체 쓰레드가 사용할 오픈 가능한 테이블 수
  • myisam_sort_buffer_size - 테이블 repair,Alter table,load data에 사용되는 버퍼 메모리 크기
  • join_buffer_size - 조인을 위한 메모리 버퍼 크기
  • record_buffer - 순차적인 검색을 위해 사용되는 메모리 버퍼 크기
  • record_rnd_buffer - order by 절을 사용할 경우 디스크 사용을 피하기 위하여 사용하는 메모리 버퍼 크기
  • sort_buffer - order by 와 group by에 사용되는 메모리 버퍼 크기
  • tmp_table_size - group by 시 디스크를 사용하지 않고 임시 테이블을 만들기 위해 사용되는 메모리 크기
  • key_cache_block_size - block 의 크기(bytes, 기본값 1024)

mysql> show status like '%key%';
+------------------------+-----------+
| Variable_name          | Value     |
+------------------------+-----------+
| Com_preload_keys       | 0         |
| Com_show_keys          | 2945      |
| Handler_read_key       | 365020739 |
| Key_blocks_not_flushed | 0         |
| Key_blocks_unused      | 222601    |
| Key_blocks_used        | 231960    |
| Key_read_requests      | 847204435 |
| Key_reads              | 4195954   |
| Key_write_requests     | 25034738  |
| Key_writes             | 16452136  |
+------------------------+-----------+
10 rows in set (0.00 sec)

Key Buffer Usage = 1 - ((Key_blocks_unused × key_cache_block_size) / key_buffer_size)
Key_reads/Key_read_requests Rate(%) =  Key_reads/Key_read_requests * 100 
Key_reads/Key_read_requests Relative Rate(%) = (1- ^Key_reads/^Key_read_requests) * 100

* ^Key_Reads = Current Key_Rreads - Previous Key_Reads


3. 튜닝

  • key_buffer_size는 총 메모리 크기의 25% 정도의 크기로 설정하는 것이 좋습니다.
  • Key_reads/Key_read_requests Rate(%)은 일반적으로 1%보다 적습니다. 1% 보다 높다면 Key Cache가 아닌 디스크를 읽은 경우가 많다고 판단할 수 있습니다. 또한 Key_reads/Key_reads_requests Relative Rate(%) 값이 지속적으로 90% 이상일 경우는 key_buffer_size가 효율적으로 설정되어 있다고 생각하시면 됩니다. 하지만 데이터베이스가 엄청나게 크거나 여러 데이터를 골고루 많이 읽는 데이터베이스라면 아무리 많은 양의 키 캐시를 설정해도 90% 이상의 적중률을 얻을 수는 없습니다.

라. 적용


system variables은 my.cnf 또는 my.ini 파일을 수정 후 MySQL Server 를 재시작 해 주십시요.

[www@smson www]$ vi /etc/my.cnf  

# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
skip-name-resolve
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
wait_timeout = 120

~~~

[root@smson mysql]# /usr/local/mysql/share/mysql/mysql.server restart


마. 참고


 


출처 : http://www.ihelpers.co.kr/programming/lec.php?CMD=view&TYPE=1&KEY=&SC=S&&CC=&PAGE=1&IDX=253

작성자 : 손상모

반응형

댓글()

MySQL 원격에서 접속하기

리눅스/MySQL|2015. 1. 16. 10:47
반응형

원격지에서

# mysql -h [아이피] -u [데이타베이스명] -p (엔터)
(암호입력)

예)
mysql -h 192.168.10.2 -u testdb -p (엔터)
(암호입력)


반응형

댓글()

error while loading shared libraries: libmysqlclient.so.xx 등의 오류

리눅스/MySQL|2015. 1. 16. 10:47
반응형

error while loading shared libraries: libmysqlclient.so.12: cannot open shared object file: No such file or directory 

이라는 에러가 떴을경우.. 
우선 저 libmysqlclient.so.xx (뒤에 xx는 버전..) 파일을 찾는다. 
find 를 사용해도 되지만, 보통 mysql이 설치된 디렉토리의 lib폴더 안에 있다. 
만약 /usr/local/mysql/lib 디렉토리에 libmysqlclient.so.xx 파일이 있다면 
/etc/ld.so.conf 파일에 저 경로 (/usr/local/mysql/lib) 를 추가해준후 
shell> ldconfig  를 실행시켜준다. 


[출처] 조인시위키 (http://joinc.co.kr/modules/moniwiki/wiki.php/Site/Mysql/Used_Mysql?action=diff)

반응형

'리눅스 > MySQL' 카테고리의 다른 글

MySQL DataBase 서버 튜닝 - Connection, Memory  (0) 2015.01.16
MySQL 원격에서 접속하기  (0) 2015.01.16
mysql table 복구 예  (0) 2015.01.16
mysql table 복구 방법  (0) 2015.01.16
mysql 쿼리 실시간 확인하기  (0) 2015.01.16

댓글()

mysql table 복구 예

리눅스/MySQL|2015. 1. 16. 10:47
반응형

mysql> check table myboard;

+---------------------+-------+----------+--------------------------------------
| Table               | Op    | Msg_type | Msg_text
+---------------------+-------+----------+--------------------------------------
| sysdocu.myboard | check | warning  | Table is marked as crashed
sysdocu.myboard | check | warning  | 1 client is using or hasn't closed th
| sysdocu.myboard | check | error    | Size of datafile is: 8323072
| sysdocu.myboard | check | error    | Corrupt

+---------------------+-------+----------+--------------------------------------
4 rows in set (0.02 sec)



mysql> repair table myboard;
+---------------------+--------+----------+-------------------------------------------------------+
| Table               | Op     | Msg_type | Msg_text                                              |
+---------------------+--------+----------+-------------------------------------------------------+
sysdocu.myboard | repair | info     | Found block that points outside data file at 8322744  |
sysdocu.myboard | repair | info     | Found block with too small length at 8322772; Skipped |
sysdocu.myboard | repair | status   | OK                                                    |
+---------------------+--------+----------+-------------------------------------------------------+
3 rows in set (0.50 sec)



mysql> check table myboard;
+---------------------+-------+----------+----------+
| Table               | Op    | Msg_type | Msg_text |
+---------------------+-------+----------+----------+
sysdocu.myboard | check | status   | OK       |
+---------------------+-------+----------+----------+
1 row in set (0.10 sec)


반응형

댓글()

mysql table 복구 방법

리눅스/MySQL|2015. 1. 16. 10:46
반응형

혹, mysql 도 정상 구동 되어 있고 특정 데이터베이스 사용시 문제가 생긴다면 ..

mysql/data 에 가보면 hostname.err 파일이 있습니다.

그 파일을 열어 혹시 데이터베이스나, 테이블 등이 깨진 것은 아닌지도 확인해보시면 좋을 것으로 보입니다.

오류마다 메세지는 다르겠지만, 보통 데이터베이스나 테이블 깨졌을 때는

해당 테이블을 찾을 수 없다 (?) 는 식의 메세지가 주기적으로 계속해서 발생할 수 있습니다.

백업 파일이 있다면 해당 파일로 복원하거나, 복구 명령으로 복구 하시면 됩니다.

 

복구 방법

# service mysqld stop    -> 데몬 중지
# mkdir /home/imsi    -> 해당 테이블을 백업 시킬 임시 디렉토리 생성
# cp -arp /usr/local/mysql/data/* /home/imsi    -> 해당 테이블 백업
# /usr/local/mysql/bin/myisamchk -o /usr/local/mysql/data/*/*.MYI
# service mysqld start

[주의] 다른 데이타베이스에도 영향을 미칩니다. (유저 계정이 변경되는 예도 있었음. 백업 필수!!)
            상위 명령어 네번째 항목 /*/*.MYI 에 폴더경로, 테이블 명까지 넣어서 복구범위를 줄일수 있음.

myisamchk 로 복구 되지 않는 경우 아래의 방법을 쓰면 복구 되기도 합니다.

아래 명령어는 mysql 을 실행중인 상태에서 사용하셔야 합니다.
# mysqlcheck -u root --auto-repair -B 데이터베이스명 -p


[출처] 지식인 (http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10202&eid=noJFypEggRUquWZxlo/FaauFPRsHVCUq&qb=bXlzcWwgcmVwYWlyILq5sbgguO23yQ==&pid=fLtIMdoi5Tlssbtq7RRsss--227692&sid=SNB0jCp00EgAAFZIE1g)

반응형

댓글()

mysql 쿼리 실시간 확인하기

리눅스/MySQL|2015. 1. 16. 10:46
반응형

# /usr/local/mysql/bin/mysqladmin -i3 processlist -p

[참고] i3 은 3초마다 보여주기

또는 mysql 로그인 후, 

mysql> show processlist;

반응형

댓글()

mysql 로그 안쌓이게 하는 방법

리눅스/MySQL|2015. 1. 16. 10:45
반응형

/etc/my.cnf 파일을 열어서

log-bin=mysql-bin
server-id   = 1

위의 두줄을 주석처리 해주고 mysql을 재시작 하면 됩니다.

반응형

댓글()