欢迎投稿

今日深度:

编译安装MariaDB-10.1.30,mariadb-10.1.30

编译安装MariaDB-10.1.30,mariadb-10.1.30


环境相关:
OS:CentOS release 6.9
IP:192.168.1.10
CPU:4核
MEM:2G
DISK:50G

1. 实验主机克隆

参照《CentOS6实验机模板搭建部署》
克隆一台实验机,调整内存为2G,CPU为4核,并进一步配置主机名和hosts文件:

hostname mariadb
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig eth0|grep inet|awk -F'[ :]' '{print $13}') $(hostname)">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME=$(hostname)/g" /etc/sysconfig/network
ping -c 3 $(hostname)

2. 环境准备

删除系统预安装的apache和mysql,安装编译需要的系统支持包:

for i in $(rpm -qa|grep -Ei 'http|mysql'|grep -v 'mysql-libs');do yum remove $i;done
# 包mysql-libs如果卸载,会依赖卸载掉crontab,而该包本身并不影响MariaDB的编译安装,因此不做处理。
yum -y install gcc gcc-c++ cmake ncurses-devel \
       bison libxml2-devel boost libevent boost-devel \
       Judy Judy-devel openssl-devel
yum -y install libevent-devel
# 如果使用系统安装镜像 CentOS-6.X-x86_64-bin-DVD1.iso 配置的本地yum源
# 则该包 libevent-devel 在光盘DVD2上面,需要卸载DVD1,挂载DVD2安装,安装然后切回DVD1
# 如果配置了网络yum源,则没有问题
# 文档《CentOS6实验机模板搭建部署》是有部署阿里云的yum源的

2. 编译安装

软件包下载:https://downloads.mariadb.org/mariadb/+releases/
如果需要编译安装10.2以及之后的版本,需要进行测试,可能需要编译安装更高版本的其他组件支持。

添加用户,删除系统预安装自带的配置文件,编译安装:

groupadd mariadb
useradd -s /sbin/nologin -M -g mariadb mariadb
# 参数 -s 指定用户的登录shell,/sbin/nologin 表示该用户无法登陆
# 参数 -M 表示不创建该用户的家目录
rm -f /etc/my.cnf
# 因为系统有预装mysql相关的包,因此有预装的配置文件,删除之
cd /tmp
tar -xf /tmp/mariadb-10.1.30.tar.gz
cd /tmp/mariadb-10.1.30
# 解压,进入目录,开始编译安装
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DSYSCONFDIR=/etc \
-DWITH_ARIA_STORAGE_ENGINE=1 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1
# 指定安装目录、配置文件目录、编译安装的引擎,设置默认字符集以及readline、ssl和zlib等
make -j 4 && make install
# 实验机是4核的,因此调整参数为 -j 4,加快编译速度
# 至于-j参数是CPU核心数还是CPU核心数+1,不做讨论
# 编译安装过程会很长,取决于虚拟机的磁盘性能和CPU数量
cd /usr/local/mariadb/bin
./mysql --version
# 查看版本,验证编译安装成功

3. 配置my.cnf文件

port=3306
# 设置服务端口为3306,也可以设置成其他端口
cat > /etc/my.cnf << EOF
[mysqld_safe]
pid-file=/usr/local/mariadb/run/mysqld.pid
[mysql]
port=$port
prompt=\\\u@\\\d \\\r:\\\m:\\\s>
default-character-set=utf8
[client]
port=$port
socket=/usr/local/mariadb/run/mysql.sock
[mysqld]
#######dir#######
basedir=/usr/local/mariadb
datadir=/usr/local/mariadb/data
tmpdir=/usr/local/mariadb/tmp
lc_messages_dir=/usr/local/mariadb/share
log-error=/usr/local/mariadb/log/alert.log
slow_query_log_file=/usr/local/mariadb/log/slow.log
socket=/usr/local/mariadb/run/mysql.sock
#######innodb#######
innodb_data_home_dir=/usr/local/mariadb/data
innodb_log_group_home_dir=/usr/local/mariadb/log/iblog
innodb_buffer_pool_size=1680M
#设置innodb_buffer_pool_size大小为服务器内存的80%
#该设置不能有小数点,1.5G的写法是错误的,使用1500M或1G
innodb_log_files_in_group=4
innodb_log_file_size=500M
innodb_log_buffer_size=256M
innodb_flush_log_at_trx_commit=2
innodb_io_capacity=10000
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_page_size=8k
transaction-isolation=READ-COMMITTED
#######replication#######
master-info-file=/usr/local/mariadb/log/master.info
relay-log=/usr/local/mariadb/log/relaylog
relay_log_info_file=/usr/local/mariadb/log/relay-log.info
skip-slave-start
#######binlog#######
log-bin=/usr/local/mariadb/log/binlog
server_id=383306
binlog_cache_size=32K
max_binlog_cache_size=600M
max_binlog_size=500M
binlog-format=ROW
sync_binlog=0
log-slave-updates
expire_logs_days=7
#######MyISAM Specific options#######
key_buffer_size = 8M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
#######not innodb options (fixed)#######
back_log = 50
max_connections = 400
table_cache = 2048
max_allowed_packet = 16M
max_heap_table_size = 64M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 400
query_cache_size = 0
query_cache_type = 0
tmp_table_size = 64M
gdb
#######Maria-5.5
thread_handling=pool-of-threads
thread_pool_size=16
#######server
default-storage-engine=INNODB
lower_case_table_names=1
performance_schema=0
long_query_time=1
slow_query_log=1
port=$port
skip-name-resolve
skip-ssl
max_user_connections=8000
max_connect_errors=65535
EOF
# 该配置文件的相关参数不再做详细解释,可以查询官网进行确认和进一步配置

4. 增加系统库文件目录,设置环境变量

cat > /etc/ld.so.conf.d/mariadb.conf<<EOF
/usr/local/mariadb/lib
/usr/local/lib
EOF
/sbin/ldconfig -v
# 软件编译安装后,编译生成的lib所在目录一般不在系统默认的lib目录中,添加该目录,防止产生问题
echo 'export PATH=$PATH:/usr/local/mariadb/bin'>>/root/.bash_profile 
export PATH=$PATH:/usr/local/mariadb/bin
# 设置root的环境变量,将编译生成的bin目录加载到默认的PATH里
mysql --version
# 测试

5. 创建目录,初始化库

创建目录,如果是生产机器,需要在创建的目录上挂载相应的存储设备,保证数据安全

mkdir -v  /usr/local/mariadb/data
mkdir -pv /usr/local/mariadb/log/iblog
mkdir -v  /usr/local/mariadb/run
mkdir -v  /usr/local/mariadb/tmp
# 一条命令搞定:mkdir -pv /usr/local/mariadb/{data,log/iblog,run,tmp}
chown -R mariadb: /usr/local/mariadb
# 注意权限!!!

建库

/usr/local/mariadb/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mariadb \
--datadir=/usr/local/mariadb/data \
--user=mariadb
# 建库,指定配置文件和库主要目录和数据目录以及库所属的OS系统用户
/usr/local/mariadb/bin/mysqld_safe --user=mariadb &
# 尝试启动,测试
netstat -tupln|grep 3306
echo 'show databases;'|mysql
# 测试端口和默认的库
mysqladmin shutdown
# 关库

6. 设置开机启动,初始化root用户密码

echo '/usr/local/mariadb/bin/mysqld_safe --user=mariadb &'>>/etc/rc.local
reboot
# 可以在最后重启进行开机启动的测试
PASS=vincent
# 暂时设置root用户密码为vincent
/usr/local/mariadb/bin/mysqladmin -u root password "$PASS"
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' \
    IDENTIFIED BY '$PASS' WITH GRANT OPTION;"|\
    mysql -uroot -p"$PASS" -Dmysql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' \
    IDENTIFIED BY '$PASS' WITH GRANT OPTION;"|\
    mysql -uroot -p"$PASS" -Dmysql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' \
    IDENTIFIED BY '$PASS' WITH GRANT OPTION;"|\
    mysql -uroot -p"$PASS" -Dmysql
echo "update user set password=password('$PASS') where user='root';"|\
    mysql -uroot -p"$PASS" -Dmysql
# 设置localhost和127以及其他链接到库的IP的root密码
echo "delete from user where not (user='root') ;"|\
    mysql -uroot -p"$PASS" -Dmysql
# 删掉非root用户
echo "delete from user where user='root' and password=''; "|\
    mysql -uroot -p"$PASS" -Dmysql
# 删掉root用户密码为空的权限记录
echo "drop database test;"| mysql -uroot -p"$PASS" -Dmysql
# 删除默认的test库,优化项
echo "DROP USER ''@'%';"| mysql -uroot -p"$PASS" -Dmysql
# 删掉空密码登录权限
echo "flush privileges;"| mysql -uroot -p"$PASS" -Dmysql
# 刷新权限表,生效配置

[TOC]

www.htsjk.Com true http://www.htsjk.com/mariadb/30463.html NewsArticle 编译安装MariaDB-10.1.30,mariadb-10.1.30 环境相关: OS:CentOS release 6.9 IP:192.168.1.10 CPU:4核 MEM:2G DISK:50G 1. 实验主机克隆 参照《CentOS6实验机模板搭建部署》 克隆一台实验机,调整内存为...
相关文章
    暂无相关文章
评论暂时关闭