8台机器安装总结

来源:互联网 发布:商务通js代码 编辑:程序博客网 时间:2024/05/07 05:33

1.逻辑部署架构

2.系统优化、安装软件及优化

2.1 8台服务器的系统优化
2.1.1编辑文件/etc/sysctl.conf,将2.1.1.2系统内核参数调优添加项添加到sysctl.conf文件中。

[root@V_wangshenweb01 ~]# vi /etc/sysctl.conf

2.1.1.1系统默认参数配置的含义

#禁用包过滤功能net.ipv4.ip_forward = 0#启用源路由核查功能net.ipv4.conf.default.rp_filter = 1#禁用所有IP源路由net.ipv4.conf.default.accept_source_route = 0#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0,表示关闭kernel.sysrq = 0#控制core文件的文件名是否添加pid作为扩张kernel.core_uses_pid = 1#开启SYN Cookies,当出现SYN等待队列溢出时,启用coookies来处理net.ipv4.tcp_syncookies = 1#禁用网桥上的netfilternet.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0#每个消息队列的大小(单位:字节)限制kernel.msgmnb = 65536#整个系统最大消息队列数量限制kernel.msgmax = 65536#单个共享内存段的大小(单位:字节)限制,计算公式64G*1024*1024*1024(字节)kernel.shmmax = 68719476736#所有内存大小(单位:页,1页=4kb),计算公式64G*1024*1024*1024/4KB(页)kernel.shmall = 42949672962.1.1.2系统内核参数调优添加项#additional#记录的那些尚未收到客户端确认信息的连接请求的最大值,对于超过128M内存的系统,缺省值为1024,低于128M小内存的系统则为128net.ipv4.tcp_max_syn_backlog = 16384#每个网络口接受数据包的速率比内核处理这些包的速率快,允许送到队列的数据包的最大数目net.core.netdev_max_backlog = 20000#调整系统同时发起并发TCP连接数,可能需要提高连接的储备值,以应对大量突发入局连接请求的情况。net.core.somaxconn = 2048#该参数指定了发送套接字缓冲区大小的缺省值(以字节为单位)net.core.wmem_default = 262144#该参数指定了接收套接字缓冲区大小的缺省值(以字节为单位)net.core.rmem_default = 262144#该参数指定了接收套接字缓冲区大小的缺省值(以字节为单位)net.core.rmem_max = 16777216 #该参数指定了发送套接字缓冲区大小的缺省值(以字节为单位)net.core.wmem_max = 16777216#tcp_mem有三个INTEGER变量:low,pressure,highLow:TCP使用了低于该值的内存页面数时,TCP没有内存压力,TCP不会考虑释放内存Pressure:TCP使用超过该值的内存页面时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure模式High:允许所有TCP Sockets用于排队缓冲数据报的页面量net.ipv4.tcp_mem = 786432 2097152 3145728#TCP读buffernet.ipv4.tcp_rmem = 4096 4096 16777216#TCP写buffernet.ipv4.tcp_wmem = 4096 4096 16777216#表示开启TCP连接中TIME-WAIT Scokets的快速回收,默认为0,表示关闭net.ipv4.tcp_tw_recycle = 1#表示开启重用,允许将TIME-WAIT Scokets重新用于新的TCP连接,默认为0,表示关闭net.ipv4.tcp_tw_reuse = 1#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也会有因为大量的死套字而内存溢出的风险,FIN-WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5k内存,但是它们的生存期长些。net.ipv4.tcp_fin_timeout = 15#系统所能处理不属于任何进程的TCP sockets 最大数量net.ipv4.tcp_max_orphans = 131072#将系统对本地端口范围限制设置为1024-65535之间net.ipv4.ip_local_port_range = 1024 65535#表示文件句柄的最大数量fs.file-max = 209708#内核允许超量使用内存知道用完为止,默认值为0,表示当用户请求更多的内存时,内核尝试估算出剩余可用的内存。当这个参数设为2时,内核会使用一个绝不过量使用内存的算法,即使整个系统内存地址空间不能超过swap+50%的RAM值,50%参数的设定实在overcommit_ratio中设定。vm.overcommit_memory=1

2.2 8台服务器的最大句柄数设置

[root@jdap01 ~# vi /etc/security/limits.conf

添加以下内容,如果有,则修改为以下内容

* soft nofile 209870* hard nofile 209870
[root@V_wangshenweb01 ~]# etc/security/limits.d/90-nproc.conf

把nproc也要改成209870,不用是默认的1024.

2.3 在195.203.1.6~9服务器上安装jdk1.7.0_79、ftp以及tomcat7.0(每台服务器的安装方式一样)
2.3.1安装JDK1.7.0_49

1创建java目录,把压缩包放到java目录下

[root@V_wangshenweb01 ~]# mkdir /usr/java

2 解压jdk-7u79-linux-x64.tar.gz

[root@V_wangshenweb01 java]# tar -zxvf jdk-7u79-linux-x64.tar.gz

3 修改/etc/profile文件

[root@V_wangshenweb01 ~]# vi /etc/profile

在最下边添加以下内容

JAVA_HOME=/usr/java/jdk1.7.0_79JRE_HOME=$JAVA_HOME/jreCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHPATH=$JAVA_HOME/bin:$PATH

4 重新刷新profile文件,使修改生效

[root@V_wangshenweb01 ~]# source /etc/profile

5 输入java -version测试jdk是否安装成功

[root@V_wangshenweb01 ~]# java -version
java version "1.7.0_79"Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

出现以上内容,则表示安装JDK成功。
2.3.2安装ftp

  1. 下载ftp安装包vsftpd-2.0.5-16.e15_4.1.x86_64.rpm安装服务端

用命令查看是否安装过rpm的ftp

[root@V_wangshenweb01 ~]# rpm -qa |grep vsftpd
  1. 没有,用rpm安装
[root@V_wangshenweb01 ~]# rpm -ivh vsftpd-2.0.5-16.e15_4.1.x86_64.rpm

3.编辑vsftpd.conf文件,查看dirmessage_enable=yes,如果为no,改为yes

[root@V_wangshenweb01 ~]# vi /etc/vsftpd/vsftpd.conf
  1. 查看vsftpd状态
[root@V_wangshenweb01 ~]# chkconfig --list|grep vsftpd

如果为以下状态

vsftpd    0:off  1:off 2:off 3:off   4:off  5:off 6:off

则开启状态

[root@V_wangshenweb01 ~]# chkconfig vsftpd on

5.启动vsftpd服务

[root@V_wangshenweb01 ~]# service vsftpd start

6.下载ftp安装包ftp-0.17-54.e16.x86_64.rpm安装客户端

[root@V_wangshenweb01 ~]# rpm -Uvh ftp-0.17-54.e16.x86_64.rpm
  1. 安装完成,输入ftp命令,进入ftp
[root@V_wangshenweb01 ~]# ftpftp>

安装ftp成功!!!
2.3.3安装tomcat7.0

1.通过xftp把apache-tomcat-7.0.64.tar.gz放到/usr/local目录下

(1)解压apache-tomcat-7.0.64.tar.gz

[root@V_wangshenweb01 local]# tar -zxvf apache-tomcat-7.0.64.tar.gz

(2)修改解压完的目录为tomcat7

[root@V_wangshenweb01 local]# mv apache-tomcat-7.0.64 tomcat7

(3) 进入/tomcat7/conf下,修改server.xml文件,调整最大线程数, URLEncoding 改为UTF-8, NIO 替换BIO(此步骤为优化tomcat服务)

[root@V_wangshenweb01 conf]# vi server.xml

把原有的:

<Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />

修改为:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"               connectionTimeout="20000"               redirectPort="8453" maxThreads="5000-8000" acceptCount="1000" URLEncoding="UTF-8" />

退出并保存(:wq)或(ZZ)

5.测试tomcat是否安装成功

[root@V_wangshenweb01 bin]# ./startup.sh[root@V_wangshenweb01 bin]# curl http://localhost:8080

出现以下内容:

<!DOCTYPE html><html lang="en">    <head>        <title>Apache Tomcat/7.0.57</title>        <link href="favicon.ico" rel="icon" type="image/x-icon" />        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />        <link href="tomcat.css" rel="stylesheet" type="text/css" /></head>..............

说明安装成功!!
2.3.4安装tomcat的jsvc守护进程(此步骤为优化tomcat服务)

1.添加tomcat用户及用户组

[root@V_wangshenweb01 ~]# groupadd tomcat[root@V_wangshenweb01 ~]# useradd -g tomcat tomcat

2.改变tomcat的用户及用户组

[root@V_wangshenweb01 ~]# chown -R tomcat  /usr/local/tomcat[root@V_wangshenweb01 ~]# chgrp -R tomcat  /usr/local/tomcat

3.切换用户为tomcat

[root@V_wangshenweb01 ~]# su  tomcat

4.进入tomcat下的bin目录,解压 commons-daemon-native.tar.gz

[tomcat@V_wangshenweb01 bin]# cd /usr/local/tomcat7.0.57/bin/[tomcat@V_wangshenweb01 bin]# tar -zxvf commons-daemon-native.tar.gz

5.得到文件commons-daemon-1.0.15-native-src,进入nuix目录

[tomcat@V_wangshenweb01 bin]# cd commons-daemon-1.0.15-native-src/unix/

6.发现configure配置文件并编译,做如下操作

[tomcat@V_wangshenweb01 unix]# chmod 777 configure[tomcat@V_wangshenweb01 unix]# ./configure[tomcat@V_wangshenweb01 unix]# make

7.编译完成后出现jsvc文件夹 复制到/usr/local/tomcat7.0.57/bin

[tomcat@V_wangshenweb01 unix]# cp jsvc /usr/local/tomcat7.0.57/bin

8.把bin目录下的daemon.sh复制到/etc/init.d/tomcat

注:此时要把用户切换为root,否则会提示权限不够

[root@V_wangshenweb01 bin]# cp ./daemon.sh /etc/init.d/tomcat

9.修改/etc/init.d/tomcat

[root@V_wangshenweb01 bin]# vi etc/init.d/tomcat

在#!/bin/sh下添加以下内容

# chkconfig:2334 90 15# description Tomcat-en Manager# resolve links - $0 may be a softlink下添加以下内容#jdk的位置JAVA_HOME=/usr/java/jdk1.7.0_79#tomcat的位置CATALINA_HOME=/usr/local/tomcatDAEMON_HOME=$CATALINA_HOME/bin#使用tomcat身份启动TOMCAT_USER=tomcatCATALINA_BASE=$CATALINA_HOMECATALINA_OPTS="-server -XX:MaxPermSize=512m -XX:MaxNewSize=512m -Xmx2048m"

保存并退出(:wq)

10.更改tomcat权限

[root@V_wangshenweb01 bin]# chmod 777 /etc/init.d/tomcat

11.添加tomcat服务

[root@V_wangshenweb01 bin]# chkconfig --add tomcat

12.查看服务

[root@V_wangshenweb01 bin]# chkconfig --list|grep tomcattomcat         0:off   1:off 2:on 3:on 4:on 5:off   6:off

13.启动tomcat

[tomcat@V_wangshenweb01 bin]# service tomcat start[tomcat@V_wangshenweb01 bin]# service tomcat stop

2.4 在服务器上安装 nginx及配置nginx和tomcat的负载均衡
2.4.1安装nginx

1.添加nginx用户及用户组

[root@V_wangshenweb01 ~]# groupadd nginx[root@V_wangshenweb01 ~]# useradd -g nginx nginx

2.把nginx-1.10.2.tar.gz压缩包拷贝到/usr/local/目录下并解压

[root@V_wangshenweb01 local]# tar -zxvf nginx-1.10.2.tar.gz

3.给解压好的文件nginx-1.10.2重命名为nginx

[root@V_wangshenweb01 local]#mv nginx-1.10.2 nginx

4.进入conf目录下将nginx.conf移动到nginx目录下然后对其进行修改

[root@V_wangshenweb01 nginx]#cd conf[root@V_wangshenweb01 conf]#cp nginx.conf /usr/local/nginx[root@V_wangshenweb01 nginx]#vi nginx.conf
#修改内容如下:user  nginx  nginx;worker_processses 2;error_log /usr/local/nginx/logs/nginx_error.log;pid /usr/local/nginx/logs/nginx.pid;events{worker_connections 65535;}

5.进行初始化设置并编译(安装了很多的第三方模块,需要相应第三方模块的压缩包)

[root@V_wangshenweb01 nginx]#./configure --prefix=/etc/nginx/ --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre --with-luajit --add-module=../ngx_cache_purge-2.3/ --add-module=../nginx_upstream_check_module-0.3.0/ -j2 --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-file-aio --with-http_v2_module

——————————安装参数详解————————————-

--prefix=<path> nigix安装的根路径,所有其他路径都要依赖该选项--sbin-path=<path> 指定nginx二进制文件的路径,没指定的话,这个路径依赖--prefix选项--conf-path=<path> 如果在命令行未指定配置文件,那么将会通过这里指定的路径,nginx将会去那里查找它的配置文件--error-log-path=<path> 错误文件路径,nginx写入错误文件的地址,除非有其他配置--pid-path=<path> nginx master进程pid写入的文件位置,通常在/var/run下--lock-path=<path> 共享存储器互斥锁文件夹--user=<user> worker进程运行的用户--group=<group> worker进程运行的组--with-file-alo  为freeBSD4.3+和linux2.6.22+系统启动io--with-debug  启动测试日志,生产环境不推荐--with-http_flv_module 允许ngx_http_flv_module模块(mod_flvx),这个模块支持对FLV(flash)文件的拖动播放--with-http_mp4_module 支持H264/AAC文件为伪流媒体--with-http_ssl_module 如果需要对流量加密,可使用此选项,在urls中开始部分将会是https(需要openssl库)--with-pcre 设置PCRE库的源码路径如果使用yum方式安装,使用--with-pcre自动找到库文件,使用--with-pcre=path,需要从PCRE网站下载pcre库的源码并解压--add-module=../ngx_cache_purge-2.3/ 添加第三方外部模块ngx_cache_purge-2.3--add-module=../nginx_upstream_check_module-0.3.0/  添加第三方外部模块nginx_upstream_check_module-0.3.0/--with-http_realip_module 允许ngx_http_reallp_module(mod_rpaf),此模块支持显示真实来源IP地址,主要用于NGINX做前端负载均衡服务器使用,如果你的nginx在七层负载均衡器或者其他设备之后,它们将Http头中的客户端Ip地址传递,这时需要启用此模块,在多个客户处于一个Ip地址的情况下使用--with-http_addition_module 作为一个输出过滤器,使你能够在请求经过一个location前或后时在该location本身添加内容--with-http_sub_module 允许ngx_http_sub_module模块,这个模块可以能够在nginx的应答中搜索并替换文本-with-http_gzip_static_module 允许ngx_http_gzip_static_module(mod_dflate)模块,这个模块子啊一个预压缩文件传送到开启Gzip压缩的客户端之前检查是否已经存在以".gz"结尾的压缩文件,这样可以防止文件被重复压缩--with-http_random_index_module 允许ngx_random_index_module 模块(mod_autoindex),从目录中选择一个随机主页--with-http_secure_link_module 该模块提供一种机制,它会将一个哈希值链接到一个url中,因此只有那些使用正确的密码能够计算链接--with-http_stub_status_module 这个模块可以取得一些nginx的运行状态,如果是工业状况,可以直接取消,输出的状态信息可使用RRDtool或者类似的工具绘制成图-with-http_v2_module 这个模块在https上速度比http还要快

———————————————-安装参数解释完毕——————————————-

[root@V_wangshenweb01 nginx]#make[root@V_wangshenweb01 nginx]#make install

6.进入nginx/sbin目录,启动nginx

[root@V_wangshenweb01 sbin]#./nginx

可能遇到以下问题

./nginx:error while loading shared libraries:libpre.so.1 accnot open shared object file :No such file or directory

解决方法如下:

建立软链接:ln -s /usr/local/lib/libpre.so.1 /lib64/

7.再次启动nginx并测试curl http://localhost:80/

[root@V_wangshenweb01 sbin]#./nginx[root@V_wangshenweb01 sbin]#.curl http://localhost:80/

安装nginx成功!!!
2.4.2配置nginx和tomcat负载均衡

  1. 修改nginx目录下的nginx.conf文件
[root@V_wangshenweb01 nginx]#vi nginx.conf

在http的大括号里面的access_log下面加上以下内容:

upstream tomcatsserver 195.203.1.6:8080;server 195.203.1.7:8080;server 195.203.1.8:8080;server 195.203.1.9:8080;}

然后在location /{}里加入以下内容:

root html;index index.html index.htm;proxy_pass http://tomcats;proxy_redirect default;

2.保存并退出nginx.conf(:wq)

3.此时将四台服务器的tomcat都开启,然后开启两台nginx,然后在nginx服务器上面分别访问curl http://localhost:8080就可以随机访问四台tomcat的欢迎页面了。

配置成功!!!

2.5 在1服务器上安装mysql、mysql的主从配置以及mysql的参数优化
2.5.1在安装mysql

1.将安装包mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz拷贝到/usr/local/下(建议此目录),然后解压

[root@jdap01 local]# tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

2.解压后重命名

[root@jdap01 local]# mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql

3.新建用户和用户组,并授权

[root@jdap01 local]# groupadd mysql[root@jdap01 local]# useradd msyql -g mysql[root@jdap01 local]# chown mysql -R ./mysql/[root@jdap01 local]# chgrp mysql -R ./mysql/

4.修改/usr/local/mysql/support-files目录下的mysql.server文件

设置值如下:

basedir= /usr/local/mysqldatadir= /usr/local/mysql/data

5.执行mysqld 脚本,初始化表空间

[root@jdap01 local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir= /usr/local/mysql --datadir= /usr/local/mysql/data --character-set-server=utf8

如果报错,显示剩余空间不足,则将命令改为:

【报错内容如下:2017-04-14T07:29:15.992800Z 0 [ERROR] InnoDB: Error number 28 means 'No space left on device'2017-04-14T07:29:15.992830Z 0 [ERROR] InnoDB: Could not set the file size of './ibdata1'. Probably out of disk space2017-04-14T07:29:15.992851Z 0 [ERROR] InnoDB: InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.2017-04-14T07:29:16.594143Z 0 [ERROR] Plugin 'InnoDB' init function returned error.2017-04-14T07:29:16.594212Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.2017-04-14T07:29:16.594226Z 0 [ERROR] Failed to initialize plugins.2017-04-14T07:29:16.594233Z 0 [ERROR] Aborting】

将命令修改为:

[root@jdap01 local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir= /usr/local/mysql --datadir= /var/data --character-set-server=utf8

这里将会生成mysql数据库root用户的初始密码,注意保存!

然后回去修改/usr/local/mysql/support-files目录下的mysql.server文件

设置值如下:

basedir= /usr/local/mysqldatadir= /var/data

6.执行/usr/local/mysql/bin目录下的mysqld_safe脚本(注:删除系统自动生成的/etc/my.cnf文件,用我们给的my.cnf文件)

[root@jdap01 local]#rm -rf /etc/my.cnf[root@jdap01 local]# /usr/local/mysql/bin/mysqld_safe --user=mysql[root@V_wangshenweb01 support-files]# ./mysql.server  start

7.启动mysql客户端:

[root@jdap01 local]# ./mysql/bin/mysql -uroot -pEnter password:(输入上面保存的密码)Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.7.18Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

安装成功!!

8.修改mysql的密码,命令如下:

mysql> SET PASSWORD FOR'root'@'localhost'=PASSWORD('mysql1234');

即为把密码修改为mysql1234开始使用mysql.

9.输入命令:

mysql> show databases;

显示:

+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.00 sec)

2.5.2 mysql添加系统配置服务

1.把mysql下的mysql.server配置文件复制到/etc/init.d/mysql

[root@jdap01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

2.修改mysql服务控制器脚本执行权限

[root@jdap01 ~]# chmod +x /etc/init.d/mysql

3.添加mysql服务加入到系统服务器

[root@jdap01 ~]# chkconfig --add mysql

4.查看服务是否开启(2,3,4,5为on,表示服务开启,如果为off,执行命令chkconfig mysql on)

[root@jdap01 ~]# chkconfig --list|grep mysqlmysqld         0:off 1:off 2:on 3:on 4:on 5:on 6:off

5.将mysql的bin目录路径加入到PATH环境变量中

#在最后添加以下内容:PATH=$PATH:/usr/local/mysql/binexport PATH

6.执行以下命令,使修改生效

[root@jdap01 ~]# source /etc/profile

7.service启动mysql

[root@jdap01 ~]# service mysql startStarting MySQL..                                           [  OK  ]

8.进入mysql

[root@jdap01 ~]# mysql -uroot -p

输入密码后,进入mysql,mysql添加系统配置服务成功!!!

2.6配置服务器上mysql的优化
2.6.1修改my.cnf文件,在[mysqld]下添加以下文件,优化mysql

[root@jdap01 ~]# vi /etc/mysql/my.cnf
[mysqld]#添加以下内容#统一编码格式为utf-8character-set-server=utf8#mysql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接的数量越多,介于mysql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当的调整该值,不能盲目的提高设值。可以通过‘conn%’通配符查看当前状态的连接数量,以夺定该值的大小max_connections=2000#对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行FLUSH HOST.max_connect_errors = 1000000#慢查询时间,超过2秒则为慢查询long_query_time=2#记录每条mysql执行时间超过long_query_time秒的语句slow_query_log=on#慢查询日志文件路径slow_query_log_file=/home/db/mysqldata/slow.log#未使用索引的查询也被记录到慢查询日志中(可选),尽量少使用log_queries-not-using-indexes = 1#超过15天的binlog删除expire_logs_days = 15#禁止Mysql对外部的连接进行DNS解析,使这一选项可以消除Mysql进行DNS解析的时间。但需要注意,如果该选项开启,则所有的远程主机连接授权都要使用ip地址的方式,否则Mysql无法正常处理请求skip-name-resolve = 1#mysql选项以避免外部锁定。该选项默认开启skip_external_locking = 1#mysql会根据innodb_io_capacity 的值来判断更新的速度能不能再可控的范围之内,如果innodb_io_capacity 设置过大,则会造成mysql高估了磁盘的能力,导致脏页堆积,如果设置过低,则会出现mysql低估了磁盘的能力,使得数据库能够单位时间内提交的事务数降低innodb_io_capacity = 500#这个参数控制着innodb数据文件及redo log的打开、刷写模式,有三个值Fdatasync(默认):写数据时,write这一步并不需要真正的写到磁盘才算完成(可能写到操作系统buffer中就会返回完成),真正完成flush操作,buffer交给操作系统区flush,并且文件的元数据信息也都需要更新到磁盘。O_DSYNC模式:写日志操作是在write这步完成,而数据文件的写入是在flush这步通过sync完成O_DIRECT模式:数据文件的写入操作是直接从mysql innodb buffer到磁盘,并不用通过操作系统的缓冲,而真正的完成也是在flush这步,日志还是要经过OS缓冲innodb_flush_method = O_DIRECT#Innodb事务在被回滚之前可以等待一个锁定的超时秒数。Innodb在它自己的锁定表中自动检测事务死锁并且回滚事务。Innodb用LOCK TABLES 语句注意到锁定设置。默认为50秒innodb_lock_wait_timeout = 5#此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。Mysql开发人员建议设置为1-8M之间innodb_log_buffer_size = 8388608#开启状态时,所有的deadlocks都会保存在error_log日志中innodb_print_all_deadlocks = on#0:如果innodb-flush-log-at-trx-commit的值为0,logbuffer每秒就会被刷日志文件到磁盘,提交事务的时候不做任何的操作(执行是由mysql的master thread线程来执行操作的)

主线程每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否提交,默认的日志文件时ib_logfile0,ib_logfile1

1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。

2:如果设置为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。

默认值是1是为了保证完整的ACID。当然,你也可以将这个配置项设置为1以外的值来换取更高的性能,但在系统崩溃的时候将会丢失1秒的数据

设为0的话,mysql进程崩溃的时候,就将会丢失1秒的事务,设为2时,只有在操作系统崩溃的时候或者断电的时候才会丢失1秒的数据。Innodb在做恢复的时候就会忽略这个值

总结:

设为1当然最为安全,但性能也是最差的,如果对数据一致性和完整性要求不高,完全可以设为2,如果只要求性能,例如高并发写的日志服务器,设为0来获得更高性能

innodb_flush_log_at_trx_commit = 2#带有autoextend属性的表空间文件每次加大64字节,这个属性不涉及具体的数据表文件,那些文件的增大速度相对是比较小的。innodb_autoextend_increment = 64#默认设置为0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量innodb_thread_concurrency = 0#是在访问到sublist of old blocks里面数据的时候控制数据不立即转移到sublist of new blocks区域,而是在1000微妙之后才会真正的进入到new区域,这也是为了防止new区域里的数据不会被立即踢出innodb_old_blocks_time = 1000#innodb_buffer_pool_instances 可以开启多个缓冲池,把最需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写innodb_buffer_pool_instances 参数显著地影响着测试结果,特别是非常高的I/O负载时。实验环境下,innodb_buffer_pool_instances =8在很小的buffer_poo大小时有很大的不同,而使用的buffer_pool时,innodb_buffer_pool_instances =1 的表现最棒innodb_buffer_pool_instances = 8#默认值是1024,控制LRU算法的一个参数,它会影响page cleaner线程每次刷脏页的数量,控制buffer pool后台进程page cleaner刷新脏页的位置。innodb_lru_scan_depth = 512#默认值为1,在SSD存储上应设置为0(禁用),因为使用顺序IO没有任何性能收益,在使用RAID的某些硬件上也应该禁用此类装置,因为逻辑上连续的块在物理磁盘上并不能保证也是连续的。innodb_flush_neighbors = 1#checksum算法由参数innodb_checksum_algorithm 来控制,默认为crc32算法,还有一种老的算法innodb,这种算法兼容了老版本的mysql,crc32算法无法兼容老版本,innodb_checksum_algorithm = crc32#配置的innodb如何保留当前的缓冲池的状态,以避免在服务器冲在重新启动后,还要经历一个漫长的暖机时间,在正常关闭实例时做一次缓存。innodb_buffer_pool_dump_at_shutdown = on#指定此参数启动,数据库重启后会自动暖机,再启动实例时读入转储文件中记录的pageinnodb_buffer_pool_load_at_startup = on#表示转存每个bp上最热的page的百分比。通过设置此参数可以减少转储的page数。innodb_buffer_pool_dump_pct = 40#innodb使用后台线程处理数据页面上的读写I/O(输入输出)请求,根据你的CPU核参数来更改,默认是4。注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改后重启mysql服务,允许值的范围从1-64innodb_read_io_threads = 8innodb_write_io_threads = 8#Innodb中的清除操作是一类定期回收无用数据的操作。在之前的版本中,清除操作时主线程的一部分,这意味着运行时它可能会堵塞其他的数据库操作。从mysql5.5.x版本开始,该操作运行独立的线程中,并支持更多的并发数。用户可通过设置innodb-purge-threads配置参数来选择清除操作是否使用单独线程,默认情况下参数设置0(不使用单线程),设置为1时表示使用单独的清除线程。建议为1innodb_purge_threads = 4innodb_page_cleaners = 4#nnodb使用一个缓冲池来保存索引和原始数据,不像MylSAM,这里你设置的值越大,你在存取表里面数据时所需要的磁盘I/O越少。在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%。不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸。注意在32位系统上你每个进程可能被限制在2-3.5G用户层面内限制,所以不要设置太高innodb_buffer_pool_size = 120000M#Innodb为独立表空间模式,每个数据库的每个表都会生成一个数据空间innodb_file_per_table=1#不区分大小写lower_case_table_names=1

【注意】:

这里面对性能影响比较主要的是:

#缓冲池,数据和索引缓冲的地方innodb_buffer_pool_size#为尚未执行的事物分配内存innodb_log_buffer_size#redo日志的大小innodb_log_file_size#客户端连接数据库,服务器会解析主机名,并且当DNS很慢时,建立连接也会很慢。因此建议skip-name-resolve选项而不进行DNS查找,唯一的局限是之后GRANT语句中只能使用ip地址了,因此再添加这项设置到一个已有系统中必须要格外的小心skip-name-resolve#用于限制缓存表的最大数目table_open_cache

3.安装mysql的主从配置
3.1主从服务器IP

  1. 主服务器(master):195.203.1.200

  2. 从服务器(slave):195.203.1.201

  3. 主从数据库版本一致,(该项目Mysql版本为5.7.18)
    3.2主服务器配置
    3.2.1修改MySQL的配置文件my.cnf

[root@jdap01 ~]# vi /etc/mysql/my.cnf

在【mysqld】下加入以下内容:

必须添加:

#server_id是服务器的idserver_id=200#开启二进制日志log_bin=mysql_bin可选择添加:#不需要备份的数据库binlog_ignore_db = mysql#需要备份的数据库binlog_do_db=test#存储二进制日志的缓存binlog_cache_size = 1M#主从复制的格式(mixed,statement,row,默认为statement)binlog_format = mixed#二进制日志自动删除/过期的天数,默认值为0,表示不自动删除expire_logs_days = 0

特别注意:不能把字母间的 aa_ff 写成 aa-ff
3.2.2重启service

找到mysql.server,重启

[root@jdap01 support-files]# ./mysql.server  restart

如果重启失败:说明设置的参数不对(检查大小写,空格和字母间的连接符)
3.2.3注册可以访问主库文件的用户

mysql> grant replication slave,replication client on *.* to mysql@'195.203.1.201' identified by 'mysql1234';

注意:

mysql为用户名;

mysql1234为密码;

195.203.1.201为从库的IP;
3.2.4展示主库日志信息

执行以下命令

mysql> show master status ;显示例子+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql_bin.000004 |      154 | test         | mysql            |                   |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

记录下:mysql_bin.000004和154(从库中配置需要用到)
3.3 从服务器配置
3.3.1修改MySQL的配置文件my.cnf

[root@jdap01 ~]# vi /etc/mysql/my.cnf

在【mysqld】下加入以下内容:

必须添加:

#server_id是服务器的idserver_id=201#开启二进制日志log_bin=mysql_bin可选择添加:#不需要备份的数据库replicate_ignore_db = mysql#需要备份的数据库replicate_do_db=test

注:还有很多配置,这里就不一一介绍了
3.3.2设置同步(之前没配置过,可跳过此步骤,直接执行3.3)

重置同步,清除此前可能存在的同步:

mysql> reset  slave;

停止同步,默认同步是开启的:

mysql> stop  slave;

3.3.3 配置同步

mysql> change master to master_host='195.203.1.200',master_user='mysql',master_password='mysql1234',master_log_file='mysql_bin.000004',master_log_pos=154;

注:

master_host表示主库的IPmaster_user表示主库master上同步的用户(2.3中的用户名)master_password表示同步的密码(2.3中的密码)master_log_file表示从哪个binlog文件开始同步master_log_pos表示从该binlog文件的哪个pos节点位置开始同步其中master_log_file和master_log_pos就是主库设置2.4中记录的binlog文件名和pos位置节点

3.3.4查看同步状态

mysql> show slave status\G;*************************** 1. row ***************************               Slave_IO_State:                  Master_Host: 195.203.1.200                  Master_User: mysql                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql_bin.00004          Read_Master_Log_Pos: 154               Relay_Log_File: V_wangshenweb01-relay-bin.000002                Relay_Log_Pos: 4        Relay_Master_Log_File: mysql_bin.00003             Slave_IO_Running:Yes            Slave_SQL_Running: Yes

如果Slave_IO_Running:Yes 和Slave_SQL_Running: Yes 都为Yes,说明配置成功

如果为以下状况

***************** 1. row *****************

           Slave_IO_State:              Master_Host: 195.203.1.200              Master_User: mysql              Master_Port: 3306            Connect_Retry: 60          Master_Log_File: mysql_bin.00004      Read_Master_Log_Pos: 154           Relay_Log_File: V_wangshenweb01-relay-bin.000002            Relay_Log_Pos: 4    Relay_Master_Log_File: mysql_bin.00003         Slave_IO_Running:No        Slave_SQL_Running: No

运行以下命令开始复制;

mysql> start slave;

执行没有错误,再执行

mysql> show slave status\G;

如果Slave_IO_Running:Slave_SQL_Running都为Yes,说明配置成功

如果出现以下状况:

mysql> show slave status\G;*************************** 1. row ***************************               Slave_IO_State:                  Master_Host:195.203.1.200                  Master_User: mysql                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: log_bin.000005          Read_Master_Log_Pos: 154               Relay_Log_File: V_wangshenweb01-relay-bin.000001                Relay_Log_Pos: 4        Relay_Master_Log_File: log_bin.000005             Slave_IO_Running: No            Slave_SQL_Running: Yes              Replicate_Do_DB: test          Replicate_Ignore_DB: mysql

并且下边报的错为:

 Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

这个错误是主从的一个日志问题,需要简单的配置一下,步骤如下:

1、停止从库同步

mysql> stop slave;

2、清空主库日志

mysql> flush logs;

3、查看主库状态并记录mysql_bin.000005和154

mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql_bin.000005 |      154 | test         | mysql            |                   |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

4、在从库中重新输入对应的日志文件位置和pos节点

mysql> change master to master_host='195.203.1.200',master_user='mysql',master_password='mysql1234',master_log_file='mysql_bin.000005',master_log_pos=154;

5、启动从库

mysql> start slave;

6、mysql> show slave status\G;

此时如果Slave_IO_Running:Slave_SQL_Running都为Yes,配置成功

注:

Slave_IO_Running:No 说明可能是从库与主库网络不通Slave_SQL_Running: No  说明可能是从库与主库数据不一致Slave_IO_Running:Connectiong 这种情况也可能出现

出现以上情况,大致归为以下几点原因:

1、可能是因为防火墙

2、Selinux中SELINUX设置成disabled

3、网络不通

4、Pos不对
4 在服务器上安装redis(2台服务器的安装一样)
4.1安装redis

1.创建redis文件在/usr/local/下

[root@V_wangshenweb01 ~]# mkdir /usr/local/redis

2.将安装包tar -zxvf redis-3.2.5.tar.gz拷贝到/usr/local/redis目录下

3.解压安装包

[root@V_wangshenweb01 redis]# tar -zxvf redis-3.2.5.tar.gz

4.编译redis-3.2.5文件

[root@V_wangshenweb01 redis]# cd redis-3.2.5[root@V_wangshenweb01 redis-3.2.5]# make

5.编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个新建的/usr/redis目录下。

[root@V_wangshenweb01 src]# mkdir /usr/redis[root@V_wangshenweb01 src]# cp redis-server  /usr/redis[root@V_wangshenweb01src ]# cp redis-benchmark /usr/redis[root@V_wangshenweb01 src]# cp redis-cli  /usr/redis
  1. 切换到redis-3.2.5目录下
[root@V_wangshenweb01 redis-3.2.5]# cp redis.conf  /usr/redis[root@V_wangshenweb01 redis-3.2.5]# cd /usr/redis
  1. 使用已经配置完成的redis-6379.conf文件和redis-common.conf文件替换已有文件。(用我们提供的redis-6379.conf文件和redis-common.conf)

  2. 启动Redis服务。

 [root@V_wangshenweb01 redis]# ./redis-server redis-6379.conf

9.然后用客户端测试一下是否启动成功。

[root@V_wangshenweb01 redis]# ./redis-cliredis> set foo barOKredis> get foo"bar"

安装redis成功!!

备注:

查看6379pid的命令: netstat -ntlp|grep 6379
4.2配置redis主从(方法一)
4.2.1主从服务器的ip

注:配置主从前确定2台机器都已安装好redis
4.2.2从服务器的配置

  1. 修改从服务器中的redis-6379.conf文件

[root@jdap01 redis]# vi redis-6379.conf

#添加#195.203.1.19为主服务器的ip#6379为主服务器的端口slaveof 195.203.1.19  6379#如果主服务中有密码,则再添加,没有不添加Masterauth = 主服务设置的密码

2.启动从服务器

[root@jdap01 redis]# ./redis-server redis-6379.conf[root@jdap01 redis]# ./redis-cli
  1. 进入redis中输入info

127.0.0.1:6379> info

# Replicationrole:slaveconnected_master:195.203.1.19

显示如上图,则从库配置成功!!!
4.2.3主服务器的配置

1.主库中进入redis输入info

127.0.0.1:6379> info

# Replicationrole:masterconnected_slaves:1

显示如上图,则主从配置成功!!!

  1. 在主库中存入数据,测试在从库中能否取到
127.0.0.1:6379>  set foo barOK
  1. 根据在主库中存的name在从库中提取
127.0.0.1:6379>  get foo "bar"

如果能提取出来,显示如上,则redis配置主从成功!!!
4.2配置redis主从(方法二)

  1. 可以不改动从库中的redis-6379.conf文件,而是直接进入redis,输入命令
127.0.0.1:6379> slaveof 195.203.1.19 6379

2.之后测试的步骤跟方法一 一样,如果在主库中存取的数据,在从库中能取出来,则redis配置主从成功!!!
5. 服务器之间端口开通情况

注意:同一网段的话是不需要开端口的。

原创粉丝点击