Mariadb源码和二进制安装
Posted Evan_Wolf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\';
验证:
以上是关于Mariadb源码和二进制安装的主要内容,如果未能解决你的问题,请参考以下文章
Linux学习之路--Mariadb源码编译安装19---20180120