centos7.4下源码安装mariadb

一、卸载旧的mariadb

查询已安装的软件:

rpm -qa | grep Maria*

卸载:yum -y remove mari*

删除数据库文件:rm -rf /var/lib/mysql/*

二、安装依赖包且源码安装cmake

yum groupinstall "Development Tools"

yum install libaio libaio-devel bison bison-devel zlib-devel cmake openssl openssl-devel ncurses ncurses-devel libcurl-devel libarchive-devel boost boost-devel lsof wget

可以去cmake 官网进行下载:

https://cmake.org/download/

三、下载和编译jemalloc

cd /usr/local/src

wget https://github.com/jemalloc/jemalloc/releases/download/4.3.1/jemalloc-4.3.1.tar.bz2

tar jxvf jemalloc-4.3.1.tar.bz2

cd jemalloc-4.3.1

./configure &&make && make install

四、准备目录

这里提前预定MariaDB的安装目录为/usr/local/mysql并且数据库目录为/data/mysql,这里要建立系统用户及组和数据库存放目录,并且将数据库存放目录赋予mysql用户及组权限,操作如下:(请注意特别说明一下:这里说的数据库目录是指的具体数据库存储文件, 而不是安装文件!)

----创建maria安装目录

# mkdir -p /usr/local/mysql

----创建数据库存放目录

# mkdir -p /data/mysql

或使用下面命令:

# mkdir -pv /data/mysql/{data,logs/{binlog,relaylog}}

----建立用户,目录,设置权限

# useradd -s /sbin/nologin -g mysql -M mysql

----改变数据库存放目录所属用户及组为 mysql:mysql

# chown mysql:mysql /data/mysql -R

以下是上面创建系统用户mysql的各个参数说明:

-r: 添加系统用户( 这里指将要被创建的系统用户mysql )

-g: 指定要创建的用户所属组( 这里指添加到新系统用户mysql到mysql系统用户组 )

-s: 新系统帐户的登录shell( /sbin/nologin 这里设置为将要被创建系统用户mysql不能用来登录系统 )

-d: 新帐户的主目录( 这里指定将要被创建的系统用户mysql的家目录为 /usr/local/mysql )

-M: 不要创建用户的主目录( 也就是说将要被创建的系统用户mysql不会在 /home 目录下创建 mysql 家目录 )

五、下载、解压并编译安装

https://downloads.mariadb.org/interstitial/mariadb-10.2.18/source/mariadb-10.2.18.tar.gz/from/http%3A//mirrors.tuna.tsinghua.edu.cn/mariadb/?serve

# tar zxvf mariadb-10.2.18.tar.gz

# cd mariadb-10.2.18

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

编译参数说明:

-DCMAKE_INSTALL_PREFIX是指定安装的位置,这里是/usr/local/mysql

-DMYSQL_DATADIR是指定MySQL的数据目录,这里是/data/mysql

-DSYSCONFDIR是指定配置文件所在的目录,一般都是/etc,具体的配置文件是/etc/my.cnf, -DWITHOUT_TOKUDB=1这个参数一般都要设置上,表示不安装tokudb引擎,tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装,是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的,所以暂时屏蔽掉,否则在系统中找不到依赖会出现:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:179 (message)这样的错误

-DDEFAULT_CHARSET 字符集,这里是utf-8

-DDEFAULT_COLLATION排序规则,这里是utf8_general_ci

注意:

1)如果上面make需要修改参数,重新编译 可以删除原来本目录下的CMakeCache.txt

mv CMakeCache.txt CMakeCache.txt.bak

# rm -f CMakeCache.txt

make && make install

六、使用jemalloc优化mariadb

使用jemalloc优化MaridDB编译方法,cmake预编译时加上下面参数

-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF

或者直接加载,修改mysqld_safe,运行命令:

sed -i ‘[email protected] [email protected] mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/[email protected]‘ /usr/local/mysql/bin/mysqld_safe

service mysqld restart

七、拷贝配置文件并修改

在mariadb安装目录下的support-files有好几种配置模板,已经配置好的部分参数,分别用于不同的环境,这里简要说明一下:

my-small.cnf 这个是为小型数据库或者个人测试使用的,不能用于生产环境

my-medium.cnf 这个适用于中等规模的数据库,比如个人项目或者小型企业项目中

my-large.cnf 一般用于专门提供SQL服务的服务器中,即专门运行数据库服务的主机,配置要求要更高一些,适用于生产环境

my-huge.cnf 用于企业级服务器中的数据库服务,一般更多用于生产环境使用

所以根据以上几个文件,如果个人使用或者测试,那么可以使用前两个模板;企业服务器或者64G以上的高配置服务器可以使用后面两个模板,另外也可以根据自己的需求来加大参数和扩充配置获得更好的性能。

# cp support-files/my-large.cnf /etc/my.cnf

vim /etc/my.cnf

增加如下:

?datadir = /data/mysq/

innodb_flush_log_at_trx_commit = 2?

innodb_file_per_table = ON ?

skip_name_resolve = ON

注意:查看配置文件当前有效配置如下

# sed -e "s/#.*//g" /etc/my.cnf | awk ‘{if (length !=0) print $0}‘

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

thread_concurrency = 8

log-bin=mysql-bin

binlog_format=mixed

server-id = 1

datadir = /data/mysql/

innodb_data_home_dir = /data/mysql

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/mysql

innodb_buffer_pool_size = 256M

innodb_log_file_size = 64M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 2

innodb_lock_wait_timeout = 50

innodb_file_per_table = ON

skip_name_resolve = ON

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

八、初始化mariadb,初始安全设置

1)、默认情况下,MariaDB安装有一个匿名用户,允许任何人登录MariaDB而他们无需创建用户帐户。这个目的是只用于测试,安装去更平缓一些。你应该在进入生产环境前删除它们。

#mysql_secure_installation

2)、编译安装MariaDB后所有配置操作

cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql --defaults-file=/etc/my.cnf

出现下列信息

To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !

To do so, start the server, then issue the following commands:

‘/usr/local/mysql//bin/mysqladmin‘ -u root password ‘new-password‘

‘/usr/local/mysql//bin/mysqladmin‘ -u root -h Anwar01 password ‘new-password‘

Alternatively you can run: ‘/usr/local/mysql//bin/mysql_secure_installation‘

which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. You can start the MariaDB daemon with: cd ‘/usr/local/mysql/‘ ; /usr/local/mysql//bin/mysqld_safe --datadir=‘/data/mysql‘

You can test the MariaDB daemon with mysql-test-run.pl

cd ‘/usr/local/mysql//mysql-test‘ ; perl mysql-test-run.pl

查看初始化结果:

# ll /data/mysql

九、设置自动启动脚本,启动服务

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

# chmod +x /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# /etc/init.d/mysqld restart

启动mariadb

systemctl start mysqld

十、添加环境变量?

# vim /etc/profile

#export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

# source /etc/profile

十一、检查默认配置和运行情况

mysqld --print-defaults

信息显示如下:

mysqld would have been started with the following arguments:

--port=3306 --socket=/tmp/mysql.sock --skip-external-locking --key_buffer_size=256M --max_allowed_packet=1M --table_open_cache=256 --sort_buffer_size=1M --read_buffer_size=1M --read_rnd_buffer_size=4M --myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=16M --thread_concurrency=8 --log-bin=mysql-bin --binlog_format=mixed --server-id=1 --innodb_data_home_dir=/data/mysql --innodb_data_file_path=ibdata1:10M:autoextend --innodb_log_group_home_dir=/data/mysql --innodb_buffer_pool_size=256M --innodb_log_file_size=64M --innodb_log_buffer_size=8M --innodb_flush_log_at_trx_commit=2 --innodb_lock_wait_timeout=50 --innodb_file_per_table=ON ? --skip_name_resolve=ON

#ss -tlnp|grep :3306

#lsof |grep jemalloc

十二、初始化数据库用户表,连接mariadb使用

#mysql -u root -p

#show engines;

#show VARIABLES like "character_set%";

原文地址:https://www.cnblogs.com/Anwar/p/9742386.html

时间: 2024-09-30 15:04:31

centos7.4下源码安装mariadb的相关文章

CentOS7 下源码安装MySQL 8.0.11

CentOS7 下源码安装MySQL 8.0.11 系统环境:CentOS7, 内核:Linux 3.10.0-862.el7.x86_64 如果有旧版本的MySQL,先卸载,用下面命令来查询出系统有哪些相关的MySQL包. rpm -qa | grep mysql 如果上述命令查询出有相关的MySQL包,就卸载 rpm -e 包名 卸载MariaDB包 yum remove mariadb-libs.x86_64 从MySQL官网下载源码包,并将该文件拷贝到系统中. https://dev.m

Linux下源码安装CodeBlocks

Linux下源码安装CodeBlocks qianghaohao(CodingNutter) 一. 安装平台说明: CentOs6.4-i686  gcc-4.4.7 二. 下载最新源码: http://www.codeblocks.org/downloads 在此安装的是最新版:Code::Blocks 16.01 三. 阅读官方安装说明文档: http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on

CentOS 7下源码安装MySQL 5.7

网上说linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有几十M左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点是安装速度快,安装步骤简单,缺点是安装包很大,300M左右(5.7版本的是600M左右), 对于第二种方法,我搞了一天,无果,到某个环节实在是无法走通,老大那边也不让搞了,隔了几天老大又吩咐我在生产服务器上安装mysql,这次我就按照第一种方法源码安装方式 下载源码安装包 http://dev.my

Linux下源码安装Mysql5.5

本文主要介绍了如何在源码安装mysql5.5,所用系统为CentOS6.5 一.安装相应的开发环境 yum install -y ncurses-devel yum install -y libaio yum install -y bison yum install -y gcc-c++ yum install -y openssl-devel 二.安装cmake 跨平台编译器 # tar xf cmake-2.8.8.tar.gz # cd cmake-2.8.8 # ./bootstrap

CentOS 6.5下源码安装LAMP(Linux+Apache+Mysql+Php)环境

CentOS 6.5下源码安装LAMP(Linux+Apache+Mysql+Php)环境一. 系统环境:Linux系统版本: CentOS release 6.5Apache版本: httpd-2.2.24PHP 版本: php-5.6.11 二.安装前准备: 1.查看是否安装GCC ,GCC-C++编译器,如果没有则进行安装: 查看是否安装的命令: #gcc –v 若未安装在服务器联网情况下可以使用下列命令安装: #yum install gcc #yum install gcc-c++2.

centos6.5下源码安装mysql密码修改

Centos下源码安装mysql密码破解方法: 方法一:首先停止mysql服务,: /etc/init.d/mysqldstop 停止mysql ps -ef |grep mysql 查看mysql是否关闭 然后以跳过权限方式后台启动 /usr/local/mysql/bin/mysqld_safe--skip-grant-tables --user=mysql & /usr/local/mysql/bin/mysql进入mysql 或者执行mysql回车进入mysql,然后修改密码. 修改My

图解Linux下源码安装PHP7.0.9 +Nginx

上一次,在<Linux下源码安装php7.0.6>,安装过PHP7.0.3,本文将记录安装PHP7.0.9过程. 测试环境 Linux 2.6.32-279.el6.i686 nginx-1.9.15.tar http://nginx.org/download/nginx-1.9.15.tar.gz php-7.0.9.tar.gz http://am1.php.net/distributions/php-7.0.9.tar.gz 安装Nginx wget http://nginx.org/d

linux系统下源码安装PHP5.6

linux系统下源码安装PHP5.6 从php5.4开始,需要自己下载安装libXpm-dev了,但是由于包的依赖性原因,我就选择了yum方式来进行安装,通过网络yum源直接下载并进行安装了 下载php以及相关的库文件(百度网盘:http::/pan.baidu.com/s/1bnL31c7) gd库以及php功能特性扩展库文件 libgd-2.1.1.tar.gz        gd库文件(使php支持以下功能)     jpegsrc.v7.tar.gz         jpeg库文件(使p

在rhel7.2下源码安装mysql-5.6.35

如何在一台新机rhel7.2下源码安装mysql-5.6.35 一.前期准备工作 1.首先安装依赖包,避免在安装过程中出现问题 yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel 2.下载源码包 源码包地址:https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz 3.创建mysql安装目录以及数据存放目录 [[email prot