StoryCode

Data Directory 변경

Database 관리/Maria DB
반응형

[ Windows ]

- maraidb service 중지

- my.ini 에 datadir 을 수정

- data/ 아래의 모든 디렉토리와 파일을 수정한 디렉토리로 이동

- 혹시 my.ini 가 data/my.ini 에 들어있다면, data/my.ini 는 그대로 둘 것

- mariadb service 시작

 

[ Ubuntu in WSL ]

- su) service mariadb stop

- cp /var/lib/mysql /mydir/

- chown -R mysql:mysql /mydir

- /etc/mysql/mariadb.conf.d/50-server.cnf 에 datadir = /mydir 로 수정

- su) service mariadb start

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

binlog 삭제  (0) 2023.01.16
Install mariadb.10.6.tar.gz in ubuntu  (0) 2022.01.18
Lock, 락, 해결  (0) 2021.10.29
RDS, export, mysqldump/ import  (0) 2021.10.14
[편법] CVS Parsing, 파싱  (0) 2021.09.23

binlog 삭제

Database 관리/Maria DB
반응형

# 참조 : https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hanajava&logNo=221008795923&categoryNo=46&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

 

 

Maria02 [test]> show binary logs;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000035 |        401 |
| mysql-bin.000036 |        362 |
| mysql-bin.000037 | 1073742328 |
| mysql-bin.000038 |   77130306 |
+------------------+------------+
4 rows in set (0.05 sec)


Maria02 [test]> purge binary logs to 'mysql-bin.000038';
Query OK, 0 rows affected (0.10 sec)

 
Maria02 [test]> show binary logs;
0 row in set (0.14 sec)

Maria02 [test]>

 

​========================================================================================

DB에 레코드가 많이 쌓여 테이블 파일의 용량이 증가하는 것도 문제지만,

binary log를 초기 세팅대로 방치하면 금방 HDD가 꽉 차게 된다.

 

 

# ll -h
total 22G
drwx------ 2 mysql mysql 4.0K Feb 5 10:37 acclog
-rw-r----- 1 mysql mysql 112K Feb 5 19:09 localhost.localdomain.err
-rw-rw---- 1 mysql mysql 5 Feb 5 19:09 localhost.localdomain.pid
drwx------ 2 mysql mysql 4.0K Feb 5 10:15 mysql
-rw-rw---- 1 mysql mysql 1.1G Feb 15 07:13 mysql-bin.000174
-rw-rw---- 1 mysql mysql 1.1G Feb 15 07:24 mysql-bin.000175
-rw-rw---- 1 mysql mysql 1.1G Feb 15 07:36 mysql-bin.000176
-rw-rw---- 1 mysql mysql 1.1G Feb 15 07:47 mysql-bin.000177
-rw-rw---- 1 mysql mysql 1.1G Feb 15 07:59 mysql-bin.000178
-rw-rw---- 1 mysql mysql 1.1G Feb 15 08:16 mysql-bin.000179
-rw-rw---- 1 mysql mysql 1.1G Feb 15 08:31 mysql-bin.000180
-rw-rw---- 1 mysql mysql 1.1G Feb 15 08:42 mysql-bin.000181
-rw-rw---- 1 mysql mysql 1.1G Feb 15 08:54 mysql-bin.000182
-rw-rw---- 1 mysql mysql 1.1G Feb 15 09:05 mysql-bin.000183
-rw-rw---- 1 mysql mysql 1.1G Feb 15 09:17 mysql-bin.000184
-rw-rw---- 1 mysql mysql 1.1G Feb 15 09:29 mysql-bin.000185
-rw-rw---- 1 mysql mysql 1.1G Feb 15 09:40 mysql-bin.000186
-rw-rw---- 1 mysql mysql 1.1G Feb 15 09:52 mysql-bin.000187
-rw-rw---- 1 mysql mysql 1.1G Feb 15 10:04 mysql-bin.000188
-rw-rw---- 1 mysql mysql 334M Feb 15 11:43 mysql-bin.000189
-rw-r----- 1 mysql mysql 418 Feb 15 10:04 mysql-bin.index
drwx------ 2 mysql mysql 4.0K Feb 5 10:15 test


 

data 디렉토리(configure에 따라 다름) 내의 파일들을 보면 binary log가 많이 생성된 것을 알 수 있다.

파일을 rm 명령어로 직접 지우지 말고 mysql 콘솔에서 지우는 것이 바람직하다.

 

 

 mysql> show binary logs;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000174 | 1073742003 |
| mysql-bin.000175 | 1073742050 |
| mysql-bin.000176 | 1073741968 |
| mysql-bin.000177 | 1073742039 |
| mysql-bin.000178 | 1073741908 |
| mysql-bin.000179 | 1073742024 |
| mysql-bin.000180 | 1073742027 |
| mysql-bin.000181 | 1073741959 |
| mysql-bin.000182 | 1073741883 |
| mysql-bin.000183 | 1073741988 |
| mysql-bin.000184 | 1073741999 |
| mysql-bin.000185 | 1073741927 |
| mysql-bin.000186 | 1073742098 |
| mysql-bin.000187 | 1073742018 |
| mysql-bin.000188 | 1073742083 |
| mysql-bin.000189 |  349569498 |
+------------------+------------+
16 rows in set (0.00 sec)

mysql 콘솔에서는 위 명령으로 확인 가능.

 

 

mysql> purge master logs to 'mysql-bin.000186';
Query OK, 0 rows affected (0.91 sec)
mysql> show binary logs;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000186 | 1073742098 |
| mysql-bin.000187 | 1073742018 |
| mysql-bin.000188 | 1073742083 |
| mysql-bin.000189 |  349742255 |
+------------------+------------+
4 rows in set (0.00 sec)

위 명령어에서 binary 로그 이름을 지정하면 해당 파일 이전의 파일들을 모두 삭제한다.

 

 

mysql> set global expire_logs_days=2;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE '%expire%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 2     |
+------------------+-------+
1 row in set (0.00 sec)

그리고 binary 로그를 저장할 주기를 설정한다.

시스템 사고가 발생해도 근시일 내에 확인할 수 있거나 특별히 백업해 분석할 것이 아니라면 2일 정도면 충분할 것이다.

 

출처: http://whiterussian.tistory.com/36 [화이트 러시안]

​==================================================================================

​MySQL에서 사용하는 log-bin이라는 옵션은 사용된 쿼리들이 로깅되는 파일이며 Innodb 혹은 Replication등에서 사용되곤 합니다.

하지만 이 파일의 문제는 무한정 늘어난다는 것입니다. relay-log-space-limit 같은 옵션이 있지만 이 옵션은 Replication에서 사용되는 relay-log-bin의 용량을 제한 하는 옵션이지 해결책이 되지 못합니다.

하지만 이 파일을 정리하는 방법이 있습니다.

우선 다음의 Query를 사용하는 것입니다.

PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)

 

INTERVAL에서는 원하시는 로깅 시점을 기록하시면 됩니다. 위의 경우에는 30일 이전의 로깅 정보를 삭제하게 됩니다.

차례차례 해보도록 하겠습니다.

 

1. 현재의 하드디스크 용량 상태를 확인합니다.

[root@Theeye db]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              18G  1.9G   15G  12% /
/dev/sda3              15G  803M   13G   6% /home
/dev/sda2              97G   78G   15G  85% /usr/local/mysql/db

데이터베이스 공간이 85%나 사용되어 곧 꽉찰지도 모른다는 불안감에 휩싸이게 되었습니다.

 

2. log-bin 파일을 확인해 봅시다.
[root@Theeye db]# ls mysql-bin.*
mysql-bin.000001  mysql-bin.000002  mysql-bin.000003 ......  mysql-bin.000073

파일이 엄청나게 많이 있습니다.

 

3. 다음 명령어를 수행합니다.
mysql -e "PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)"

물론 mysql에 접속하셔서 위의 명령어를 입력하셔도 됩니다. Super권한을 가진 root계정으로 실행해 주세요.

 

4. log-bin 파일이 줄었나 확인해 봅시다.
[root@Theeye db]# ls mysql-bin.*
mysql-bin.000041  mysql-bin.000042  mysql-bin.000043 ......  mysql-bin.000073

41번 이전의 파일들이 모두 삭제 되었습니다. 41번 부터가 최근 30일 이내의 로그정보가 남아있는 모양이군요.

 

5. 하드디스크 용량 상태를 확인해 봅시다.
[root@Theeye db]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              18G  1.9G   15G  12% /
/dev/sda3              15G  803M   13G   6% /home
/dev/sda2              97G   40G   53G  43% /usr/local/mysql/db

확실히 용량이 많이 확보가 되었군요^^

주기적인 실행이 필요하실 경우에는 위의 명령어를 crontab에 등록하시면 됩니다. 일주일에 한번정도의 실행이 적당하겠네요.

=================================================================​

MySQL Binary Log 는 add, delete, insert, update 등의 query 가 저장되어 있는 파일로서

MySQL을 설치하게 되면 기본적으로 MySQL Binary Log 가 생성됩니다.
Binary Log 를 쌓지 않아도 되는 MySQL 구동 환경에서는 Binary Log 를 삭제하므로, 디스크 공간
여유 공간을 확보할 수 있는데, MySQL Binary Log 를 지우는 방법에 대해서 알아보겠습니다.

1. MySQL Replication 환경에서 지우기

  - MySQL Replication MASTER 서버
    shell> mysql -u root -p
    mysql> RESET MASTER;

  - MySQL Replication SLAVE 서버
    shell> mysql -u root -p
    mysql> RESET MASTER;

2. MySQL Binary Log sequence number 또는 특정 일자로 지우기

  shell> mysql -u root -p
  mysql> PURGE BINARY LOGS TO 'mysql-bin.000015';
  shell> mysql -u root -p
  mysql> PURGE BINARY LOGS BEFORE '2009-05-01 00:00:00';

3. mysqladmin flush-logs 명령어를 통해서 MySQL Binary Log 지우기

   shell> mysqladmin -u root -p flush-logs

4. MySQL Binary Log 생성을 방지하는 방법

  /etc/my.cnf 파일에서 아래 라인을 주석 처리
  log-bin

5. MySQL Binary Log 를 특정 1주일까지만 생성 및 보관하기
  /etc/my.cnf 파일에서 아래 라인을 추가
  expire_logs_days = 7

 

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

Data Directory 변경  (0) 2023.05.26
Install mariadb.10.6.tar.gz in ubuntu  (0) 2022.01.18
Lock, 락, 해결  (0) 2021.10.29
RDS, export, mysqldump/ import  (0) 2021.10.14
[편법] CVS Parsing, 파싱  (0) 2021.09.23

Install mariadb.10.6.tar.gz in ubuntu

Database 관리/Maria DB
반응형

# 참조 : https://dbwriter.io/installation-mariadb10/

 

1) 다운로드

https://downloads.mariadb.org/

 

2) 압축해제 및 mysql 사용자 추가

sudo groupadd mysql
sudo useradd -g mysql mysql
cd /usr/local
sudo tar -zxvpf mariadb-10.6.4-linux-systemd-x86_64.tar.gz
sudo ln -s mariadb-10.6.4-linux-systemd-x86_64 mysql

 

3) vi /etc/my.cnf

[client-server]
port=3306

# This will be passed to all MariaDB clients
[client]

# The MariaDB server
[mysqld]
# Directory where you want to put your data
datadir=/usr/local/mysql/data

 

character-set-server = utf8mb4
init_connect = SET collation_connection = utf8mb4_general_ci
init_connect = SET NAMES utf8mb4


# This is the prefix name to be used for all log, error and replication files
log-basename=mariadb

 

 

 

4) 초기화

cd /usr/local/mysql
sudo ./scripts/mysql_install_db --user=mysql

 

 

5) 디렉토리 권한 변경

/usr/local/mysql> sudo chown -R root .
/usr/local/mysql> sudo chown -R mysql data

 

6) 서버 기동

sudo ./bin/mysqld_safe --user=mysql &
or
sudo ./bin/mysqld_safe --defaults-file=~/.my.cnf --user=mysql &

 

7) 오류발생시

# ERROR 2002 (HY000): Can't connect to local server through socket '/var/run/mysqld/mysqld.sock' (2)

sudo mkdir /var/run/mysqld

sudo ln - /tmp/mysql.sock /var/run/mysqld/mysqld.sock

 

8)

> mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.4-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> select user();

+------------------+
| user()           |
+------------------+
| user@localhost |
+------------------+

 

9)  sudo ./mysql_secure_installation

Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password: "ROOT 비번 설정"
Re-enter new password:
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] n
Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

 

10)

mysql> select host, user from mysql.user;

mysql> create user ml@localhost identified by 'ml';

mysql> flush privileges;

mysql> grant all privileges on *.* to ml@'localhost' identified by 'ml';

mysql> grant all privileges on *.* to ml@'%' identified by 'ml';
mysql> flush privileges;

 

11)

show variables like '%set%';

SELECT schema_name, default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA ;

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

Data Directory 변경  (0) 2023.05.26
binlog 삭제  (0) 2023.01.16
Lock, 락, 해결  (0) 2021.10.29
RDS, export, mysqldump/ import  (0) 2021.10.14
[편법] CVS Parsing, 파싱  (0) 2021.09.23

Lock, 락, 해결

Database 관리/Maria DB
반응형

SELECT   TRX_MYSQL_THREAD_ID

FROM INFORMATION_SCHEMA.INNODB_TRX A;

 

KILL trx_mysql_thread_id;

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

binlog 삭제  (0) 2023.01.16
Install mariadb.10.6.tar.gz in ubuntu  (0) 2022.01.18
RDS, export, mysqldump/ import  (0) 2021.10.14
[편법] CVS Parsing, 파싱  (0) 2021.09.23
UDF 만들기  (0) 2021.05.06

RDS, export, mysqldump/ import

Database 관리/Maria DB
반응형

# 참조 : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html

 

1) 두 데이타베이스로 원격 접속가능한 EC2 한대 필요. ( Function, Trigger, Event 덤프 필수 )

 

2.소스 db dump) /bin/mysqldump --routines --trigger --databases db1 db2 --single-transaction -r /mysqldump/dbdump.sql -h sourcedbserverip -u id -p password

 

3-1.타겟 db 접속) mysql -h targetdbserverip -u id -p password

 

3-2. source /mysqldump/dbdump.sql

 

끝 .

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

Install mariadb.10.6.tar.gz in ubuntu  (0) 2022.01.18
Lock, 락, 해결  (0) 2021.10.29
[편법] CVS Parsing, 파싱  (0) 2021.09.23
UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16

[편법] CVS Parsing, 파싱

Database 관리/Maria DB
반응형

- mysql 혹은 mariadb 에는 csv 를 파싱하는 함수가 없음.

- user function 을 짤수는 있음.

- 편법으로는 아래처럼 json_value 혹은 json_parse 으로 추출하는 것이 가능함.

 

column1 = "1","2",3

column1 이라는 컬럼에 위와 같은 csv 포맷 데이타가 있다고 가정하면,

select json_value(concat('{"data": [', column1, ']}'), '$.data[0]') c1;
c1 = 1

select json_value(concat('{"data": [', column1, ']}'), '$.data[1]') c2;
c2 = 2

select json_value(concat('{"data": [', column1, ']}'), '$.data[2]') c3;
c3= 3

 

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

Lock, 락, 해결  (0) 2021.10.29
RDS, export, mysqldump/ import  (0) 2021.10.14
UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23

UDF 만들기

Database 관리/Maria DB
반응형

 

 

 

참고) DROP FUNCTION 을 여러번 명령날려야 하는 듯 하다. 여러 번 DROP FUNCTION 을 하다보면 데이타베이스가 내려갔다가 다시 올라온다. 작업시 매우 주의할 것.

 

반응형

Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf

Database 관리/Maria DB
반응형
mysql -u root -p

* 참조 : computingforgeeks.com/how-to-install-mariadb-on-ubuntu-focal-fossa/

sudo apt update && sudo apt upgrade
sudo apt -y install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
sudo apt update
sudo apt install mariadb-server mariadb-client
sudo mysql_secure_installation
# 대답은 전부 Y 로 함.
systemctl status mysql
# mysql5.7 / mariadb10.1 이상의 root 계정은 터미널에서만 사용만 가능.

CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%';

# root 권한 부여
UPDATE mysql.user SET GRANT_PRIV = 'Y', SUPER_PRIV = 'Y' WHERE USER = '아이디';
FLUSH PRIVILEGES;

 

 

 

 

* UDF.system call

sudo apt-get install make gcc
sudo apt-get install libmysqlclient-dev 
sudo apt install libmariadb-dev
sudo apt install default-libmysqlclient-dev
# libmysqlclient15-dev 는 안됨.



mysql_config --include
>> -I/usr/include/mariadb -I/usr/include/mariadb/mysql : 여기에 my_global.h, m_ctype.h 등이 있어야 함.

# "lib_mysqludf_sys.c" 에서, 

아래 삭제후 저장
    #include <my_global.h>
    #include <my_sys.h>
    #include <m_ctype.h>
    #include <m_string.h>

#include <mysql.h> 가 include 되는 게 중요.

sudo ./install.sh # so 생성을 위해서



mysql> SHOW VARIABLES LIKE 'plugin_dir';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| plugin_dir    | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.001 sec)

# /usr/lib/mysql/plugin/ 에 so 가 있어야 함.
sudo cp /usr/lib/lib_mysqludf_sys.so /usr/lib/mysql/plugin/

sudo ./install.sh # so 를 function 에 등록을 위해서

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

[편법] CVS Parsing, 파싱  (0) 2021.09.23
UDF 만들기  (0) 2021.05.06
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03

maria10.zip.windows10 64bit.설치

Database 관리/Maria DB
반응형

참조 ) https://jbongsu.blogspot.com/2018/07/mysqlmariadbsql-mariadb-10216-zip.html

참조 ) 

 

 

1) zip 을 다운로드하여 특정 디렉토리에 푼후, PATH 에 bin 추가

Ex> e:\DATABASE\mariadb-10.4.12-winx64

 

 

2) 관리자모드.DOS 창을 오픈

bin\mysql_install_db --datadir=e:\DATABASE\mariadb-10.4.12-winx64\data --service="MariaDB" --port=3306 --password=비번

 

3) service 에서 start 시키기

 

4) 이미 2) 에서 비번은 설정했으나, 변경시 아래 실행

mysql -u root -p

use mysql;

select user, host from mysql.user;
alter user 'root'@'localhost' identified by '비번';
flush privileges;

 

5) 

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03
설치 및 설정  (0) 2018.10.31

MySQL.무인스톨설치

Database 관리/Maria DB
반응형

참조)

https://m.blog.naver.com/PostView.nhn?blogId=tweakerz&logNo=220947651834&proxyReferer=https:%2F%2Fwww.google.com%2F

 

1) c:\mysql 폴더에 zip 파일 풀기

 

2) path 에 c:\mysql\bin 추가하기

 

3) my-default.ini 를 my.ini 로 복사

 

4) my.ini

[mysqldump]
default-character-set = utf8

[client]
default-character-set = utf8

 

[mysql]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8
character-set-client-handshake = FALSE
skip-character-set-client-handshake

 

basedir = C:/mysql 와 같이 mysql 설치경로를 입력
datadir = C:/mysql/data 와 mysql 설치경로 하위의 DB폴더명
port = 3306 와 같이 기본3306포트를 지정합니다.

 

5) 설치 초기화

mysqld --install

mysqld --initialize

 

6) 서비스 시작

net start mysql

 

7) root 암호

data/*.err 파일안에서 password 로 검색해보면 임의 암호가 보임.

 

8) 접속 후 비밀번호 변경

mysql -uroot -p

show databasesalter user `root`@`localhost` identified by 'abc123'

 

9) 

 

 

 

 

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03
설치 및 설정  (0) 2018.10.31