mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': Unknown system variable 'OPTION' (1193)

리눅스/MySQL|2018. 5. 18. 08:32
반응형

mariadb-10.0.14-linux-x86_64 버젼에서 이중화를 위해 덤프를 수행하자 아래와 같은 에러가 난다. 

 

[maria@db1 work]$ mysqldump -uroot -proot --socket=/maria/maria_tmp/mysql.sock --opt --single_transaction --master-data=2 --routines --all-databases -r dump.sql --hex-blob --triggers

mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': Unknown system variable 'OPTION' (1193)


뭔 뜻인지는 알겠는데 왜 이런 에러가 발생할까? 

우선 해당 파라미터를 조회해 보자. 

mysql> show variables like '%QUOTE%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| sql_quote_show_create | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

헐.. 'ON' 이라고 되어 있다. 
이를 어쩌나.. 우선 숫자 개념이 완전히 안되는 건가 확인해보자. 

mysql> set sql_quote_show_create=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%QUOTE%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| sql_quote_show_create | OFF   |
+-----------------------+-------+
1 row in set (0.00 sec)

mysql> set sql_quote_show_create=1;
Query OK, 0 rows affected (0.00 sec)

이제 보니 option 이란 단어가 들어가면 안된다..ㅠㅠ 아니 tar 파일을 그대로 설치한 거라서 압축 파일 자체가 문제인거 같다. 

mysql> select version();
+---------------------+
| version()           |
+---------------------+
| 10.0.14-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)

블로깅을 해보니 5.6 버젼의 클라이언트를 이용해서 dump를 받아야 한다고 조언한다. 
어떤 글은 바이너리 파일에서 위 옵션을 주석처리하기도 하는데 전 해보니 인식을 할 수 없는 글만 보였다. ㅠㅠ

귀찮다. 젠장. 5.5.x mysqldump를 이용해야 하는데 이건 아닌 거 같다. 걍 5.3. 버젼 써야지..


[출처] https://m.blog.naver.com/PostView.nhn?blogId=freebat&logNo=220210111983&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


반응형

댓글()

insert 시 한글 깨짐 문제가 발생할 경우 점검사항

리눅스/MySQL|2018. 5. 17. 09:28
반응형

dump 파일을 수정하여 넣었을 경우 아래와 같이 언어셋 쿼리가 빠졌을 수 있습니다.

주석처럼 보이지만 아님..


주의할것은 수동으로 언어셋과 테이블 생성까지 해줘야 하는것. (언어셋 후 daump 에서 테이블 생성하면 안됨)

그 이후에는 dump 파일을 가지고 밀어넣으면 됩니다.


use sysdocu;


/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;


CREATE TABLE `sysdocu_test` (

... 생략 ...

) ENGINE=InnoDB DEFAULT CHARSET=euckr;


여기까지 수동 입력 후 insert 만 들어있는 파일을 밀어 넣으면 됩니다.

mysql> source sysdocu.sql



반응형

댓글()

테이블명 변경 (테이블 이름 변경)

리눅스/MySQL|2018. 5. 17. 09:16
반응형

RENAME TABLE 테이블명 TO 새테이블명;



반응형

댓글()

mysql 데이터를 날짜로 비교하여 데이터 가져오기 or 삭제하기

리눅스/MySQL|2018. 5. 14. 17:06
반응형

아래 예제를 수정하여 쿼리를 실행하면 됩니다.


삭제하기 전에 만드시 select 를 먼저 해보고 delete 쿼리를 실행하도록 합니다.


mysql> select * from sysdocu_test where reg_date between '2018-04-23 00:00:01' and '2018-04-27 23:59:59';


mysql> delete from sysdocu_test where reg_date between '2018-04-23 00:00:01' and '2018-04-27 23:59:59';



반응형

댓글()

MySQL & MariaDB 파티셔닝의 설정,추가,삭제,재구성

리눅스/MySQL|2018. 5. 8. 08:55
반응형

공식 문서

https://dev.mysql.com/doc/refman/5.6/en/partitioning-selection.html

파티션 지원 확인
SHOW VARIABLES LIKE ‘%partition%’;

— 생성

  1. CREATE TABLE `parttest_tbl` (
  2. `sid` int(11) NOT NULL AUTO_INCREMENT,
  3. `f1` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
  4. PRIMARY KEY (`sid`)
  5. ) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8
  6. PARTITION BY RANGE (`sid`)
  7. (PARTITION `c0` VALUES LESS THAN (100) ENGINE = InnoDB,
  8. PARTITION `c1` VALUES LESS THAN (200) ENGINE = InnoDB,
  9. PARTITION `c2` VALUES LESS THAN (300) ENGINE = InnoDB,
  10. PARTITION `cn` VALUES LESS THAN MAXVALUE ENGINE = InnoDB);

— 기존에 사용하는 테이블

  1. CREATE TABLE `parttest_tbl` (
  2. `sid` int(11) NOT NULL AUTO_INCREMENT,
  3. `f1` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
  4. PRIMARY KEY (`sid`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

— 파티셔닝 생성

  1. alter table parttest_tbl partition by range (sid)
  2. (
  3. partition c0 values less than (100),
  4. partition c1 values less than (200),
  5. partition cn values less than MAXVALUE
  6. );

— 테이블 확인

— 파티셔닝 삭제 (delete 기능 – data 삭제 된다 주의!!)
ALTER TABLE parttest_tbl DROP PARTITION c0;

— 원복 합치기 파티셔닝 삭제
ALTER TABLE parttest_tbl REMOVE PARTITIONING;

— 파티션 확인

  1. SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
  2. FROM INFORMATION_SCHEMA.PARTITIONS
  3. WHERE TABLE_NAME = 'parttest_tbl';

— 파티션 별 select
SELECT * FROM parttest_tbl PARTITION (c0);
SELECT * FROM parttest_tbl PARTITION (c0, c1);

/*
예를 들면 [매월]로 파티션을 나누고 싶어, 테이블에는 [년]과 [월]이 다른 컬럼에 있는 경우.
서브 파티션(복함파티셔닝)을 사용한다.
*/

  1. ALTER TABLE `parttest_tbl`
  2. PARTITION BY RANGE (YEAR(`year`))
  3. SUBPARTITION BY HASH (MONTH(`month`))
  4. SUBPARTITIONS 12 (
  5. PARTITION p2013 VALUES LESS THAN (2013) ENGINE = InnoDB,
  6. PARTITION p2014 VALUES LESS THAN (2014) ENGINE = InnoDB,
  7. PARTITION p2015 VALUES LESS THAN (2015) ENGINE = InnoDB,
  8. PARTITION p2016 VALUES LESS THAN (2016) ENGINE = InnoDB,
  9. PARTITION p2017 VALUES LESS THAN (2017) ENGINE = InnoDB,
  10. PARTITION p2018 VALUES LESS THAN (2018) ENGINE = InnoDB,
  11. PARTITION p2019 VALUES LESS THAN (2019) ENGINE = InnoDB,
  12. PARTITION p2020 VALUES LESS THAN (2020) ENGINE = InnoDB,
  13. PARTITION pmax VALUES LESS THAN MAXVALUE
  14. );

 [출처] https://www.galgulee.com/mysql-mariadb-%ED%8C%8C%ED%8B%B0%EC%85%94%EB%8B%9D%EC%9D%98-%EC%84%A4%EC%A0%95%EC%B6%94%EA%B0%80%EC%82%AD%EC%A0%9C%EC%9E%AC%EA%B5%AC%EC%84%B1/

반응형

댓글()

mariadb 다운로드 주소

리눅스/MySQL|2018. 5. 4. 19:55
반응형

http://ftp.lfs-matrix.net/pub/blfs/conglomeration/mariadb/


반응형

댓글()

테이블 복사 및 데이터 복사하기

리눅스/MySQL|2018. 5. 2. 09:02
반응형

* 테이블을 생성하면서 데이터도 같이 복사

select * into [새로운 테이블명] From [기존 테이블명]


 

* 구조만 복사

select * into [새로운 테이블명] From [기존 테이블명] Where 1=2

 


* 테이블에 있는 데이터만 복사

inser into [복사될 테이블명] Select * From [기존 테이블명]


 

* 특정 데이터만 복사 

inser into [복사될 테이블명] Select * From [기존 테이블명]  Where 조건



출처: http://blog.okno.co.kr/419 [JavaRa~!!]

반응형

댓글()

테이블 엔진 변경하기

리눅스/MySQL|2018. 5. 1. 18:56
반응형

InnoDB로 변경

ALTER TABLE `테이블명` ENGINE = INNODB


MyISAM으로 변경

ALTER TABLE `테이블명` ENGINE = MYISAM

반응형

댓글()

innodb 데이터 깨졌을 경우 복구 방법 (Table [테이블명] doesn't exist in engine)

리눅스/MySQL|2018. 4. 30. 17:49
반응형

[증상]


ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine



[해결]


1) 전제

  - 해당 테이블의 엔진은 InnoDB 이며 ibd, frm 파일이 존재함.

  - 테이블의 스키마 구조를 알아야 함.


2) 실행

- 서비스 종료 후 ibd 파일, frm 파일 백업

- 서비스 시작 후 해당 테이블 drop

- 테이블 재생성

- 테이블스페이스 변경


mysql> ALTER TABLE [테이블명] DISCARD TABLESPACE ;

system cp /백업경로/[테이블명].ibd [데이터베이스 데이터 디렉토리]

mysql> ALTER TABLE [테이블명] IMPORT TABLESPACE ;



출처: http://adbancedteam.tistory.com/194 [aDBanced Team]

반응형

댓글()

mysqldump 명령시 부하 줄이는 옵션

리눅스/MySQL|2017. 10. 19. 14:50
반응형

--master-data=2 --single-transaction --quick


위 옵션을 추가하여 dump 받으면 아파치 다운등의 문제가 발생하지 않습니다.


반응형

댓글()

mysql 테이블 생성 예제

리눅스/MySQL|2017. 9. 1. 15:31
반응형

create table test (id int(3) AUTO_INCREMENT PRIMARY KEY, name varchar(20), age int(3));

insert test (name, age) values ('CDH', '20');

insert test (name, age) values ('JJE', '21');

반응형

댓글()