zoukankan      html  css  js  c++  java
  • 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... "
    ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
    else
    printf "MySQL is running... "
    exit
    fi
    }


    function_stop_mysql()
    {
    if [ ! -e "$mysql_sock" ];then
    printf "MySQL is stopped... "
    exit
    else
    printf "Stoping MySQL... "
    ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
    fi
    }


    function_restart_mysql()
    {
    printf "Restarting MySQL... "
    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} "
    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';

     

    验证:

     

  • 相关阅读:
    Python shutil模块
    Flask 上传文件
    Flask DBUtils
    flash-session
    Flash 上下文管理
    python 栈
    python 偏函数
    threding.local
    next() 与 nextLine() 区别
    Thread.sleep(1000*3); // 休眠3秒
  • 原文地址:https://www.cnblogs.com/liangjindong/p/9140485.html
Copyright © 2011-2022 走看看