@qjx378
2020-04-24T01:25:50.000000Z
字数 33482
阅读 1173
Linux
EPEL即Extra Packages for Enterprise Linux,是基于Fedora的一个项目,为红帽系的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。EPEL为CentOS提供了额外的10000多个软件包,而且都不会更新或者替换系统本身组件。执行下面这条安装命令后,会在/etc/yum.repos.d目录下生成一个epel.repo文件。
yum -y install epel-release
yum-axelget是EPEL提供的一个yum插件。默认的yum是单线程下载的,使用该插件后用yum安装软件时可以并行下载。yum-axelget插件原理是调用系统中的axel下载软件,然后根据软件包的大小自动设定线程数。在多线程操作时,还能避免因为线程数过多而导致服务器拒绝下载的问题,大大提高了软件的下载速度,减少了下载的等待时间。注意:通过下面这条安装命令,会同时安装axel下载软件。
yum -y install yum-axelget
yum -y install wget gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel vim ntsysv openssl-devel
在安装完EPEL源和yum-axelget插件后,我们就可以利用它们升级当前的CentOS7到CentOS7.6了(耗时大概10分钟)。
yum clean all && yum makecache && yum -y update
hostnamectl set-hostname test-tomcat1
echo -e "\nalias vi=vim\nalias grep='grep --color'\n" >>~/.bashrc && source ~/.bashrc
下面这条vim配置命令是我经常使用的,包括行号、自动缩进、高亮、文件编码和粘贴时不变形的快捷键F9等等,直接使用root用户执行即可。
echo -e "\n\nset nobombset numberset showmodeset autoindentset smartindentset showmatchset tabstop=4set softtabstop=4set shiftwidth=4set encoding=utf-8set fileencodings=cp936,gb18030,gbk,gb2312,utf-8,ucs-bom,latin-1set hlsearchset noignorecaseset fileformats=unixset pastetoggle=<F9>\n" >> /etc/vimrc
wget https://www.openssl.org/source/openssl-1.1.1f.tar.gztar zxvf openssl-1.1.1f.tar.gz && cd openssl-1.1.1f./config shared zlib --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/sslmake && make installmv /usr/bin/openssl /usr/bin/openssl.OFFmv /usr/include/openssl /usr/include/openssl.OFFln -s /usr/local/openssl/bin/openssl /usr/bin/opensslln -s /usr/local/openssl/include/openssl /usr/include/opensslecho "/usr/local/openssl/lib">>/etc/ld.so.confldconfigopenssl version -a
这里我们直接使用Linux命令生成公私钥,方法更为简单快捷。将生成的私钥zeroteam20160815保存到本地供xShell等工具使用即可(记得删除服务器上的私钥哦)。
#######创建公钥存放目录:~/.ssh[root@localhost ~]# mkdir .ssh && cd .ssh#######生成1024字节的rsa加密的公私钥[root@localhost .ssh]# ssh-keygen -b 1024 -t rsa -f zeroteam20160815Generating public/private rsa key pair.Enter passphrase (empty for no passphrase):Enter same passphrase again:Passphrases do not match. Try again.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in zeroteam20160815. [私钥]Your public key has been saved in zeroteam20160815.pub. [公钥]The key fingerprint is:59:54:31:5f:37:d5:9a:c3:32:65:7d:fd:05:f3:20:38 root@localhostThe keys randomart image is:+--[ RSA 1024]----+| .o=.++B|| .E +o=O|| .. +.o=|| o o = .|| S o . || || || || |+-----------------+[root@localhost .ssh]# lszeroteam20160815 zeroteam20160815.pub#######将公钥文件重命名为authorized_keys文件[root@localhost .ssh]# mv ~/zeroteam20160815.pub authorized_keys#######将私钥文件下载到Windows主机后,马上删除避免被恶意使用[root@localhost .ssh]# rm -rf zeroteam20160815
新建一个shell文件sshdconfig.sh,并执行chmod +x sshdconfig.sh赋予执行权限,然后复制以下内容到文件中,最后执行命令./sshdconfig.sh即可使sshd服务生效。
#!/bin/bash# sshd service configure script# @author vfhky 2015.05.05 https://typecodes.com/linux/centos7afteroperate.html# set the sshd login port you want which should be more than 1024sed -i -e "s@^#Port 22@Port 8866@g" -e "s@^#Protocol 2@Protocol 2@g" /etc/ssh/sshd_config# set the secret key bitssed -i -e "s@^#ServerKeyBits 1024@ServerKeyBits 1024@g" -e "s@^#RSAAuthentication yes@RSAAuthentication yes@g" /etc/ssh/sshd_config# limit the login-way of user within Authentication-keysed -i -e "s@^#PubkeyAuthentication yes@PubkeyAuthentication yes@g" -e "s@^#PermitEmptyPasswords no@PermitEmptyPasswords no@g" /etc/ssh/sshd_configsed -i -e "s@^GSSAPIAuthentication yes@#GSSAPIAuthentication yes@g" -e "s@^GSSAPICleanupCredentials yes@#GSSAPICleanupCredentials yes@g" /etc/ssh/sshd_config# forbid login with passwordsed -i -e "s@^PasswordAuthentication yes@PasswordAuthentication no@g" -e "s@^PermitRootLogin yes@PermitRootLogin without-password@g" /etc/ssh/sshd_config# start the sshd servicesystemctl restart sshd.serviceservice sshd start
cat /etc/redhat-release
根据Linux发行版本(CentOS、Fedora都属于红帽系),从mysql官方(http://dev.mysql.com/downloads/repo/yum/)获取Yum Repository。
wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
安装完MySQL的Yum Repository,每次执行yum update都会检查MySQL是否更新。
yum -y install mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld.service
然后使用命令systemctl status mysqld.service查看MySQL数据库启动后的服务状态
使用YUM安装并启动MySQL服务后,MySQL进程会自动在进程日志中打印root用户的初始密码:
grep "password" /var/log/mysqld.log
使用小节6中获取的root用户的初始密码,然后进行修改
mysql -uroot -p
出现Enter password: 输入默认的root密码后回车
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
至此,使用在CentOS7中使用YUM方法安装MySQL5.7.x数据库完毕。可以使用新的root密码登陆MySQL了
切换到mysql数据库
use mysql;
修改host为%
update user set host='%' where user='root' and host='localhost';
刷新权限
flush privileges;
MySQL的配置文件依然是/etc/my.cnf,其它安装信息可以通过mysql_config命令查看。其中,动态库文件存放在/usr/lib64/mysql目录下。
因为小节3中安装了MySQL的Yum Repository,所以以后每次执行yum操作时,都会去检查更新。如果想要去掉这种自动检查操作的话,可以使用如下命令卸载MySQL的Repository即可
yum -y remove mysql80-community-release-el7-3.noarch.rpm
主要记录在Linux系统中如何使用shell脚本备份服务器上的mysql数据库。
下面是MySql数据库的shell备份脚本,其中参数DBLIST表示要备份的mysql数据库名称(多个空格隔开)、NUMDAYS表示保留多少天以内的备份文件、MyUSER和MyPASS表示mysql数据库的用户名和密码。最终,每次执行这个脚本生成的备份文件名类似于系统日期时间_数据库.sql.gz,例如2016072614_taxtao.sql.gz。
使用时通过chmod +x mysql_backup.sh命令添加执行权限,然后可以利用Linux系统的crontab定时任务工具执行该脚本。例如下面这个配置就是每天凌晨1点的时候执行该shell脚本,生成mysql数据库的备份文件。
crontab -e0 1 * * * /mydata/shell/mysql_backup.sh
#!/bin/bash# MySQL Backup Script v1.0.0# Space separated list of databasesDBLIST="your mysql database name witch you want to backup"# Backup to this directoryBACKUPDIR=/mydata/backups/mysql# Number of days to keepNUMDAYS=60# Some linux command and your mysql configureFINDCMD="find"MYSQLCMD="mysql"MyUSER="your mysql user name" # USERNAMEMyPASS="your mysql password" # PASSWORDMyHOST="localhost" # HostnameDUMPCMD="mysqldump -u$MyUSER -h $MyHOST -p$MyPASS --lock-tables --databases "GZIPCMD="gzip"# Backup date format,e.g 20150505201019_databaseBACKUPDATE=`date +%Y%m%d%H%M%S_`function USAGE() {cat << EOFusage: $0 optionsThis script backs up a list of MySQL databases.OPTIONS:-h Show this message-a Backup all databases-l Databases to backup (space seperated)-n Number of days to keep backupsEOF}while getopts "hal:n:" opt; docase $opt ina)DBLIST="";;h)USAGEexit 1;;l)DBLIST="$OPTARG";;n)NUMDAYS=$OPTARG;;\?)USAGEexit;;:)echo "Option -$OPTARG requires an argument." >&2exit 1;;esacdonefunction ERROR() {echo && echo "[error] $@"exit 1}function NOTICE() {echo && echo "[notice] $@"}function RUNCMD() {echo $@eval $@}# Sanity checksif [ ! -n "$DBLIST" ]; thenDBLIST=`$MYSQLCMD -N -s -e "show databases" | grep -viE '(information_schema|performance_schema|mysql|test)'`if [ ! -n "$DBLIST" ]; thenERROR "Invalid database list"fifiif [ ! -n "$BACKUPDIR" ]; thenERROR "Invalid backup directory"fiif [[ ! $NUMDAYS =~ ^[0-9]+$ ]]; thenERROR "Invalid number of days: $NUMDAYS"elif [ "$NUMDAYS" -eq "0" ]; thenERROR "Number of days must be greater than zero"fi# Lock down permissionsumask 077# Create directory if neededRUNCMD mkdir -p -v $BACKUPDIRif [ ! -d $BACKUPDIR ]; thenERROR "Invalid directory: $BACKUPDIR"fiNOTICE "Dumping MySQL databases..."RC=0for database in $DBLIST; doNOTICE "Dumping $database..."RUNCMD "$DUMPCMD $database | $GZIPCMD > $BACKUPDIR/$BACKUPDATE$database.sql.gz"RC=$?if [ $RC -gt 0 ]; thencontinue;fidoneif [ $RC -gt 0 ]; thenERROR "MySQLDump failed!"elseNOTICE "Removing dumps older than $NUMDAYS days..."RUNCMD "$FINDCMD $BACKUPDIR -name \"*.sql.gz\" -type f -mtime +$NUMDAYS -print0 | xargs -0 rm -fv"NOTICE "Listing backup directory contents..."RUNCMD ls -la $BACKUPDIRNOTICE "MySQLDump is complete!"fi# exit 0
系统环境:CentOS-7.3.1611
安装方式:rpm安装
软件:jdk-8u131-linux-x64.rpm
下载地址:http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
上传新的jdk-8u131-linux-x64.rpm软件到/usr/local/执行以下操作:
rpm -ivh jdk-8u131-linux-x64.rpmyum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
JDK默认安装在/usr/java中。
安装openjdk
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
执行以下操作,查看信息是否正常
java -version
正常输出以下信息:
java version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
vi /etc/profile
在这个文件末尾加上
export JAVA_HOME=/usr/java/jdk1.8.0_131export JRE_HOME=/usr/java/jdk1.8.0_131/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin
生效命令:
source /etc/profile
cd /usr/local/srcwget http://apache.fayea.com/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45-windows-x64.zip
或者
cd /usr/local/srcwget http://apache.fayea.com/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45.tar.gz
yum install unzip -yunzip -d /usr/local apache-tomcat-8.0.45-windows-x64.zip
或者
tar -zxvf apache-tomcat-8.0.45.tar.gz
安装
mv apache-tomcat-8.0.45/ /usr/local/tomcat1
利用下面命令使文件有执行权限并使配置生效
cd /usr/local/tomcat1/binchmod 777 *.sh
将tomcat加入开机自启动
echo "source /etc/profile" >>/etc/rc.d/rc.localecho "/usr/local/tomcat1/bin/startup.sh start" >>/etc/rc.d/rc.local
这里有点要说明,rc.local先于/etc/profile执行,所以会得不到JAVA环境变量,所以在startup.sh前加入代码:source /etc/profile 这样就可以
修改rc.local文件为可执行,如下:
cd /etc/rc.dchmod +x rc.local
systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口8080
vi /etc/sysconfig/iptables
增加规则
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPTservice iptables save #保存防火墙配置
保存退出后
systemctl enable iptables.service #设置防火墙开机启动systemctl start iptables.service #启动防火墙systemctl restart iptables.service #重启防火墙使配置生效systemctl stop iptables.service #关闭防火墙
最后重启系统使设置生效即可。
cd /usr/local/tomcat1/bin./startup.sh
大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。 请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上。
# OS specific support. $var _must_ be set to either true or false.JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=128M -XX:MaxPermSize=256m"cygwin=false
open files的默认值查看当前系统open files的默认值
ulimit -a
没改过是1024
文件系统最大可打开文件数:
cat /proc/sys/fs/file-max
我的机器是396399
修改文件系统最大打开文件数:
echo 396399 >/proc/sys/fs/file-max
此值只能往小的设置不能超过限制值。
在vi /etc/security/limits.conf文件中设置最大打开文件数 添加:
* soft nofile 65535* hard nofile 65535
最后用重启ulimit -a再次查看,open files的值,如果改过来,则生效。
发现 Tomcat 可以用 Apache Portable Runtime 来提供更强性能,提升Web静态页面的处理能力,不再需要专门的Web Server来处理静态页面了。apr 与 tomcat-native 提供更好的伸缩性、性能和集成到本地服务器技术。
如果没有apr技术,启动tomcat 时出现如下提示:
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
按照官方说明需要:
APR libraryOpenSSL libraries
openssl 可以用
yum install -y openssl-devel
apr还是下载*.gz来安装。
wget http://mirrors.shu.edu.cn/apache/apr/apr-1.6.5.tar.gztar zxvf apr-1.6.5.tar.gzcd apr-1.6.5./configure --prefix=/usr/local/aprmakemake install
安装apr的时候出现
./configure --prefix=/usr/local/aprrm: cannot remove `libtoolT': No such file or directory
解决办法:
vi configure
在30126行#$RM "$cfgfile"前面加#注释掉
在重新./configure
wget http://mirrors.shu.edu.cn/apache//apr/apr-iconv-1.2.2.tar.gztar -zxvf apr-iconv-1.2.2.tar.gzcd apr-iconv-1.2.2./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/aprmake && make install
wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.gztar zxvf apr-util-1.6.1.tar.gzcd apr-util-1.6.1./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconvmake && make install
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.19/source/tomcat-native-1.2.19-src.tar.gztar zxvf tomcat-native-1.2.19-src.tar.gzcd tomcat-native-1.2.19-src/native./configure --with-apr=/usr/local/aprmake && make install
cd /usr/local/tomcat1/binvi catalina.sh
在文件的#!/bin/sh下添加如下内容:
#!/bin/shLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/libexport LD_LIBRARY_PATH
这样的话,我们只是把这个TOMCAT的APR添加上了,不破坏其它TOMCAT的配置信息。
启动 tomcat 后, 看日志:
bin/startup.shhead logs/catalina.out
可以看到以下结果:

在高并发下会让性能有明显提升。安装完成后重启即可生效。如使用默认protocal就是apr,但最好把将protocol修改成org.apache.coyote.http11.Http11AprProtocol,会更加明确。
cd /usr/local/tomcat1/confvi server.xml
替换Connector内容如下:
<Connector port="8080"protocol="org.apache.coyote.http11.Http11AprProtocol"executor="tomcatThreadPool"compression="on"compressionMinSize="2048"maxThreads="30000"minSpareThreads="512"maxSpareThreads="2048"enableLookups="false"redirectPort="8443"acceptCount="35000"debug="0"connectionTimeout="40000"disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
强烈推荐使用APR协议!!!不要使用NIO协议+APR库支持的行为!!!!!!!!
如果安装不上APR或者真的没有办法启用APR,那么用如下的备用方案:
<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"executor="tomcatThreadPool"compression="on"compressionMinSize="2048"maxThreads="30000"minSpareThreads="512"maxSpareThreads="2048"enableLookups="false"redirectPort="8443"acceptCount="35000"debug="0"connectionTimeout="40000"disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
另:如果使用的是tomcat 8.5+,创建的权限默认为UMASK=“0027”,会造成其他用户无法读取的权限,需要修改为UMASK=“0022”;需要修改的文件为catalina.sh;修改后重启生效。
cd /usr/local/src/
下载 pcre-8.43.tar.gz到/usr/local/src
wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
下载zlib-1.2.11.tar.gz到/usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
下载 openssl-1.1.1d.tar.gz到/usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
下载jemalloc-5.2.1.tar.bz2到/usr/local/src
wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2
下载 tengine-2.3.2.tar.gz到/usr/local/src
wget https://tengine.taobao.org/download/tengine-2.3.2.tar.gz
cd /usr/local/src/tar -zxvf pcre-8.43.tar.gz && cd pcre-8.43./configure --prefix=/usr/local/pcremake && make install
cd /usr/local/src/tar -zxvf openssl-1.1.1d.tar.gz && cd openssl-1.1.1d./config --prefix=/usr/local/opensslmake && make install
cd /usr/local/src/tar -zxvf zlib-1.2.11.tar.gz && cd zlib-1.2.11./configure --prefix=/usr/local/zlibmake && make install
cd /usr/local/src/tar -xvf jemalloc-5.2.1.tar.bz2 && cd jemalloc-5.2.1./configure --prefix=/usr/local/jemallocmake && make installecho '/usr/local/lib' > /etc/ld.so.conf.d/local.confldconfig -v
groupadd wwwuseradd -g www wwwmkdir -p /mydata/wwwchmod +w /mydata/wwwchown -R www:www /mydata/www
cd /usr/local/src/tar zvxf tengine-2.3.2.tar.gz && cd tengine-2.3.2./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-zlib=../zlib-1.2.11 --with-pcre=../pcre-8.43 --with-jemalloc=../jemalloc-5.2.1 --with-openssl=../openssl-1.1.1d --with-openssl-opt=enable-tls1_3 --add-module=../nginx-ct --add-module=./modules/ngx_http_proxy_connect_module --add-module=./modules/ngx_http_concat_module --add-module=./modules/ngx_http_upstream_check_module --add-module=./modules/ngx_http_upstream_consistent_hash_module --add-module=./modules/ngx_http_upstream_session_sticky_modulemake && make install
vi /usr/local/nginx/conf/nginx.conf
修改前面几行为:
user www www;worker_processes 8;error_log logs/error.log;pid logs/nginx.pid;events{use epoll;worker_connections 65535;}
cd /usr/local/nginx./sbin/nginx -t
如果显示下面信息,即表示配置没问题
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
运行nginx服务
./sbin/nginxps au|grep nginx
如果显以类似下面的信息,即表示nginx已经启动
root 2013 0.0 0.0 103156 856 pts/0 S+ 03:22 0:00 grep nginx
输入代码检测是否支持加速
lsof -n | grep jemalloc
vi /etc/sysconfig/iptables
打开文件,增加80端口那一行
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
:wq #保存退出
重启防火墙使配置生效
systemctl restart iptables.service
vi /usr/lib/systemd/system/tengine.service
增加以下内容
[Unit]Description=The nginx HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target
服务相关命令
systemctl stop tengine ##停止Tenginesystemctl start tengine ##启动Tenginesystemctl reload tengine ##重新加载Tenginesystemctl enable tengine ##设置Tengine开机启动shutdown -r now ##立即重新启动服务器
因为MyCat是用Java开发的,因此MyCat运行需要安装JDK(准确来说是JRE就够了),并且需要JDK1.7或以上版本。
访问https://github.com/MyCATApache/Mycat-download下载最新的RELEASE版本(目前是1.5),下载地址:
https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5.1-RELEASE-20160518143538-linux.tar.gz
上传安装包Mycat-server-1.5.1-RELEASE-20160518143538-linux.tar.gz到 MyCat服务器中,并解压并移动到/usr/local/mycat目录
在配置MyCat前,请确认MySQL的主从复制安装配置已完成并正常运行。MySQL主从数据的同步在MySQL中配置,MyCat不负责数据同步的问题。
在schema.xml是MyCat最重要的配置文件之一,用于设置MyCat的逻辑库、表、数据节点、在dataHost等内容。
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://org.opencloudb/" ><!-- 税道 --><schema name="taxtao" checkSQLschema="true" dataNode="dn1"></schema><!-- 掌中财税 --><schema name="palmtax" checkSQLschema="true" dataNode="dn2"></schema><!-- 公共 --><schema name="public_platform" checkSQLschema="true" dataNode="dn3"></schema><dataNode name="dn1" dataHost="localhost0" database="taxtao" /><dataNode name="dn2" dataHost="localhost0" database="palmtax" /><dataNode name="dn3" dataHost="localhost0" database="public_platform" /><dataHost name="localhost0" maxCon="1000" minCon="100" balance="3" writeType="0" dbType="mysql" dbDriver="native" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="143M1" url="192.168.1.143:3306" user="root" password="1qazXSW2!@123"><!-- can have multi read hosts --><readHost host="144S1" url="192.168.1.144:3306" user="root" password="1qazXSW2!@123" weight="1"/></writeHost></dataHost></mycat:schema>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:server SYSTEM "server.dtd"><mycat:server xmlns:mycat="http://org.opencloudb/"><system><property name="defaultSqlParser">druidparser</property><!-- <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议--><!-- <property name="processorBufferChunk">40960</property> --><!--<property name="processors">1</property><property name="processorExecutor">32</property>--><!--默认是65535 64K 用于sql解析时最大文本长度 --><!--<property name="maxStringLiteralLength">65535</property>--><!--<property name="sequnceHandlerType">0</property>--><!--<property name="backSocketNoDelay">1</property>--><!--<property name="frontSocketNoDelay">1</property>--><!--<property name="processorExecutor">16</property>--><!--<property name="mutiNodeLimitType">1</property> 0:开启小数量级(默认) ;1:开启亿级数据排序<property name="mutiNodePatchSize">100</property> 亿级数量排序批量<property name="processors">32</property> <property name="processorExecutor">32</property><property name="serverPort">8066</property> <property name="managerPort">9066</property><property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property><property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --></system><!--管理员账户,拥有所库的读写--><user name="root"><property name="password">1qazXSW2!@123</property><property name="schemas">palmtax,public_platform,taxtao</property></user><!--税道账户,只拥有税道库的读写--><user name="taxtao_user"><property name="password">taxtaoUser!@123</property><property name="schemas">taxtao</property></user><!--掌中财税账户,只拥有掌中财税库的读写--><user name="palmtax_user"><property name="password">palmtaxUser!@123</property><property name="schemas">palmtax</property></user><!--公共功能账户,只拥有公共库的读写--><user name="public_pt_user"><property name="password">publicPtUser!@123</property><property name="schemas">public_platform</property></user></mycat:server>
进入到mycat/bin目录
cd /usr/local/mycat/bin/
(1) 控制台启动,这种启动方式在控制台关闭后,MyCat服务也将关闭,适合调试使用:
./mycat console
(1) 可以采用以下后台启动的方式:
./mycat start ##启动./mycat restart ##重启./mycat stop ##关闭
MyCat的默认数据端口为8066,mycat通过这个端口接收数据库客户端的访问请求。
管理端口为9066,用来接收mycat监控命令、查询mycat运行状况、重新加载配置文件等
连接mycat和连接mysql方式一样的,可以通过mysql客户端连接,或使用第三方MySQL管理客户端连接MyCat测试(navicat支持,MySQL-Front兼容性不太好),这里就不做多余介绍。
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidport=3306## 设置server_id,一般设置为IPserver-id =143character-set-server = utf8general_log = 1skip-name-resolveback_log = 300max_connections = 1000max_connect_errors = 6000open_files_limit = 65535table_open_cache = 128max_allowed_packet = 4Mbinlog_cache_size = 1Mmax_heap_table_size = 8Mtmp_table_size = 16Mread_buffer_size = 2Mread_rnd_buffer_size = 8Msort_buffer_size = 8Mjoin_buffer_size = 28Mkey_buffer_size = 4Mthread_cache_size = 8query_cache_type = 1query_cache_size = 8Mquery_cache_limit = 2Mft_min_word_len = 4log_bin = mysql-binbinlog_format = mixedexpire_logs_days = 30performance_schema = 0explicit_defaults_for_timestamp#lower_case_table_names = 1myisam_sort_buffer_size = 8Mmyisam_repair_threads = 1interactive_timeout = 28800wait_timeout = 28800# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Recommended in standard MySQL setupsql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES## 复制过滤:需要备份的数据库,输出binlog## 官方文档推荐的是,在master端不指定binlog-do-db,在slave端用replication-do-db来过滤#binlog-do-db=public_platform,palmtax,taxtao## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)binlog-ignore-db=mysql## 开启二进制日志功能,可以随便取,最好有含义log-bin=yhsoft-test-mysql-bin## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size=100M## 主从复制的格式(mixed,statement,row,默认格式是statement)binlog_format=mixed## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。expire_logs_days=7## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave_skip_errors=1062[mysqldump]quickmax_allowed_packet = 16M[myisamchk]key_buffer_size = 8Msort_buffer_size = 8Mread_buffer = 4Mwrite_buffer = 4M
systemctl restart mysqld.service
然后使用命令systemctl status mysql.service查看MySQL数据库启动后的服务状态
mysql -uroot -p
创建数据同步用户,并授予相应的权限
grant replication slave, replication client on *.* to 'repl'@'192.168.1.144' identified by '1qazXSW2!@';
刷新授权表信息
flush privileges;
查看position号,记下position号(从机上需要用到这个position号和现在的日志文件)
show master status;
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidport=3306## 设置server_id,一般设置为IPserver-id = 144character-set-server = utf8general_log = 1skip-name-resolveback_log = 300max_connections = 1000max_connect_errors = 6000open_files_limit = 65535table_open_cache = 128max_allowed_packet = 4Mbinlog_cache_size = 1Mmax_heap_table_size = 8Mtmp_table_size = 16Mread_buffer_size = 2Mread_rnd_buffer_size = 8Msort_buffer_size = 8Mjoin_buffer_size = 28Mkey_buffer_size = 4Mthread_cache_size = 8query_cache_type = 1query_cache_size = 8Mquery_cache_limit = 2Mft_min_word_len = 4log_bin = mysql-binbinlog_format = mixedexpire_logs_days = 30performance_schema = 0explicit_defaults_for_timestamp#lower_case_table_names = 1myisam_sort_buffer_size = 8Mmyisam_repair_threads = 1interactive_timeout = 28800wait_timeout = 28800# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Recommended in standard MySQL setupsql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES## 复制过滤:需要备份的数据库,输出binlog#binlog-do-db=roncoo##复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)binlog-ignore-db=mysql## 开启二进制日志,以备Slave作为其它Slave的Master时使用log-bin=test-mysql-slave1-bin## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size = 100M## 主从复制的格式(mixed,statement,row,默认格式是statement)binlog_format=mixed## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。expire_logs_days=7## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave_skip_errors=1062## 需要同步的数据库#replication-do-db=public_platform,palmtax,taxtao## relay_log配置中继日志relay_log=test-mysql-relay-bin## log_slave_updates表示slave将复制事件写进自己的二进制日志log_slave_updates=1## 防止改变数据(除了特殊的线程)read_only=1[mysqldump]quickmax_allowed_packet = 16M[myisamchk]key_buffer_size = 8Msort_buffer_size = 8Mread_buffer = 4Mwrite_buffer = 4M
systemctl restart mysqld.service
然后使用命令systemctl status mysql.service查看MySQL数据库启动后的服务状态
mysql -uroot -p
change master to master_host='192.168.1.143', master_user='repl', master_password='1qazXSW2!@', master_port=3306, master_log_file='143-mysql-bin.000001', master_log_pos=1389, master_connect_retry=30;
上面执行的命令的解释:
master_host='192.168.1.143' ## Master的IP地址master_user='rep1' ##用于同步数据的用户(在Master中授权的用户)master_password='1qazXSW2!@' ## 同步数据用户的密码master_port=3306 ## Master数据库服务的端口master_log_file='143-mysql-bin.000001' ##指定Slave从哪个日志文件开始读复制数据(可在Master上使用show master status查看到日志文件名)master_log_pos=429 ## 从哪个POSITION号开始读master_connect_retry=30 ##当重新建立主从连接时,如果连接建立失败,间隔多久后重试。单位为秒,默认设置为60秒,同步延迟调优参数。
show slave status\G;
可看到Slave_IO_State为空, Slave_IO_Running和Slave_SQL_Running是No,表明Slave还没有开始复制过程。
start slave;
再查看主从同步状态
show slave status\G;
主要看以下两个参数,这两个参数如果是Yes就表示主从同步正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
由主从同步状态信息可以看出,我们配置的主从同步是正常的。
可查看master和slave上线程的状态。在master上,可以看到slave的I/O线程创建的连接
推荐使用中文集成版,其中包含Node.js需要的模块包node_modules。
若使用中文标准版,需使用npm install --production进行安装,记得配置一下国内镜像,不然会比较慢。
config.sample.js文件并命名为config.jsconfig.js中的配置 url:博客域名地址 database:默认生产配置production的数据库为sqlite3,建议修改为mysql server:ghost服务器地址和端口 阿里云、七牛等来进行存储nvm use选择支持的Node.js版本:0.10.x、0.12.x、4.2.xnpm install --production安装依赖包,中文集成版跳过此步。npm start启动Ghost,进行本地开发与测试http://yourhost/ghost上一章节上通过npm start并非后台运行,在线上部署的时候可通过forever使ghost以后台任务方式运行
npm install forever -gNODE_ENV=production forever start index.jsforever stop index.js 进程检查:执行forever list
create user 'zeroteam'@'%' identified by 'p@ssW0rd123';grant all privileges on zeroteam_blog_db.* to 'zeroteam'@'%';grant all privileges on zeroteam_blog_db_dev.* to 'zeroteam'@'%';
yum -y install nfs-utils rpcbind
mkdir -p /data/upload
vi /etc/exports#增加一行:/data/upload 192.168.1.180(rw,no_root_squash,no_all_squash,sync)
exportfs -r
注:配置文件说明:
/data/upload 为共享的目录,使用绝对路径。
192.168.1.180(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.izerofx.com,地址与权限中间没有空格,权限说明:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
systemctl start rpcbind #启动systemctl restart rpcbind #重启systemctl enable rpcbind #启用开机启动
yum -y install nfs-utils rpcbind
mkdir -p /data/upload
showmount -e 192.168.1.180Export list for 192.168.1.181:/data/upload 192.168.1.180
如果显示:rpc mount export: RPC: Unable to receive; errno = No route to host,则需要在服务端关闭防火墙(稍候会详细说)。
mount -t nfs 192.168.1.180:/data/upload /data/upload
umount /data/upload
vi /etc/servicemountd 1011/tcp #rpc.mountdmountd 1011/udp #rpc.mountdrquotad 1012/tcp #rpc.rquotadrquotad 1012/udp #rpc.rquotad
systemctl restart nfs
#portmap/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 111 -j ACCEPT/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 111 -j ACCEPT#nfsd/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 2049 -j ACCEPT/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 2049 -j ACCEPT#mountd/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1011 -j ACCEPT/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1011 -j ACCEPT#rquotad/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1012 -j ACCEPT/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1012 -j ACCEPT#rpc.statd/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 32768 -j ACCEPT/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 32768 -j ACCEPT
客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可:
mount -t nfs 192.168.1.180:/data/upload /data/upload -o proto=tcp -o nolock
根据Linux发行版本(CentOS、Fedora都属于红帽系),从PostgreSQL官方(https://yum.postgresql.org/repopackages.php)获取Yum Repository。
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装完PostgreSQL的Yum Repository,每次执行yum update都会检查PostgreSQL是否更新。
yum -y install pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql10-server postgresql10
/usr/pgsql-10/bin/postgresql-10-setup initdbsystemctl enable postgresql-10systemctl start postgresql-10
登录数据库
sqlplus / as sysdba
关闭数据库
shutdown immediate;
lsnrctl stop
cd /home/app/oracle/product/12.2.0/dbhome_1/deinstall./deinstall
rm -rf /etc/oraInst.locrm -rf /etc/oratabrm -rf /opt/ORCLfmap
rm -rf /usr/local/bin/coraenvrm -rf /usr/local/bin/dbhomerm -rf /usr/local/bin/oraenv
rm -rf /tmp/OraInstall*rm -rf /tmp/deinstall*rm -rf /tmp/hsperfdata_oracle
rm -rf /home/app/oracle/*
userdel oraclegroupdel dbagroupdel oinstall
systemctl stop docker
通过命令df -h先去看下磁盘大概的情况,找一个大的空间。然后创建docker的新目录,我这边直接放在新挂载的数据盘/data,所以我这边的新目录地址是/data/docker/lib/
mkdir -p /data/docker/lib
rsync -avzP /var/lib/docker /data/docker/lib/
先确认是否安装了rsync
参数解释:
vi /lib/systemd/system/docker.service
在找到ExecStart加入:

systemctl daemon-reloadsystemctl restart dockersystemctl enable docker
启动之后确认docker没有问题,删除旧的/var/lib/docker/目录
cat /dev/null > catalina.out
错误信息如下
Error Code : 1418This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)(0 ms taken)
分析:
根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的,一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。
处理过程:
登陆mysql数据库
set global log_bin_trust_function_creators = 1;commit;start slave;
跟踪mysql的启动日志,slave正常运行,问题解决。
mycat启动后,不能进行任何数据库的操作,报Unknown charsetIndex:224错误
从错误看是因为字符集问题引起的 ,因为我MYSQL服务器默认使用的是utf8mb4,所以修改mycat字符集的配置文件
vi index_to_charset.properties
在配置文件最后加入224=utf8mb4,重启服务即正常
修改server.xml,设置默认编码
<property name="charset">utf8mb4</property>
直接恢复到指定的时间点
mysqlbinlog --no-defaults --stop-datetime="2016-07-25 00:00:00" /var/lib/mysql/mysql-master-01-bin.000005 | mysql -uroot -p
把日志输入到txt文件
mysqlbinlog /var/lib/mysql/mysql-master-01-bin.000002 > /mydata/mysqllog.txt
把日志输入导出sql
mysqlbinlog -d taxtao test-150-bin.000002 >recover_taxtao.sqlmysqlbinlog -d taxtao --stop-datetime='2016-07-26 11:00:00' test-150-bin.000003 >>recover_taxtao.sql
由于恢复的文件recover_ivr.sql中包含了整个ivr数据库的所有表,我们只要恢复指定的表,还要对恢复出来的sql进行过滤。
more recover_taxtao.sql |grep --ignore-case -E 'insert|update|delete' -A2 -B2|grep core_base_account > core_base_account.sql
将过滤后的结果保存为sql脚本,恢复到数据库即可。
cat zbus.sh | col -b > zbus2.sh
修改: vi /etc/selinux/config
SELINUX=disabled
执行setenforce 0生效
显示当前路由
route print -4
删除默认路由表
// -p 参数表示永久保存(重启不会失效)route delete 0.0.0.0 -p
添加内网路由
// route add 网段 mask 子网掩码 网关(一般为dhcp服务器地址) metric 优先级(值越,优先级越高), 下面的网段和网关地址需要换成你自己的route -p add 10.122.10.0 mask 255.255.255.0 10.122.10.1 metric 20
添加外网路由
route -p add 0.0.0.0 mask 0.0.0.0 192.168.2.1 metric 20
注意事项: 外网的优先级不能比内网高,否则所有的流量都走了外网,从而无法访问内网