본문 바로가기

리눅스

APM 소스컴파일 설치(2) - MariaDB

반응형

https://downloads.mariadb.org/mariadb/10.5.9 

 

MariaDB 10.5.9 Stable - MariaDB

 

downloads.mariadb.org

 

 

[ 필수 라이브러리 및 도구 설치 ]

# yum install gcc gcc-c++ libtermcap-devel gdbm-devel zlib* libxml* freetype* libpng* libjpeg* iconv flex gmp ncurses-devel libaio perl -y

cmake는  3.7.2버전 이상 설치 (하지만 3.20 버전 설치 시 오류 있었음)

 1) cmake source install

   # wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.Z

   # mv cmake-3.7.2.tar.Z cmake-3.7.2.tar.gz

   # tar zxvf cmake-3.7.2.tar.gz

   # cd cmake-3.7.2

   # ./bootstrap --prefix=/usr/bin/cmake

   # make -j 8 && make install

 

 2) 명령어 설정

    # vi /etc/profile

     여기에 없으면 PATH가 없으면

    # vi /root/.bash_profile

         PATH=$PATH:$HOME/bin:/usr/local/apache/bin:/usr/bin/cmake/bin:   //추가

    

  source vi /root/.bash_profile

   

  3) 설치 확인

     # cmake --version

 


[MariaDB 계정 및 그룹 생성]

(범용성을 위해 MySQL 계정,그룹으로 생성해준다.)

groupadd -g 400 mysql

useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

 


  

# cd /usr/local/src

# wget -O mariadb-10.5.9.tar.gz https://downloads.mariadb.org/interstitial/mariadb-10.5.9/source/mariadb-10.5.9.tar.gz/from/https%3A//archive.mariadb.org/

 

# tar xvfz mariadb-10.5.9.tar.gz

# cd mariadb-10.5.9
# mkdir /usr/local/src/mariadb-10.5.9/build

# cd /usr/local/src/mariadb-10.5.9/build


# cmake ../ \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/socket/mysql.socket \

-DINSTALL_SYSCONFDIR=/etc \

-DINSTALL_SYSCONF2DIR=/etc/my.cnf.d \

-DMYSQL_TCP_PORT=3306 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_ARIA_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_FEDERATEDX_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DWITH_XTRADB_STORAGE_ENGINE=1 \

-DWITH_ZLIB=system \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_READLINE=1

 

# make -j 8 && make install

 

 

<메모리 부족 오류>

c++: internal compiler error: Killed (program cc1plus)

더보기

c++: internal compiler error: Killed (program cc1plus)

Please submit a full bug report,

with preprocessed source if appropriate.

See <http://bugzilla.redhat.com/bugzilla> for instructions.

make[2]: *** [storage/rocksdb/CMakeFiles/rocksdblib.dir/rocksdb/db/column_family.cc.o] Error 4

make[1]: *** [storage/rocksdb/CMakeFiles/rocksdblib.dir/all] Error 2

make: *** [all] Error 2


 

위와 같은 오류 발생 시 메모리 부족이 원인으로

 

메모리를 늘리는게 좋지만 불가능하다면

 

/swap 메모리 확인하고 용량을 늘려준다

 

# free -m   // 메모리, /swap 확인

 

 

# fallocate -l 1024M /swapfile

# sudo dd if=/dev/zero of=/swapfile count=1024 bs=1MiB

//요거 안해주면 CentOS 7.0에서 swapon: /myswap: swapon failed: Invalid argument 에러를 접하게 된다.

# chmod 0600 /swapfile

# mkswap /swapfile

# swapon /swapfile

# free -m

 

재부팅시에도 적용되도록 설정

 

# vi /etc/fstab

/swapfile swap swap defaults 0 0

# swapon -a

 

 

참고

 

https://arima18.tistory.com/6?category=713413

 

 

 


소스컴파일 설치 후 설정

 

MariaDB 초기 데이터 생성 및 권한 설정

\cp -arpf /usr/local/src/mariadb-10.5.9/build/scripts/mysql_install_db /usr/local/mysql/scripts/mysql_install_db

cd /usr/local/mysql

rm -rf /usr/local/mysql/data

perl /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

mkdir -p /usr/local/mysql/lnnoDB/redoLogs

mkdir -p /usr/local/mysql/lnnoDB/undoLogs

chown -R mysql /usr/local/mysql/data

chgrp -R mysql /usr/local/mysql

mkdir /usr/local/mysql/logs

mkdir /usr/local/mysql/tmp

chown mysql:mysql /usr/local/mysql/tmp

chown mysql:mysql /usr/local/mysql/logs

chown -R mysql:mysql /usr/local/mysql/data

 

MariaDB 서비스데몬생성 및 추가 설정

\cp -arpf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 750 /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

echo “/usr/local/mysql/lib” > /etc/ld.so.conf.d/mysql.conf

cd /usr/local/mysql/

ln -s lib lib64

cd /usr/local/mysql/support-files/

\mv -f /etc/my.cnf /etc/my.cnf.ori

 

MariaDB 설정파일 생성

vi /etc/my.cnf

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

[client]

#password = your_password

port = 3306

socket = /usr/local/mysql/tmp/socket/mysql.socket

 

[mysqld]

 

bind-address=0.0.0.0

port = 3306

socket = /usr/local/mysql/tmp/socket/mysql.socket

skip-external-locking

key_buffer_size = 384M

max_allowed_packet = 1M

table_open_cache = 512

sort_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 8M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 32M

thread_concurrency = 8

log-bin=mysql-bin

server-id = 1

 

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

 

[myisamchk]

key_buffer_size = 256M

sort_buffer_size = 256M

read_buffer = 2M

write_buffer = 2M

 

[mysqlhotcopy]

interactive-timeout

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

 

MariaDB 세부권한설정

chown mysql:mysql -R /usr/local/mysql

chmod 711 /usr/local/mysql

chmod 700 /usr/local/mysql/data

chmod 751 /usr/local/mysql/bin

chmod 750 /usr/local/mysql/bin/*

chmod 755 /usr/local/mysql/bin/mysql

chmod 755 /usr/local/mysql/bin/mysqldump

chmod 700 /usr/local/src/mariadb-10.5.6/build/support-files/mysql.server

chmod 700 /usr/local/mysql/support-files/mysql.server

chmod 750 /etc/init.d/mysqld

 

MariaDB 환경변수경로 설정

vi /etc/profile

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

PATH=$PATH:$HOME/bin:/usr/local/apache/bin:/usr/bin/cmake/bin:/usr/local/mysql/bin:

:wq

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

source /etc/profile

 

MariaDB 초기 비밀번호 설정은 없다.

 

MariaDB 시작 확인

/etc/init.d/mysqld start

netstat -ntlp  로 확인

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7388/mysqld

/etc/init.d/mysqld stop

chkconfig --add mysqld

systemctl enable mysqld

systemctl start mysqld

systemctl status mysqld

● mysqld.service – LSB: start and stop MariaDB
Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
Active: active (running) since
Docs: man:systemd-sysv-generator(8)
Process: 21375 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
Process: 21556 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/mysqld.service
├─21611 /bin/sh /usr/local/mysql/bin/mysqld_safe –datadir=/usr/local/mysql/data –pi…
└─21742 /usr/local/mysql/bin/mysqld –basedir=/usr/local/mysql –datadir=/usr/local/m…

 

MariaDB root 비밀번호 변경 (MariaDB 서버안에서 변경)

mysql -u root

myslq>use mysql;

myslq>set password=password(‘password’);  또는 alter user ‘root’@’localhost’ identified by ‘password’;

myslq>select user,host,password from mysql.user;

mysql>flush privileges;

mysql>quit

mysql -u root -p

 

MariaDB 보안설정(MariaDB 서버밖에서 비밀번호설정)

cd /usr/local/mysql/bin/

./mysql_secure_installation

 

하시면 몇가지 물음이 나옵니다.

Change the root password? [Y/n] Y           (root 패스워드 변경)

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 … Success!

 

Remove anonymous users? [Y/n] Y               (root를 제외한 일반계정 삭제)

 … Success!

 

Disallow root login remotely? [Y/n] Y                 (root계정을 원격접속X 이게 보통 보안에 좋다)

 … Success!

 

Remove test database and access to it? [Y/n] Y           (testDB들 삭제)

 – Dropping test database…

 … Success!

 – Removing privileges on test database…

 … Success!

 

Reload privilege tables now? [Y/n] Y   (이것을 Yes로 해야 로그인이 된다. 변경한내용들이 적용)

 … Success!

 

Cleaning up…