MariaDB數據庫三種安裝方式


Mysql安裝

mysql有三種安裝方式:yum安裝、二進制安裝、源碼安裝,多實例安裝

二進制安裝

實驗環境:Centos7   192.168.37.10
         mysql版本:mariadb-10.2.25-linux-x86_64.tar

1、准備用戶
 # groupadd -r -g 306 mysql
 # useradd -r -g 306 -u 306 –d /data/mysql mysql
2、准備數據目錄
 # mkdir /data/mysql
 # chown mysql:mysql /data/mysql
 [root@test2 /data]#ll
  total 4
  drwxr-xr-x. 2 mysql mysql   6 Jul  4 11:04 mysql
3、准備二進制文件
 # tar xvf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
 # cd /usr/local
 # ln -sv  mariadb-10.2.25-linux-x86_64/ mysql
 # chown -R root:mysql /usr/local/mysql/
 
 [root@test2 /usr/local/mysql]#ll
  total 180
  drwxr-xr-x.  2 root mysql  4096 Mar 15 01:07 bin
  -rw-r--r--.  1 root mysql 17987 Jun 15 02:29 COPYING
  -rw-r--r--.  1 root mysql  2354 Jun 15 02:29 CREDITS
  drwxrwxr-x.  3 root mysql    18 Jun 15 23:35 data
  -rw-r--r--.  1 root mysql  8245 Jun 15 02:29 EXCEPTIONS-CLIENT
  drwxrwxr-x.  3 root mysql    19 Jun 15 23:35 include
  -rw-r--r--.  1 root mysql  8694 Jun 15 02:29 INSTALL-BINARY
  drwxr-xr-x.  5 root mysql  4096 Mar 15 01:07 lib
 drwxrwxr-x.  4 root mysql    30 Jun 15 23:35 man
 drwxrwxr-x. 11 root mysql  4096 Jun 15 23:35 mysql-test
 -rw-r--r--.  1 root mysql  2843 Jun 15 02:29 README.md
 -rw-r--r--.  1 root mysql 19477 Jun 15 02:29 README-wsrep
 drwxrwxr-x.  2 root mysql    30 Jun 15 23:35 scripts
 drwxrwxr-x. 32 root mysql  4096 Jun 15 23:35 share
 drwxrwxr-x.  4 root mysql  4096 Jun 15 23:35 sql-bench
 drwxrwxr-x.  3 root mysql   275 Jun 15 23:35 support-files
-rw-r--r--.  1 root mysql 86263 Jun 15 02:29 THIRDPARTY
4、准備配置文件
# mkdir /etc/mysql/
# cp support-files/my-large.cnf /etc/mysql/my.cnf  #support-files在mysql目錄下
# vim /etc/mysql/my.cnf
[mysqld]中添加三個選項:
28 datadir = /data/mysql
29 innodb_file_per_table = on     #默認存儲引擎innodb
30 skip_name_resolve = on        # 禁止主機名解析,建議使用
5、創建數據庫文件
# cd /usr/local/mysql/
# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

6、准備服務腳本,並啟動服務
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# service mysqld start

7、PATH路徑
# echo ‘PATH=/user/local/mysql/bin:$PATH’ > /etc/profile.d/env.sh  # 環境變量加入到啟動腳本中
(8)安全初始化
/user/local/mysql/bin/mysql_secure_installation    # mysql安全加固     設置數據庫管理員root口令
                                                                       禁止root遠程登錄
                                                                       刪除anonymous用戶帳號
                                                                       刪除test數據庫

源碼編譯安裝

實驗環境:Centos7   192.168.37.7
         mysql版本:mariadb-10.2.25.tar
1、安裝包解決依賴關系
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2、做准備用戶和存儲數據目錄
useradd –r –s /sbin/nologin –d /data/mysql/ mysql
mkdir /data/mysql
chown mysql.mysql /data/mysql

3、解壓並cmake 編譯安裝(過程較久需要耐心等待)
tar xvf mariadb-10.2.18.tar.gz

cmake的重要特性之一是其獨立於源碼(out-of-source)的編譯功能,即編譯工作可以在另一個指定的目錄中而非源碼目錄中進行,這可以保證源碼目錄不受任何一次編譯的影響,因此在同一個源碼樹上可以進行多次不同的編譯,如針對於不同平台編譯
編譯選項:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

cd mariadb-10.2.25/
 cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \      #  指定安裝目錄
-DMYSQL_DATADIR=/data/mysql/ \           #  數據庫存放路徑
-DSYSCONFDIR=/etc/ \                     # 選項文件目錄
-DMYSQL_USER=mysql \                     # 指定mysql
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \               #指定字符集
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
提示:如果出錯,執行rm -f CMakeCache.txt

准備環境變量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
生成數據庫文件
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
准備配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
准備啟動腳本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
啟動服務
chkconfig --add mysqld 
service mysqld start

Mysql多實例

MySQL多實例就是在一台服務器上同時開啟多個不同的服務端口(如:3306、3307),同時運行多個MySQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
這些MySQL多實例共用一套MySQL安裝程序,使不同的my.cnf(也可以相同)配置文件、啟動程序(也可以相同)和數據文件。在提供服務時,多實例MySQL在邏輯上看來是各自獨立的,它們根據配置文件的對應設定值,獲得服務器相應數量的硬件資源

實例 :
實驗環境:centos7  192.168.37.30
yum源安裝MariaDB多實例
1、安裝MariaDB
  # yum install MariaDB-server MariaDB -y
2、創建⽂件夾,將實例按端口號分開
  # mkdir -pv /usr/local/mysql/{3306,3307,3308}/{data,etc,socket,bin,log,pid}
[root@test2 ~]# tree /usr/local/mysql
/usr/local/mysql
├── 3306
│ ├── bin
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
├── 3307
│ ├── bin
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
└── 3308
├── bin
├── data
├── etc
├── log
├── pid
└── socket
21 directories, 0 files

3、查詢用戶,無用戶則自行創建,具體步驟參考上一個案例
  #  id mysql
  #  ll -d /usr/local/mysql/
drwxr-xr-x 5 mysql mysql 42 May 22 17:18 /usr/local/mysql/ 

4、為3個MariaDB實例創建初始化數據
 # mysql_install_db --user=mysql --datadir=/usr/local/mysql/3306/data
 # mysql_install_db --user=mysql --datadir=/usr/local/mysql/3307/data
 # mysql_install_db --user=mysql --datadir=/usr/local/mysql/3308/data
 
5、復制配置文件到多實例並配置
 # cp /usr/share/mysql/my-huge.cnf /usr/local/mysql/3306/etc/my.cnf
 
 19 [client]
 20 #password       = your_password
 21 port            = 3306
 22 socket          = /usr/local/mysql/3306/socket/mysql.sock
 23 
 24 # Here follows entries for some specific programs
 25 
 26 # The MySQL server
 27 [mysqld]
 28 datadir = /usr/local/mysql/3306/data/
 29 port            = 3306
 30 socket          = /usr/local/mysql/3306/socket/mysql.sock
 31 log-error = /usr/local/mysql/3306/log/mariadb.log
 32 pid-file = /usr/local/mysql/3306/pid/mariadb.pid

其他實例復制配置並修改端口號即可:
  # cp /usr/local/mysql/3306/etc/my.cnf /usr/local/mysql/3307/etc/my.cnf
  # sed -i 's/3306/3307/' /usr/local/mysql/3307/etc/my.cnf
  # cp /usr/local/mysql/3306/etc/my.cnf /usr/local/mysql/3308/etc/my.cnf
  # sed -i 's/3306/3308/' /usr/local/mysql/3308/etc/my.cnf
6、編寫啟動腳本
  # vim /usr/local/mysql/3306/bin/mysqld
  
#!/bin/bash
#chkconfig: 345 80 2
port=3306
mysql_user="root"
mysql_basedir="/usr/local/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac

其實實例復制並配置修改端口號即可
 # chmod 755 /usr/local/mysql/3306/bin/mysqld
 # cp /usr/local/mysql/3306/bin/mysqld /usr/local/mysql/3307/bin/mysqld
 # sed -i 's/3306/3307/' /usr/local/mysql/3307/bin/mysqld
 # cp /usr/local/mysql/3306/bin/mysqld /usr/local/mysql/3308/bin/mysqld
 # sed -i 's/3306/3308/' /usr/local/mysql/3308/bin/mysqld
 
 7、啟動服務
[root@test2 ~]# /usr/local/mysql/3306/bin/mysqld start
Starting MySQL...
[root@test2 ~]# /usr/local/mysql/3307/bin/mysqld start
Starting MySQL...
[root@test2 ~]# /usr/local/mysql/3308/bin/mysqld start
Starting MySQL...
使用ss -ntl查看端口是否已經存在即可成功創建
8、關閉服務
# /usr/local/mysql/3308/bin/mysqld stop
9、 登錄和修改密碼
 設置初始口令:(這是適合在腳本中免密時使用)
 mysqladmin -S /usr/lcoal/mysql/3306/socket/mysql.sock password 546803
 mysqladmin -S /usr/lcoal/mysql/3307/socket/mysql.sock password 546803
 mysqladmin -S /usr/lcoal/mysql/3308/socket/mysql.sock password 546803
 
 登錄:mysql -uroot -S /usr/local/mysql/3307/socket/mysql.sock
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM