Mariadb源码和二进制安装

通用二进制格式安装过程

准备工作

  • 下载mariadb-10.2.15-linux-x86_64.tar.gz
  • 检查环境iptables selinux
  • 数据库存放目录/data/mysqldb

创建用户

 useradd -r -d /data/mysqldb -s /sbin/nologin mysql

创建安装路径(Mariadb程序安装路径)

看官方文档,确认编译的路径/usr/local/mysql

tar xvf  mariadb-10.2.15-linux-x86_64.tar.gz  -C /usr/local/

ln -s  mariadb-10.2.15-linux-x86_64 mysql

 chown -R root:root mysql/

echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh

创建数据库存储位置

mkdir -pv /data/mysqldb

chown mysql.mysql /data/mysqldb
chmod 770 /data/mysqldb

生成数据库

cd /usr/local/mysql

scripts/mysql_install_db  --datadir=/data/mysqldb --user=mysql 

更改配置文件

cd /usr/local/mysql

cp support-files/my-huge.cnf  /etc/my.cnf

vim /etc/my.cnf

[mysqld]服务器配置

datadir  =/data/mysqldb

 

启动数据库

cd /usr/local/mysql

更改mysql.server如下两个配置:

  basedir=
  datadir=


cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

service mysqld start

/usr/local/mysql/bin/mysqld --print-defaults(检查默认配置)

mysql_secure_installation (设置安全策略)

mysql -uroot -pverimatrix (登录数据库)

源码编译安装mariadb

安装包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel

创建用户

 useradd -r -s /sbin/nologin mysql

解压源文件

tar xvf mariadb-10.2.15.tar.gz

mkdir -pv /data/mysqldb

chown mysql.mysql /data/mysqldb

cmake 编译安装(Mariadb二进制程序在/app/mysql目录,数据库在/data/mysqldb)

cd mariadb-10.2.12/

cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=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=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make -j 2 && make install

配置数据库

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/mysqldb/ --user=mysql

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

Mariadb多实例配置

mysqld_multi:多实例 ,示例:mysqld_multi --example,应用范围,同一数据库版本的多实例。

下面的方法不是使用mysqld_multi,是一种通用的方法。

  • 每个实例有独立的数据库路径
  • 每个实例有独立的socket文件
  • 每个实例子有独立的进程文件
  • 每个实例有独立的配置文件路径

准备

cd /data/mysqldb

mkdir {3307,3308,3309}/{etc,socket,pid,log,data} -pv

mysqldb/
├── 3307
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
├── 3308
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
├── 3309
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket

chown -R mysql.mysql mysqldb/

生成各实例的数据库文件

scripts/mysql_install_db --datadir=/data/mysqldb/3307/data --user=mysql

scripts/mysql_install_db --datadir=/data/mysqldb/3308/data --user=mysql

scripts/mysql_install_db --datadir=/data/mysqldb/3309/data --user=mysql

更改各实例下的配置文件

[client]
#password = your_password
port = 3307
socket = /data/mysqldb/3307/socket/mysql.sock

[mysqld]
port = 3307
datadir = /data/mysqldb/3307/data
socket = /data/mysqldb/3307/socket/mysql.sock

[mysqld_safe]
log-error=/data/mysqldb/3307/log/mariadb.log
pid-file=/data/mysqldb/3307/pid/mariadb.pid

实例3308和3309下的分别配置端口为3308,3309

建立mysqld文件,如下,分别建立副本copy到3308和3309目录下,对应的更改port

#!/bin/bash

port=3307
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/local/mysql/bin"
mysql_basedir="/data/mysqldb"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
${cmd_path}/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"
${cmd_path}/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

启动多实例

在各实例目录下,执行./mysqld start

LISTEN 0 80 :::3307 :::*
LISTEN 0 80 :::3308 :::*
LISTEN 0 80 :::3309 :::*

连接实例

mysql -S /data/mysqldb/3308/socket/mysql.sock

MariaDB [(none)]> show variables like '%port%'
-> ;
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| extra_port | 0 |
| innodb_support_xa | ON |
| large_files_support | ON |
| port | 3308 |
| progress_report_time | 5 |
| report_host | |
| report_password | |
| report_port | 3308 |
| report_user | |
+----------------------+-------+
9 rows in set (0.01 sec)

更改数据库登录口令

select user,host,password from mysql.user;

 

update mysql.user set password=password("verimatrix") where user='root';

 

验证:

 

 

 

posted @ 2018-06-05 16:33  Evan_Wolf  阅读(181)  评论(0编辑  收藏  举报