반응형

생성시 설정

CREATE DATABASE createDatabaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

수정

ALTER DATABASE databaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

반응형
반응형

Illegal mix of collations 

컬럼 CHARACTER이 안맞아서 발생한다.

컬럼 캐릭터셋이 다른데 조인 걸어 조회쿼리를 실행 했을때 발생한다.

utf8_unicode_ci 와 utf8_grneral_ci 로 각각 다른 캐릭터셋 이었다.

암꺼나 같은 걸로 변경해주면 해결 끝!.

반응형
반응형

포린키 생성 실패


메시지 내용


2017-10-20 14:53:53 c8ca8b70 Error in foreign key constraint of table CYBER_EDU_MUSEUM_UPDATE/#sql-532_1dca:

 FOREIGN KEY (`DSPY_SIL_CODE`, `PART_NO`) REFERENCES `JNT_DSPY_PART` (`DSPY_SIL_CODE`, `PART_NO`):

Cannot find an index in the referenced table where the

referenced columns appear as the first columns, or column types

in the table and the referenced table do not match for constraint.

Note that the internal storage type of ENUM and SET changed in

tables created with >= InnoDB-4.1.12, and such columns in old tables

cannot be referenced by such columns in new tables.

See http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

for correct foreign key definition.



내가 찾아봐서 해결한 방법은

컬럼에 utf8_unicode_ci , utf8_general_ci 두개를 참조 컬럼과 외래키 컬럼의 콜렉션타입을 다르게 해서 였다.

각각의 테이블 키 컬럼의 타입과 참조 컬럼의 타입을 같게 아무거나 맞춰주니 포린키 생성 성공했다.


utf8_general_ci 에는 악센트 문자가 없어서 엑센트 없는문자로만 나온다네요.

utf8_general_ci로 해야 속도가 빠르다고는 한다. 


제일 중요한건 한가지 타입으로 맞춰주는거.



반응형
반응형

window mysql 5.6  

my.ini 파일에 하단 내용 추가 


lower_case_table_names = 0  //  테이블 생성 및 조회 시 대·소문자 구분한다.

lower_case_table_names = 1  //  입력 값이 대·소문자든 소문자로 인식 소문자 인식 파일 생성

lower_case_table_names = 2  //  윈도우에서 대·소문자를 구분해서 테이블생성


리눅스와 유닉스의 경우 0, 윈도우의 경우 1, 맥키토시의 경우 2 가 기본 값


반응형
반응형

window mysql my.ini 파일 찾기


서비스 열기 -> mysql 서비스 열기

실행파일경로 : 

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56


C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 요놈이 경로다.


반응형
반응형

mysql 에서 예약어를 사용 할때 다음과 같은 에러가 나온다.


mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

쿼더 기호를 이용해서 다음과 같이 사용 할 수도 있다.

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

예약어들은 5.7 기준


CESSIBLE (R)ACCOUNT[a]ACTION
ADD (R)AFTERAGAINST
AGGREGATEALGORITHMALL (R)
ALTER (R)ALWAYS[b]ANALYSE
ANALYZE (R)AND (R)ANY
AS (R)ASC (R)ASCII
ASENSITIVE (R)ATAUTOEXTEND_SIZE
AUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE (R)BEGIN
BETWEEN (R)BIGINT (R)BINARY (R)
BINLOGBITBLOB (R)
BLOCKBOOLBOOLEAN
BOTH (R)BTREEBY (R)
BYTECACHECALL (R)
CASCADE (R)CASCADEDCASE (R)
CATALOG_NAMECHAINCHANGE (R)
CHANGEDCHANNEL[c]CHAR (R)
CHARACTER (R)CHARSETCHECK (R)
CHECKSUMCIPHERCLASS_ORIGIN
CLIENTCLOSECOALESCE
CODECOLLATE (R)COLLATION
COLUMN (R)COLUMNSCOLUMN_FORMAT
COLUMN_NAMECOMMENTCOMMIT
COMMITTEDCOMPACTCOMPLETION
COMPRESSEDCOMPRESSION[d]CONCURRENT
CONDITION (R)CONNECTIONCONSISTENT
CONSTRAINT (R)CONSTRAINT_CATALOGCONSTRAINT_NAME
CONSTRAINT_SCHEMACONTAINSCONTEXT
CONTINUE (R)CONVERT (R)CPU
CREATE (R)CROSS (R)CUBE
CURRENTCURRENT_DATE (R)CURRENT_TIME (R)
CURRENT_TIMESTAMP (R)CURRENT_USER (R)CURSOR (R)
CURSOR_NAMEDATADATABASE (R)
DATABASES (R)DATAFILEDATE
DATETIMEDAYDAY_HOUR (R)
DAY_MICROSECOND (R)DAY_MINUTE (R)DAY_SECOND (R)
DEALLOCATEDEC (R)DECIMAL (R)
DECLARE (R)DEFAULT (R)DEFAULT_AUTH
DEFINERDELAYED (R)DELAY_KEY_WRITE
DELETE (R)DESC (R)DESCRIBE (R)
DES_KEY_FILEDETERMINISTIC (R)DIAGNOSTICS
DIRECTORYDISABLEDISCARD
DISKDISTINCT (R)DISTINCTROW (R)
DIV (R)DODOUBLE (R)
DROP (R)DUAL (R)DUMPFILE
DUPLICATEDYNAMICEACH (R)
ELSE (R)ELSEIF (R)ENABLE
ENCLOSED (R)ENDENDS
ENGINEENGINESENUM
ERRORERRORSESCAPE
ESCAPED (R)EVENTEVENTS
EVERYEXCHANGEEXECUTE
EXISTS (R)EXIT (R)EXPANSION
EXPIREEXPLAIN (R)EXPORT
EXTENDEDEXTENT_SIZEFALSE (R)
FASTFAULTSFETCH (R)
FIELDSFILEFILE_BLOCK_SIZE[e]
FILTER[f]FIRSTFIXED
FLOAT (R)FLOAT4 (R)FLOAT8 (R)
FLUSHFOLLOWS[g]FOR (R)
FORCE (R)FOREIGN (R)FORMAT
FOUNDFROM (R)FULL
FULLTEXT (R)FUNCTIONGENERAL
GENERATED[h] (R)GEOMETRYGEOMETRYCOLLECTION
GET (R)GET_FORMATGLOBAL
GRANT (R)GRANTSGROUP (R)
GROUP_REPLICATION[i]HANDLERHASH
HAVING (R)HELPHIGH_PRIORITY (R)
HOSTHOSTSHOUR
HOUR_MICROSECOND (R)HOUR_MINUTE (R)HOUR_SECOND (R)
IDENTIFIEDIF (R)IGNORE (R)
IGNORE_SERVER_IDSIMPORTIN (R)
INDEX (R)INDEXESINFILE (R)
INITIAL_SIZEINNER (R)INOUT (R)
INSENSITIVE (R)INSERT (R)INSERT_METHOD
INSTALLINT (R)INT1 (R)
INT2 (R)INT3 (R)INT4 (R)
INT8 (R)INTEGER (R)INTERVAL (R)
INTO (R)INVOKERIO
IO_AFTER_GTIDS (R)IO_BEFORE_GTIDS (R)IO_THREAD
IPCIS (R)ISOLATION
ISSUERITERATE (R)JOIN (R)
JSON[j]KEY (R)KEYS (R)
KEY_BLOCK_SIZEKILL (R)LANGUAGE
LASTLEADING (R)LEAVE (R)
LEAVESLEFT (R)LESS
LEVELLIKE (R)LIMIT (R)
LINEAR (R)LINES (R)LINESTRING
LISTLOAD (R)LOCAL
LOCALTIME (R)LOCALTIMESTAMP (R)LOCK (R)
LOCKSLOGFILELOGS
LONG (R)LONGBLOB (R)LONGTEXT (R)
LOOP (R)LOW_PRIORITY (R)MASTER
MASTER_AUTO_POSITIONMASTER_BIND (R)MASTER_CONNECT_RETRY
MASTER_DELAYMASTER_HEARTBEAT_PERIODMASTER_HOST
MASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORD
MASTER_PORTMASTER_RETRY_COUNTMASTER_SERVER_ID
MASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATH
MASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRL
MASTER_SSL_CRLPATHMASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT (R)
MASTER_TLS_VERSION[k]MASTER_USERMATCH (R)
MAXVALUE (R)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOUR
MAX_ROWSMAX_SIZEMAX_STATEMENT_TIME[l]
MAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUM
MEDIUMBLOB (R)MEDIUMINT (R)MEDIUMTEXT (R)
MEMORYMERGEMESSAGE_TEXT
MICROSECONDMIDDLEINT (R)MIGRATE
MINUTEMINUTE_MICROSECOND (R)MINUTE_SECOND (R)
MIN_ROWSMOD (R)MODE
MODIFIES (R)MODIFYMONTH
MULTILINESTRINGMULTIPOINTMULTIPOLYGON
MUTEXMYSQL_ERRNONAME
NAMESNATIONALNATURAL (R)
NCHARNDBNDBCLUSTER
NEVER[m]NEWNEXT
NONODEGROUPNONBLOCKING[n]
NONENOT (R)NO_WAIT
NO_WRITE_TO_BINLOG (R)NULL (R)NUMBER
NUMERIC (R)NVARCHAROFFSET
OLD_PASSWORD[o]ON (R)ONE
ONLYOPENOPTIMIZE (R)
OPTIMIZER_COSTS[p] (R)OPTION (R)OPTIONALLY (R)
OPTIONSOR (R)ORDER (R)
OUT (R)OUTER (R)OUTFILE (R)
OWNERPACK_KEYSPAGE
PARSERPARSE_GCOL_EXPR[q]PARTIAL
PARTITION (R)PARTITIONINGPARTITIONS
PASSWORDPHASEPLUGIN
PLUGINSPLUGIN_DIRPOINT
POLYGONPORTPRECEDES[r]
PRECISION (R)PREPAREPRESERVE
PREVPRIMARY (R)PRIVILEGES
PROCEDURE (R)PROCESSLISTPROFILE
PROFILESPROXYPURGE (R)
QUARTERQUERYQUICK
RANGE (R)READ (R)READS (R)
READ_ONLYREAD_WRITE (R)REAL (R)
REBUILDRECOVERREDOFILE
REDO_BUFFER_SIZEREDUNDANTREFERENCES (R)
REGEXP (R)RELAYRELAYLOG
RELAY_LOG_FILERELAY_LOG_POSRELAY_THREAD
RELEASE (R)RELOADREMOVE
RENAME (R)REORGANIZEREPAIR
REPEAT (R)REPEATABLEREPLACE (R)
REPLICATE_DO_DB[s]REPLICATE_DO_TABLE[t]REPLICATE_IGNORE_DB[u]
REPLICATE_IGNORE_TABLE[v]REPLICATE_REWRITE_DB[w]REPLICATE_WILD_DO_TABLE[x]
REPLICATE_WILD_IGNORE_TABLE[y]REPLICATIONREQUIRE (R)
RESETRESIGNAL (R)RESTORE
RESTRICT (R)RESUMERETURN (R)
RETURNED_SQLSTATERETURNSREVERSE
REVOKE (R)RIGHT (R)RLIKE (R)
ROLLBACKROLLUPROUTINE
ROWROWSROW_COUNT
ROW_FORMATRTREESAVEPOINT
SCHEDULESCHEMA (R)SCHEMAS (R)
SCHEMA_NAMESECONDSECOND_MICROSECOND (R)
SECURITYSELECT (R)SENSITIVE (R)
SEPARATOR (R)SERIALSERIALIZABLE
SERVERSESSIONSET (R)
SHARESHOW (R)SHUTDOWN
SIGNAL (R)SIGNEDSIMPLE
SLAVESLOWSMALLINT (R)
SNAPSHOTSOCKETSOME
SONAMESOUNDSSOURCE
SPATIAL (R)SPECIFIC (R)SQL (R)
SQLEXCEPTION (R)SQLSTATE (R)SQLWARNING (R)
SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDS
SQL_BIG_RESULT (R)SQL_BUFFER_RESULTSQL_CACHE
SQL_CALC_FOUND_ROWS (R)SQL_NO_CACHESQL_SMALL_RESULT (R)
SQL_THREADSQL_TSI_DAYSQL_TSI_HOUR
SQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTER
SQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEAR
SSL (R)STACKEDSTART
STARTING (R)STARTSSTATS_AUTO_RECALC
STATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUS
STOPSTORAGESTORED[z] (R)
STRAIGHT_JOIN (R)STRINGSUBCLASS_ORIGIN
SUBJECTSUBPARTITIONSUBPARTITIONS
SUPERSUSPENDSWAPS
SWITCHESTABLE (R)TABLES
TABLESPACETABLE_CHECKSUMTABLE_NAME
TEMPORARYTEMPTABLETERMINATED (R)
TEXTTHANTHEN (R)
TIMETIMESTAMPTIMESTAMPADD
TIMESTAMPDIFFTINYBLOB (R)TINYINT (R)
TINYTEXT (R)TO (R)TRAILING (R)
TRANSACTIONTRIGGER (R)TRIGGERS
TRUE (R)TRUNCATETYPE
TYPESUNCOMMITTEDUNDEFINED
UNDO (R)UNDOFILEUNDO_BUFFER_SIZE
UNICODEUNINSTALLUNION (R)
UNIQUE (R)UNKNOWNUNLOCK (R)
UNSIGNED (R)UNTILUPDATE (R)
UPGRADEUSAGE (R)USE (R)
USERUSER_RESOURCESUSE_FRM
USING (R)UTC_DATE (R)UTC_TIME (R)
UTC_TIMESTAMP (R)VALIDATION[aa]VALUE
VALUES (R)VARBINARY (R)VARCHAR (R)
VARCHARACTER (R)VARIABLESVARYING (R)
VIEWVIRTUAL[ab] (R)WAIT
WARNINGSWEEKWEIGHT_STRING
WHEN (R)WHERE (R)WHILE (R)
WITH (R)WITHOUT[ac]WORK
WRAPPERWRITE (R)X509
XAXID[ad]XML
XOR (R)YEARYEAR_MONTH (R)
ZEROFILL (R)


반응형
반응형

create database jejuwater;

grant all privileges on jejuwater.* to jejuwater@'%' identified by 'jejuwater';

flush privileges;


데이터베이스 생성

mysql> create database 데이터베이스명;


권한 추가

mysql> grant all privileges on DB명.* to DB유저id@'%' identified by 'DB유저패스워드' with grant option;


반응형
반응형

MySQL DB 덤프 원격 자동 백업

주기적으로(최소한 하루 한 번) MySQL database 를 백업하기 위해 cron job 을 사용하여 매일 마다 백업 후, ftp 를 통해 특정 서버에 덤프파일을 업로드하도록 설정합니다.

실행환경

  • Ubuntu Server
  • LFTP
  • crontab

LFTP Install

커맨드라인 ftp 툴인 lftp 패키지를 사용하기 위해서 우선 lftp 를 설치합니다.

1
$ sudo apt-get install lftp

MySQL 서버의 백업을 위한 shell script

쉘 스크립트는 아래의 코드와 같습니다. 이를 통해서 /home/username/mysqldump/ 폴더에 특정 db 를 제외한 모든 데이터베이스의 덤프를 기록하고 FTP 서버에 업로드 됩니다. 사용자명과 비밀번호는 스크립트를 사용하기 전에 설정해야 합니다.

mysql.backup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS=""
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/home/username/mysqldump"
GZIP="$(which gzip)"
### FTP SERVER Login info ###
FTPU="ftp_user_name"
FTPP="ftp_password"
FTPS="ftp_address"
NOW=$(date +"%d-%m-%Y")

[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

DBS="$($MYSQL -u $MUSER -h $MHOST -Bse 'show databases')"
for db in $DBS
do
 if [ $db != "information_schema" ] && [ $db != "mysql" ] && [ $db != "dbname" ]
 then
   FILE=$BAK/$db.$NOW-$(date +"%T").gz
   $MYSQLDUMP -u $MUSER -h $MHOST $db | $GZIP -9 > $FILE
 fi
done
 
lftp -u $FTPU,$FTPP -e "mkdir ./$NOW;cd ./$NOW; mput ./mysqldump/*; quit" $FTPS

/home/username/mysql.backup.sh 로 저장한 후에, 실행 권한을 줍니다.

1
$ chmod +x ~/mysql.backup.sh

최초 백업을 위해서 쉘 스크립트를 실행합니다.

1
$ ./mysql.backup.sh

cron job 으로 MySQL 백업 자동화

cron job 에 작업을 등록하여 매일 정해진 시간에 위의 작업이 이루어질 수 있도록 합니다.

crontab 편집기를 실행하여 아래와 같이 설정합니다.

1
$ crontab -e
crontab
1
00 04 * * /home/username/mysql.backup.sh > /dev/null 2>&1

결과물

이로써 MySQL database Server 의 데이터베이스를 매일 백업해서 압축된 덤프파일을 특정 FTP 서버로 업로드 되도록 하는 작업이 완료되었습니다.

  1. SQL database Server 의 덤프폴더에는 데이터베이스명.%d-%m-%Y-%T.gz 형태의 압축된 백업 파일이 생성될 됩니다.
  2. 압축된 백업파일은 특정 FTP 서버에 날짜별 폴더를 만든 후, 각각 업로드 됩니다.
  3. 다음 날, 새롭게 백업 파일을 만들 때 이전 백업파일이 존재하면 해당 내용은 삭제하여 MySQL database Server 상에는 데이터베이스 별로 최신 백업파일 하나만이 존재하게 됩니다.

이후, 특정 FTP 서버로 전송된 백업 파일은 외부 저장소에 주기적으로 2차 백업을 하여 데이터베이스 보존에 심혈을 기울여야할 것 입니다.


반응형
반응형

su -
service mysql stop
rm -fr /var/lib/mysql/*
service mysql start
mysqladmin -u root password 'rawr'

반응형
반응형
 show function status;  

 

반응형

+ Recent posts