'Linux ( Cent OS )/MySQL'에 해당되는 글 4건

https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html


이 링크 하나면 yum 완벽합니다.

아래의 repo 파일 만든 후 yum clean all , yum repolist 확인 필수!



저는 CentOS 7.6 Lastest 버전이므로 6--> 7로 변경 했습니다


root@DB2:/etc/yum.repos.d# vi mysql.repo


[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql



#yum clean all

#yum repolist

#yum install mysql-community* ( mysql-community-server 만 설치해도 되긴함 ) 

혹시 gpgkey 에러가 나서 server가 설치 안 된다면 yum install --nogpgcheck 옵션을 넣어주면 됩니다.



Dependencies Resolved


==========================================================================================================================

 Package                                 Arch               Version                   Repository                     Size

==========================================================================================================================

Installing:

 mysql-community-libs                    x86_64             5.7.26-1.el7              mysql57-community             2.2 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-libs-compat             x86_64             5.7.26-1.el7              mysql57-community             2.0 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-server                  x86_64             5.7.26-1.el7              mysql57-community             166 M

Installing for dependencies:

 mysql-community-client                  x86_64             5.7.26-1.el7              mysql57-community              24 M

 mysql-community-common                  x86_64             5.7.26-1.el7              mysql57-community             274 k


Transaction Summary

==========================================================================================================================

Install  3 Packages (+2 Dependent packages)


Total download size: 194 M



추가팁 ) 위의 레포지토리로 가령 MySQL 5.7.26 을 설치했을 때
PHP를 Source 로 Config 하기 위한 설정 부연합니다.
which 나 PATH 등으로 경로 찾아서 prefix 추가하시면 되는데.. yum 설치시 경로 그냥 포함시켜서 공유하겠습니다.

( PHP 7.3.4 Stable Source Tar 로 설치 시. 7버전대면 크게 다를 건 없을 겁니다. ) 


 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/bin/mysql_config --with-pdo-mysql=/bin/mysql --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-libxml-dir=/usr/lib --with-xmlrpc --with-freetype-dir=/usr/lib --with-gmp --with-gd --with-gdbm --with-bz2 --with-pic --with-openssl --with-gettext --enable-wddx --enable-sockets --enable-ftp --enable-bcmath --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-calendar --enable-sysvshm --enable-sysvsem --enable-soap --enable-exif --enable-sigchild  --enable-xml --disable-debug --with-iconv --with-curl --with-mcrypt --enable-fpm


--with 모듈이 문제가 있을 경우 /lib , /lib64 등의 idconfig 나 PATH 확인해주세요.



'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

[실무 예시] MySQL Table 비우기  (0) 2019.05.13
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

상황) 

1. 고객의 Mysql DB 저장 위치가 /usr/local/var/mysql/var/123

2. 고객의 /usr 파티션 용량이 98% 상황.

3. 고객은 서버관리를 모르고, 해당 사이트 DB 는 스펨으로 가득찬 상황

4. Mysql 5.1.73 / Database Name : 123


1. 고객이 해당 Database 정리를 위해 SQL Dump 파일을 요청.

=> mysqldump -u root -p qwe > /home/123/123-20190513.sql

Enter password:

mysqldump: Got error: 1016: 화일을 열지 못했습니다: 'g4_write_qna.MYD'. (에러번호: 144) when using LOCK TABLES

==> 해당 Table Lock 걸려있어서, --lock-all-tables 옵션 추가


[root@localhost backup]# mysqldump -u root -p --lock-all-tables 123 > /home/123/123-20190513.sql

mysqldump: Couldn't execute 'show create table `g4_write_qna`': 화일을 열지 못했습니다 : 'g4_write_qna.MYD'. (에러번호: 144) (1016)

#show table status;

#repair table g4_write_qna; 


==> g4_write_qna 테이블이 오랜 미관리로 인해 손상되어 있어 repair 및 Dump 불가

해당 테이블의 용량만 2.2G 로 고객사는 미사용 게시판이라고 하니.. 트래시 데이터로 추측됌.

========================

2.2G       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

========================


2. 해당 DB 파일 경로 확인 시, 2018년 9월까지만 수정이력이 있어 미사용 테이블로 판단.  ( MYISAM 일 경우 DB 디렉토리 통째로 복사가 가능 ) 

==> 고객에게 해당 Table 용량 확보 승인 요청


3. trancate 로 해당 table clear.  

삭제하기전 DB 디렉토리 통백업 필수 

#tar cvzf 123.tar.gz /usr/local/mysql/var/123

#mysql -u root -p

#use 123

#show tables;

#trancate table g4_write_qna

========================

0       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

========================


4. /usr  70% 으로 용량 확보 완료했다.


기타) delete 대신 truncate ?

delete 는 where 조건절로 특정 부분 삭제가 가능. ( 순차 삭제 )  

truncate 는 그냥 테이블을 날려버린다. (drop이지만 테이블의 스키마 뼈대를 남김)

속도는 당연히 truncate 가 더 빠르다. 

테이블 손상된 경우에도 truncate 는 그냥 진행이 가능하다. 

빈 테이블로 깨끗하게 해줌.


상황에 맞춰서 사용하자. 


'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

CentOS MySQL Yum Repository  (0) 2019.06.19
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

mysql> show variables like '%log%';

+-----------------------------------------+------------------------------------+

| Variable_name                           | Value                              |

+-----------------------------------------+------------------------------------+

| back_log                                | 50                                 |

= 백로그 설정. 

일반적으로 OS 커널의 소켓 당 백로그 ( somaxconn ) 값보다는 작아야 함.

| binlog_cache_size                       | 32768                              |

= 바이너리 로그(트랜젝션되는) 기록 전 선행 캐쉬값 설정. 

이 수치보다 큰 트랜잭션은 disk ( tmpdir ) 에 임시파일을 쓰게 됌.

= cache_disk_use의 value 가 많아지는 경우, 이 값을 늘리면 좋다. 

| binlog_direct_non_transactional_updates | OFF                                |

= Slave 서버에서 트랜잭션 + 비 트랜잭션의 동시 프로세스가 일어날 경우 문제.

enable 해 주면, cache 등의 과정을 생략하고 무조건 바이너리 로그에 바로 기록.

| binlog_format                           | STATEMENT                          |

= 바이너리 로그 포맷 설정. STATEMENT(쿼리 순차)가 Default.

ROW(데이터 기반), MIXED(다이나믹) 등이 더 있으며

5.7.6이상에서는 ROW 가 Default 이다. 

| expire_logs_days                        | 2                                  |

= 바이너리 로그 보관 기간. default 는 0으로 기간없이 저장함. 

디스크 용량 purge 로 확보하는 것보다, 이 기간을 설정해 두면 좋음.

| general_log                             | OFF                                |

= 실행 쿼리를 기록하는 General_log 설정.

= 쉘 상에서 입력 실행을 받는순간, 실행보다 먼저 기록되는 수준으로

잘못된 쿼리나, 명령어까지 그대로 기록하는 로그임.  

Binary Log 는 쿼리 처리 후 변경된 시점/결과를 기록하는 것으로 쿼리구문이 없음. 주로 특정 시점 복구나, 리플리케이션에 사용함. 용도가 다름. 

| general_log_file                        | /usr/local/mysql/var/Web1.log      |

= General_log 의 파일명 및 경로 설정. my.cnf 에도 지정 가능.

| innodb_flush_log_at_trx_commit          | 1                                  |

= innodb 의 쿼리 로그 실행시 패턴 설정

0 : 쿼리 실행시 실행/취소 여부 상관없이, 1초 간격으로 메모리 버퍼에서 디스크 쓰기 후 flush 실행

( 1보다 빠름. 문제 발생시 0~1초 사이의 log 가 유실될 수 있음 )

1 : 쿼리 실행시, 우선 로그를 버퍼->디스크까지 다 쓰고, 결과/취소가 결정 후 flush.  

( 0 보다, 디스크 입출력 횟수가 증가하지만,  log 손실이 없는 안정적 방법 )

2: 혼합. 로그를 버퍼에 우선 다 밀어넣지만 디스크로 flush 를 하지 않음.

대신 실행/취소 결과 결정 시 1초 간격으로 디스크로 flish 함.

( MySQL 장애 시에도 로그 보존. 단 OS 리부팅 시 0~1초 문제 생길 수 있음 ) 

| innodb_locks_unsafe_for_binlog          | OFF                                |

= innodb 의 검색과 인덱싱에서 next_key_locking 활성화 여부.

| innodb_log_buffer_size                  | 1048576                            |

= 바이트. innodb에서 트랜잭션을 버퍼에 기록하는 용량. 1~8MB 지정 가능.

트랜잭션의 크기보다 이 버퍼가 클 경우, disk기록하지 않고 메모리에서 바로 commit 처리하므로 속도 향상 가능.

| innodb_log_file_size                    | 5242880                            |

= 그룹의 innodb log 파일사이즈이며 최대 4G까지 가능.

이 값이 크면, 플러시 횟수가 줄어, 속도는 향상되지만, 장애 발생시 시점, 처리복구 인덱싱 시간이 오래 걸리는 점을 유의.  

| innodb_log_files_in_group               | 2                                  |

= 그룹 안에서 innodb log 파일 갯수. 디폴트는 logfile0, 1의 2개로 구성. 

| innodb_log_group_home_dir               | ./                                 |

= 로그파일의 위치. 디폴트는 MySQL data 경로.

| innodb_mirrored_log_groups              | 1                                  |

= 보존용 복제 log 의 개수. 보통은 변경하지 않는다. 


| log                                     | OFF                                |

= general , binary 등으로 대체되었으므로, 건드릴 필요 없음.

| log_bin                                 | ON                                 |

= binary log 활성화 유무

| log_bin_trust_function_creators         | OFF                                |

| log_bin_trust_routine_creators          | OFF                                |

| log_error                               | /usr/local/mysql/var/Web1.err      |

| log_output                              | FILE                               |

| log_queries_not_using_indexes           | OFF                                |

| log_slave_updates                       | OFF                                |

| log_slow_queries                        | ON                                 |

| log_warnings                            | 1                                  |

| max_binlog_cache_size                   | 18446744073709547520               |

| max_binlog_size                         | 1073741824                         |

| max_relay_log_size                      | 0                                  |

| relay_log                               |                                    |

| relay_log_index                         |                                    |

| relay_log_info_file                     | relay-log.info                     |

| relay_log_purge                         | ON                                 |

| relay_log_space_limit                   | 0                                  |

| slow_query_log                          | ON                                 |

| slow_query_log_file                     | /usr/local/mysql/var/Web1-slow.log |

| sql_log_bin                             | ON                                 |

| sql_log_off                             | OFF                                |

| sql_log_update                          | ON                                 |

| sync_binlog                             | 0                                  |

+-----------------------------------------+------------------------------------+

38 rows in set (0.00 sec)


환경변수 제어는 set global 로 대부분 실시간 제어가능 합니다

flush privileges; 는 기본으로 달고 살면 좋겠죠. 



'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

CentOS MySQL Yum Repository  (0) 2019.06.19
[실무 예시] MySQL Table 비우기  (0) 2019.05.13
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

보통 용량 확보를 위해 Binary Log 삭제해야 할 경우가 있습니다.

mysql 디렉토리 가보면 막 00001 00002 00003.. 삭제하고 싶은 파일들이 보이는데요

수동 삭제하지 말고, MySQL 내에서 purge 로 삭제해 주어야 합니다. 


해당 바이너리 로그 보관은 expire_logs_days 에서 조절할 수 있습니다

( mysql> show variables like 'expire%'; 로 확인 하고, 

set globa; expire_logs_days=일수; 로 설정 ) 

단 set global 은 데몬 재구동시 설정 초기화되므로, 

값 업데이트 또는 my.cnf 설정 하세요. 

root@Web1:/usr/local/mysql/var# mysql -u root -p      권한자 로그인

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.1.67-log Source distribution


Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

+--------------------+

3 rows in set (0.00 sec)


mysql> use mysql;

Database changed

mysql> show binary logs;              로그 리스트 보기

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000012 |       149 |

| mysql-bin.000013 |       149 |

| mysql-bin.000014 |       106 |

+------------------+-----------+

3 rows in set (0.00 sec)


mysql> purge master logs to 'mysql-bin.000013';   000013 제외한 "이전" 의 바이너리 로그 모두 삭제. 

Query OK, 0 rows affected (0.03 sec)


mysql> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000013 |       149 |    13 이전의 12가 삭제 됌. 

| mysql-bin.000014 |       106 |

+------------------+-----------+

2 rows in set (0.00 sec)


mysql> show variables like 'expire%';    바이너리 로그 보관기간 확인

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| expire_logs_days | 2     |

+------------------+-------+

1 row in set (0.00 sec)


mysql> set global expire_logs_days=2;    설정은 set global 로 가능. 

Query OK, 0 rows affected (0.00 sec)


모든 작업 후에는 혹시 모르니 flush privileges; 를 해주는 버릇을 들여보자.



블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,