MySQL源码安装编译及踩过的坑

基本环境:linux centos6.5
工具;VMware Workstation
源码;mysql-5.6.46.tar.gz 下载网址:https://dev.mysql.com/downloads/mysql/

MySQL源码安装编译及踩过的坑_第1张图片
准备就绪

1、关闭防火墙,配置/etc/hosts文件,主机名对应IP(不配置预编译的时候会报错,可以自己试验一下)

①修改/etc/hosts
[root@slave1 ~]# vi /etc/hosts

MySQL源码安装编译及踩过的坑_第2张图片

②永久关闭防火墙
[root@slave1 ~]# chkconfig iptables off
[root@slave1 ~]# reboot
[root@slave1 ~]# service iptables status
iptables: Firewall is not running.
③配置selinux

selinux:Linux 内核模块,也是linux的一个安全子系统,作用是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

[root@slave1 ~]# vi /etc/selinux/config

MySQL源码安装编译及踩过的坑_第3张图片

2、配置/etc/sysctl.conf(在内和运行时动态修改内核运行参数)

根据公司要求修改
[root@slave1 ~]# more /etc/sysctl.conf

3、 检查操作系统是否安装了mysql

①查看
[root@slave1 ~]# rpm -qa | grep mysql

grep参数用于全局搜索

②如果有,卸载
[root@slave1 ~]# yum remove mysql*

yum可以忽略依赖

4、新建一个用户

[root@slave1 ~]# group add mysql  //新建一个用户组
[root@slave1 ~]# useradd -d /home/mysql -g mysql -m mysql  // 新建一个用户根目录是/home/mysql,分组到用户组,登录是mysql
[root@slave1 ~]# id mysql
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[root@slave1 ~]# passwd mysql  //设置mysql的密码

5、配置yum源

[root@slave1 ~]# mount /dev/mnt /mnt
·······mounting read-only
[root@slave1 ~]# cd /mnt
[root@slave1 ~]# mkdir -p /redhat/mnt
[root@slave1 ~]#cp -r /mnt /redhat/mnt
[root@slave1 ~]#cd /etc/yum.repos.d
[root@slave1 ~]#more centos-base.repo //拷贝【base】那段
[root@slave1 ~]#vi base.repo

MySQL源码安装编译及踩过的坑_第4张图片
安装cmake、lrzsz、openssl、perl等工具包

[root@slave1 ~]#yum install -y lrzsz  //上传下载工具包,-y表示yes
[root@slave1 ~]#yum install -y openssl-devel //安全通信,免窃听包
[root@slave1 ~]#yum install -y perl perl-devel //实用报表提取语言
[root@slave1 ~]#yum install -y cmake gcc gcc-c++ ncurses-devel bison zlib libxml openssl

6、上传mysql源码包,解压,配置环境变量,创建目录

[root@slave1 ~]#rz
[root@slave1 ~]#tar -zxvf mysql-5.6.46.tar.gz
[root@slave1 ~]#vi .bash_profile

MySQL源码安装编译及踩过的坑_第5张图片

[root@slave1 ~]#mkdir -p /u01/my3306/data  //数据目录
[root@slave1 ~]#mkdir -p /u01/my3306/log/binlog  //server层日志
[root@slave1 ~]#mkdir -p /u01/my3306/log/iblog  //innodb,数据字典
[root@slave1 ~]#mkdir -p /u01/my3306/run  // socket
[root@slave1 ~]#mkdir -p /u01/my3306/tmp  // 临时目录
[root@slave1 ~]#chown -R mysql:mysql /u01/my3306 //更改该目录所在的用户和用户组
[root@slave1 ~]#chmod -R 755 /u01/my3306 //赋予该目录755的权限

chmod命令参考 https://blog.csdn.net/ZoeYen_/article/details/78559260

7、编译

①预编译
[root@slave1 mysql-5.6.46] # cmake \      //注意这里的预编译路径
>-DCMAKE_INSTALL_PREFIX=/u01/my3306 \    //
>-DINSTALL_DATADIR=/u01/my3306/data \    //
>-DDEFAULT_CHARSET=utf8 \    //
>-DDEFAULT_COLLATION=utf8_general_ci \    //
>-DEXTRA_CHARSETS=all \    //
>-DWITH_SSL=yes \    //
>-DWITH_EMBEDDED_SERVER=1 \    //
>-DENABLED_LOCAL_INFILE=1 \    //
>-DWITH_MYISAM_STORAGE_ENGING=1 \    //
>-DWITH_INNOBASE_STORAGE_ENGING=1 \    //
>-DWITH_ARCHIVE_STORAGE_ENGING=1 \    //
>-DWITH_BLACKHOLE_STORAGE_ENGING=1 \    //
>-DWITH_FEDERATED_STORAGE_ENGING=1 \    //
>-DWITH_PARTITON_STORAGE_ENGING=1 \    //
>-DMYSQL_UNIX_ADDR=/u01/my3306/run/mysql.sock \    //
>-DMYSQL_TCP_PORT=3306 \    //
>-DENABLED_LOCAL_INFILE=1 \    //
>-DSYSCONFDIR=/etc \    //
>-DWITH_READLINE=on 回车    //
②编译
[root@slave1 mysql-5.6.46] # make

MySQL源码安装编译及踩过的坑_第6张图片

[root@slave1 mysql-5.6.46] #make install

MySQL源码安装编译及踩过的坑_第7张图片

8、my.cnf参数配置(生产标准化,配置不同的实例,改3306),放到/u01/my3306/下,改文件用户权限

[client]
port=3306
socket=/u01/my3306/mysql.sock

[mysql]
pid_file=/u01/my3306/run/mysqld.pid

[mysqld]
autocommit=1
general_log=off
explicit_defaults_for_timestamp=true

# system
basedir=/u01/my3306
datadir=/u01/my3306/data
max_allowed_packet=1g
max_connections=3000
max_user_connections=2800
open_files_limit=65535
pid_file=/u01/my3306/run/mysqld.pid
port=3306
server_id=101
skip_name_resolve=ON
socket=/u01/my3306/run/mysql.sock
tmpdir=/u01/my3306/tmp

#binlog
log_bin=/u01/my3306/log/binlog/binlog
binlog_cache_size=32768
binlog_format=row
expire_logs_days=7
log_slave_updates=ON
max_binlog_cache_size=2147483648
max_binlog_size=524288000
sync_binlog=100

#logging
log_error=/u01/my3306/log/error.log
slow_query_log_file=/u01/my3306/log/slow.log
log_queries_not_using_indexes=0
slow_query_log=1
log_slave_updates=ON
log_slow_admin_statements=1
long_query_time=1

#relay
relay_log=/u01/my3306/log/relaylog
relay_log_index=/u01/my3306/log/relay.index
relay_log_info_file=/u01/my3306/log/relay-log.info

#slave
slave_load_tmpdir=/u01/my3306/tmp
slave_skip_errors=OFF


#innodb
innodb_data_home_dir=/u01/my3306/log/iblog
innodb_log_group_home_dir=/u01/my3306/log/iblog
innodb_adaptive_flushing=ON
innodb_adaptive_hash_index=ON
innodb_autoinc_lock_mode=1
innodb_buffer_pool_instances=8

#default
innodb_change_buffering=inserts
innodb_checksums=ON
innodb_buffer_pool_size= 128M
innodb_data_file_path=ibdata1:32M;ibdata2:16M:autoextend
innodb_doublewrite=ON
innodb_file_format=Barracuda
innodb_file_per_table=ON
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
innodb_io_capacity=1000
innodb_lock_wait_timeout=10
innodb_log_buffer_size=67108864
innodb_log_file_size=1048576000
innodb_log_files_in_group=4
innodb_max_dirty_pages_pct=60
innodb_open_files=60000
innodb_purge_threads=1
innodb_read_io_threads=4
innodb_stats_on_metadata=OFF
innodb_support_xa=ON
innodb_use_native_aio=OFF
innodb_write_io_threads=10

[mysqld_safe]
datadir=/u01/my3306/data

参数释义 https://www.cnblogs.com/mydriverc/p/8297144.html

9、初始化mysql脚本

[root@slave3 my3306]# ./scripts/mysql_install_db --user=mysql --basedir=/u01/my3306 --datadir=/u01/my3306/data --defaults-file=/u01/my3306/my.cnf

10、拷贝到linux启动脚本,建立软连接

[root@slave3 my3306]# cp /u01/my3306/support-files/mysql.server /etc/init.d/mysqld
[root@slave3 my3306]#chkconfig mysqld --add  //自启动
[root@slave3 my3306]#ln -s /u01/my3306/bin/mysql /usr/bin   //在不改变原目录/文件的前提下,起一个方便的别名!
[root@slave3 my3306]#ln -s /u01/my3306/bin/mysqld /usr/bin

11、启动mysql(两种方式),登录

[root@slave3 my3306]#service mysqld start
[root@slave3 my3306]#mysql

或者

[root@slave3 my3306]#/etc/init.d /mysqld start
[root@slave3 my3306]#mysql

MySQL源码安装编译及踩过的坑_第8张图片

成功!!!

你可能感兴趣的:(lilux)