文档结构图如下:

一、前期规划

1、软件环境以及说明

操作系统:RedHat Linux 6.7 64位

数 据 库:MYSQL5.6.38/5.7.20

MySQL 5.6:初始化数据时需要进到家目录的 script 目录下

执行:

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

我的环境执行如下:

./mysql_install_db --basedir=/usr/local/mysql5.6 --datadir=/mydata/mysql/mysql3306/data --defaults-file=/etc/my3306.cnf --user=mysql

此时数据库密码为空。

MySQL 5.7:初始化数据时需要进到家目录的 bin 目录下

执行:

/usr/local/mysql/bin/mysqld --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/ --initialize

已然已经废弃了使用 mysql_install_db 这个命令进行初始化数据的操作了。

我的环境执行如下:

/usr/local/mysql5.7/bin/mysqld --defaults-file=/etc/my3307.cnf --basedir=/usr/local/mysql5.7 --datadir=/mydata/mysql/mysql3307/data/ --user=mysql --initialize

注:--initialize 会自动生成密码在 error log 里面。如果加 --initialize-insecure  密码为空

二、安装数据库前准备

1、Selinux和系统防火墙iptables 需要关闭

service iptables stop

chkconfig iptables off

vi /etc/sysconfig/selinux

setenforce 0

查看IPTABLES 当前状态与关闭过程

chkconfig --list|grep iptables

也可以根据需要开放端口。

2、关闭sendmail服务

先查看是否安装sendmail的相关组件。

rpm -qa | grep sendmail

如果已安装sendmail插件:

service sendmail stop

service sendmail stop

chkconfig sendmail off

3、修改IO调度

查看IO 调度文件:

cat /sys/block/sda/queue/scheduler

修改I/O调度器;需要在 /etc/grub.conf 加入elevator=deadline,保证永久有效。

Deadline(截止时间调度程序)

特点:

通过时间以及硬盘区域进行分类,这个分类和合并要求类似于noop的调度程序.

Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.

Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择.

4、SWAP分区的设置

Swappiness值大小对如何使用swap分区有着很大的影响。

它有0和100两个极限值,0代表最大限度的使用物理内存,然后才使用swap分区,这种行为有可能导致系统内存溢出,出现OOM的错误,从而导致mysql被意外KILL掉,所以需要谨慎设置。

100则是积极的使用swap分区,并且把内存上面的数据及时搬到swap分区里(不建议)。这里建议大家不分配swap,或者分配4GB的空间就足够了。

查看swappiness文件

cat /proc/sys/vm/swappiness

vm.swappiness默认为60,设置为0表示尽量少使用swap,100表示尽量将inactive的内存页交换到swap里或者释放cache。inactive内存的意思是程序映射着,但是”长时间”不用的内存。我们可以利用vmstat查看系统里面有多少inactive的内存。

# vmstat -a 1

这个值推荐设置为5,设置方法如下,在/etc/sysctl.conf文件中增加一行。

vm.swappiness = 5

sysctl -p生效。

5、文件系统的选择

推荐使用xfs文件系统,相比ext4,它更方便管理,支持动态扩容,删除文件也方便。(redhat 7默认xfs)

6、操作系统的限制

查看操作系统的限制情况:

ulimit -a

open files 如果设置不合理,当前服务器的连接过多或者表过多时,就有可能出现打不来表或者访问不了表的现象,默认情况下,Linux的最大句柄数为1024个,表示单个进程最多可以访问1024个文件句柄。如果超过默认值,就会出现文件句柄超限的错误“too much open files”。

max user processes 参数的用途是,有时候我们可能会跑对个实例,但是发现创建不了新的连接,报出“resource temprarily unavaliable”的错误,表示没有足够的资源。

为防止以上两种报错情况,我们可以修改系统的软件限制。

vi /etc/security/limits.conf

*        soft    nproc   65535

*        hard    nproc  65535

*        soft    nofile  65535

*        hard    nofile  65535

7、numa需要关闭

关闭numa功能可以更好地分配内存,不需要采用swap的方式来获取内存;有经验的系统管理员和DBA都知道使用swap导致的数据库性能下降影响很大。

语句如下:

具体情况具体修改

方法一:

numactl --interleave=all /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

我的环境是:

numactl --interleave=all /usr/local/mysql5.6/bin/mysqld_safe --defaults-file=/etc/my3306.cnf &

numactl --interleave=all /usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &

方法二:

vi /etc/grub.conf

numa=off

保存,重启服务器。

8、上传镜像文件并安装源码包

yum -y install make gcc-c++ cmake bison-devel ncurses-devel glibc

三、安装MYSQL5.6

1、安装准备

先把软件包传到 /usr/local/ 目录下

groupadd mysql

useradd -g mysql mysql -s /sbin/nologin

设置mysql登入密码:passwd mysql

-s 指定它的shell

-d 指定用户主目录

-g 用户组 指定用户所属的用户组。

-G 用户组,用户组 指定用户所属的附加组。

-M:不要自动建立用户的登入目录。

passwd mysql        --可以不用设置密码,因为MYSQL用户不登录。

cd /usr/local/

tar -zxvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz

ln -s mysql-5.6.38-linux-glibc2.12-x86_64 mysql5.6  目录可以自己设置

建立目录:

mkdir -p /mydata/mysql/mysql3306/{data,logs}  --生产中建议用项目名+端口号

修改权限:

chown -R mysql:mysql /mydata/mysql/mysql3306/

chown -R mysql:mysql /usr/local/mysql5.6

chown -R mysql:mysql /mydata

设置环境变量:

修改方法一:

echo $PATH

export PATH=$PATH:/usr/local/mysql5.6/bin

修改方法二:不推荐用此方法

echo "export PATH=$PATH:/usr/local/mysql5.6/bin" >> /etc/profile

或者用

vim /etc/profile

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql5.6/bin

source /etc/profile

准备my3306.cnf 文件,可以自己命名成想要的文件名称。

阿里云是5.6.16版本

cpu 8核 内存32G  innodb_buffer_pool_size 24G;具体设置看情况修改参数,没有分离出undo,tmp,测试环境可以自定义修改innodb_data_file_path,innodb_buffer_pool_size等参数的大小;也可参照姜老师的文件。

[client]

port = 3306

socket = /tmp/mysqlclient.sock

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

port = 3306

socket = /tmp/mysql3306.sock

basedir = /usr/local/mysql5.6

datadir = /mydata/mysql/mysql3306/data

open_files_limit = 3072

back_log = 103

max_connections = 512

max_connect_errors = 100000

table_open_cache = 512

external-locking = FALSE

max_allowed_packet = 128M

sort_buffer_size = 2M

join_buffer_size = 2M

thread_cache_size = 51

query_cache_size = 32M

tmp_table_size = 96M

max_heap_table_size = 96M

slow_query_log = 1

slow_query_log_file = /mydata/mysql/mysql3306/logs/slow.log

log-error = /mydata/mysql/mysql3306/logs/error.log

log_bin_trust_function_creators=1

long_query_time = 0.05

server-id = 1323306

log-bin = /mydata/mysql/mysql3306/logs/mysql-bin

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 128M

max_binlog_size = 1024M

expire_logs_days = 7

key_buffer_size = 32M

read_buffer_size = 1M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

character-set-server=utf8

default-storage-engine=InnoDB

binlog_format=row

#gtid_mode=on

#log_slave_updates=1

#enforce_gtid_consistency=1

interactive_timeout=100

wait_timeout=100

transaction_isolation = REPEATABLE-READ

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 1434M

innodb_data_file_path = ibdata1:1024M:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 16M

innodb_log_file_size = 256M

innodb_log_files_in_group = 2

innodb_max_dirty_pages_pct = 50

innodb_file_per_table = 1

innodb_locks_unsafe_for_binlog = 0

[mysqldump]

quick

max_allowed_packet = 32M

2、安装MYSQL5.6

cd /usr/local/mysql5.6/scripts/

./mysql_install_db --basedir=/usr/local/mysql5.6 --datadir=/mydata/mysql/mysql3306/data --defaults-file=/etc/my3306.cnf --user=mysql

如下:

两次OK

启动mysql5.6

/usr/local/mysql5.6/bin/mysqld_safe --defaults-file=/etc/my3306.cnf &

查看mysql进程,验证是否启动成功:

注意:

Mysql 读取配置文件的顺序是

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

MYSQL关闭:

/usr/local/mysql5.6/bin/mysqladmin -S /tmp/mysql3306.sock shutdown

本地登陆:

mysql -S /tmp/mysql3306.sock

3、参数修改

1、修改数据库root密码

[root@laodeng5 mysql-5.6.15]# mysqladmin -u root password 'mysql'

或者

方法二:

mysql>set password for 'root'@'localhost'=password('mysql');

mysql>flush privileges;

登陆方式:

mysql -S /tmp/mysql3306.sock -uroot -p'mysql'

关闭数据库:

mysqladmin -S /tmp/mysql3306.sock shutdown -uroot –p’mysql’

2、5.7之前需要安全加固

show databases;

select user,host,password from mysql.user;   --实际就需要user localhost,其它都可以删掉

delete from mysql.user where user != 'root' or host != 'localhost';

mysql> grant all privileges  on *.* to root@'%' identified by "password";  --windows 只允许本地访问,需要给root赋权
Query OK, 0 rows affected (0.00 sec)

3、删除测试库(可选)

select * from mysql.db\G

truncate table mysql.db;

drop database test;

flush privileges;

怎么确认mysql是否启动起来的?

A.查看进程是否存在

ps aux|grep mysqld

B.查看端口是不是监听正确

netstat -nlap|grep mysqld

ss -lnpt | grep mysqld

C.查看错误日志有无异常

vim

tail

less

设置大小写不敏感:

mysql> show variables like '%case%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| lower_case_file_system | OFF   |

| lower_case_table_names | 1     |

+------------------------+-------+

注意:lower_case_table_names=1,参数为静态参数,需要在my.cnf配置后进去重启生效。

四、安装MYSQL5.7

1、安装准备工作

MYSQL5.7已经废弃了mysql_install_db 这个初始化命令了。

先把软件包传到 /usr/local/ 目录下

groupadd mysql

useradd -g mysql mysql -s /sbin/nologin

设置mysql登入密码:passwd mysql    --可以不用设置密码,因为MYSQL用户不登录。

-s 指定它的shell

-d 指定用户主目录

-g 用户组 指定用户所属的用户组。

-G 用户组,用户组 指定用户所属的附加组。

-M:不要自动建立用户的登入目录。

passwd mysql

cd /usr/local/

tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7

mkdir -p /mydata/mysql/mysql3307/{data,logs}

修改权限:

chown -R mysql:mysql /mydata/mysql/mysql3307/

chown -R mysql:mysql /usr/local/mysql5.7

chown -R mysql:mysql /mydata

设置环境变量:

修改方法一:

echo $PATH

export PATH=$PATH:/usr/local/mysql5.7/bin

修改方法二:不推荐用此方法

echo "export PATH=$PATH:/usr/local/mysql5.7/bin" >> /etc/profile

或者用

vim /etc/profile

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql5.7/bin

source /etc/profile

准备my3307.cnf 文件,可以自己命名成想要的文件名称。参数按照实际情况进行修改。

[client]

port = 3307

socket = /tmp/mysql5.7.sock

default-character-set=utf8

[mysql]

prompt="\u@db \R:\m:\s [\d]> "

no-auto-rehash

[mysqld]

user = mysql

port = 3307

basedir = /usr/local/mysql5.7

datadir = /mydata/mysql/mysql3307/data

socket = /tmp/mysql3307.sock

log_bin_trust_function_creators=1

character-set-server = utf8mb4

event_scheduler=1

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

skip_name_resolve = 1

open_files_limit = 65535

back_log = 1024

max_connections = 500

max_connect_errors = 1000000

table_open_cache = 1024

table_definition_cache = 1024

table_open_cache_instances = 64

thread_stack = 512K

external-locking = FALSE

max_allowed_packet = 32M

sort_buffer_size = 4M

join_buffer_size = 4M

thread_cache_size = 768

query_cache_size = 0

query_cache_type = 0

interactive_timeout = 600

wait_timeout = 600

tmp_table_size = 32M

max_heap_table_size = 32M

slow_query_log = 1

slow_query_log_file = /mydata/mysql/mysql3307/logs/slow.log

log-error = /mydata/mysql/mysql3307/logs/error.log

long_query_time = 0.1

server-id = 3307101

log-bin = /mydata/mysql/mysql3307/logs/mysql-binlog

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 1G

max_binlog_size = 1G

expire_logs_days = 7

master_info_repository = TABLE

relay_log_info_repository = TABLE

gtid_mode = on

enforce_gtid_consistency = 1

log_slave_updates

binlog_format = row

relay_log_recovery = 1

relay-log-purge = 1

key_buffer_size = 32M

read_buffer_size = 8M

read_rnd_buffer_size = 4M

bulk_insert_buffer_size = 64M

lock_wait_timeout = 3600

explicit_defaults_for_timestamp = 1

innodb_thread_concurrency = 0

innodb_sync_spin_loops = 100

innodb_spin_wait_delay = 30

transaction_isolation = REPEATABLE-READ

innodb_buffer_pool_size = 1024M

innodb_buffer_pool_instances = 8

innodb_buffer_pool_load_at_startup = 1

innodb_buffer_pool_dump_at_shutdown = 1

innodb_data_file_path = ibdata1:1G:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 32M

innodb_log_file_size = 2G

innodb_log_files_in_group = 2

innodb_max_undo_log_size = 4G

innodb_io_capacity = 2000

innodb_io_capacity_max = 4000

innodb_flush_neighbors = 0

innodb_write_io_threads = 8

innodb_read_io_threads = 8

innodb_purge_threads = 4

innodb_page_cleaners = 4

innodb_open_files = 65535

innodb_max_dirty_pages_pct = 50

innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 4000

innodb_checksum_algorithm = crc32

innodb_lock_wait_timeout = 10

innodb_rollback_on_timeout = 1

innodb_print_all_deadlocks = 1

innodb_file_per_table = 1

innodb_online_alter_log_max_size = 4G

internal_tmp_disk_storage_engine = InnoDB

innodb_stats_on_metadata = 0

innodb_status_file = 1

innodb_status_output = 0

innodb_status_output_locks = 0

performance_schema = 1

performance_schema_instrument = '%=on'

#innodb monitor

innodb_monitor_enable="module_innodb"

innodb_monitor_enable="module_server"

innodb_monitor_enable="module_dml"

innodb_monitor_enable="module_ddl"

innodb_monitor_enable="module_trx"

innodb_monitor_enable="module_os"

innodb_monitor_enable="module_purge"

innodb_monitor_enable="module_log"

innodb_monitor_enable="module_lock"

innodb_monitor_enable="module_buffer"

innodb_monitor_enable="module_index"

innodb_monitor_enable="module_ibuf_system"

innodb_monitor_enable="module_buffer_page"

innodb_monitor_enable="module_adaptive_hash"

[mysqldump]

quick

max_allowed_packet = 32M

2、安装MYSQL5.7

cd /usr/local/mysql5.7/bin/

./mysqld --defaults-file=/etc/my3307.cnf --basedir=/usr/local/mysql5.7 --datadir=/mydata/mysql/mysql3307/data/ --user=mysql --initialize

初始化加上initialize参数,表示会生成一个临时的数据库初始化密码,记录在log-error(错误日志)里面,如果加上--initialize-insecure参数,代表无密码进入。建议使用生成的初始化密码方式。

启动mysql5.7

/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &

查看生成的密码文件:

cat /mydata/mysql/mysql3307/logs/error.log |grep password

3、参数修改:

登陆并修改密码:

/usr/local/mysql5.7/bin/mysql -S /tmp/mysql3307.sock -uroot -p'ogdf8ru<r,nI'

设置ROOT密码永不过期:

alter user 'root'@'localhost' password expire never;

设置ROOT 可以从其他客户端或者服务器登陆:

mysql> update mysql.user set Host='%' where User='root';

Query OK, 0 rows affected (0.00 sec)

Rows matched: 1  Changed: 0  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

mysql> select  Host,User from mysql.user;

+-----------+---------------+

| Host      | User          |

+-----------+---------------+

| %         | root          |

| localhost | mysql.session |

| localhost | mysql.sys     |

+-----------+---------------+

3 rows in set (0.00 sec)

设置大小写不敏感:

mysql> show variables like '%case%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| lower_case_file_system | OFF   |

| lower_case_table_names | 1     |

+------------------------+-------+

注意:lower_case_table_names=1,参数为静态参数,需要在my.cnf配置后进去重启生效。

mysql> grant all privileges  on *.* to root@'%' identified by "password";    --windows 只允许本地访问,需要给root赋权
Query OK, 0 rows affected (0.00 sec)

binlog2sql 工具的安装。

MYSQL5.6和5.7编译标准化安装与配置的更多相关文章

  1. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  2. 在centos6.6中mysql5.5的编译、安装、配置

    今天根据需求要在centos6.6上编译安装mysql5.5,因为以前编译安装过感觉很简单,但是今天还是出现了点小问题,所以把过安装过程总结了一下: 好像从mysql5.5开始编译安装mysql需要用 ...

  3. MySQL-5.7.10主主同步的安装和配置

    目录 目录 1 1. 安装 1 2. 修改MySQL的root密码 4 3. mysqld_safe和mysql.server 4 4. 主主同步配置 4 4.1. 创建同步用户 4 4.2. my. ...

  4. CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin,mysql8.0.1/mysql5.7.22+centos7,windows mysql安装、配置

    介绍如何在CentOs6.2下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make&am ...

  5. 数据库概述、mysql-5.7.11-winx64.zip 的下载、安装、配置和使用(windows里安装)图文详解

    本博文的主要内容有 .数据库的概述 .mysql-5.7.11-winx64.zip 的下载    .mysql-5.7.11-winx64.zip 的安装 .mysql-5.7.11-winx64. ...

  6. [Linux 小技巧] Ubuntu 14.04 下编译、安装、配置最新开发版 GoldenDict

    1. 背景介绍 GoldenDict 是一款非常优秀的跨平台电子词典软件,支持 StarDict.Babylon 等多种词典.其 PC 版基于 Qt 编写,完全免费.开源且没有广告.GoldenDic ...

  7. Windows平台Hadoop编译、安装、配置与运行(转)

    http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windo ...

  8. mysql5.7.10 源码编译安装记录 (centos6.4)【转】

    一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...

  9. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

随机推荐

  1. 读书笔记「Python编程:从入门到实践」_6.字典

    6.1 一个简单的字典 alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points' ...

  2. BZOJ 1146: [CTSC2008]网络管理Network 带修改主席树_树套树_DFS序

    Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路 ...

  3. 关于 docsify ssr 的研究

    关于 docsify ssr 的研究 docsify 虽然不错, 但是不支持 seo .官网虽然提供 seo 的一个简单示例, 但总总问题在 issues 中无人解答. 今天再次尝试, 解决了 ind ...

  4. 洛谷P1464 Function

    对于一个递归函数w(a,b,c)w(a,b,c) 如果a \le 0a≤0 or b \le 0b≤0 or c \le 0c≤0就返回值11. 如果a>20a>20 or b>20 ...

  5. php实现网站访客数量统计的方法(简单实现,不能防刷新)

    方法一: <?php function Counter()//定义函数 { $five = "00000";//声明变量,$five,$four等变量表示零的个数,放在数字前 ...

  6. python 用PIL Matplotlib处理图像的基本操作

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...

  7. Docker在WIN7上的配置

    为什么使用Docker Toolbox Docker在Windows上使用有两种方式,一是利用VirtualBox建立linux虚拟机,在linux虚拟机中安装docker服务端和客户端,二是利用Wi ...

  8. 痛苦的Windows下的temp目录

    2007不能运行了,错误: [MSBuild Error] “DCC”任务意外失败. System.Configuration.ConfigurationErrorsException: 配置系统未能 ...

  9. Spring Cloud-hystrix Dashboard(八)

    单机模式 1.创建一个dashboard项目 2.引入依赖 <!--histrix依赖--> <dependency> <groupId>org.springfra ...

  10. 0709MySQL 数据库性能优化之表结构优化

    转自http://isky000.com/database/mysql-perfornamce-tuning-schema MySQL 数据库性能优化之缓存参数优化 MySQL数据库性能优化之硬件瓶颈 ...