目录
一、系统安装
1.1 操作系统安装
1.2 网络及IP配置
1.3 优化加固及防火墙配置
二、软件安装
2.1 各软件版本及安装路径
2.2 Nodejs安装及配置
2.3 Java环境安装及配置
2.3 Tomcat安装及配置
2.4 Redis安装及配置
2.5 Mongodb安装及配置
2.6 Mysql安装及配置
三、代码部署及调试
3.1初次部署
3.1.1 创建数据库相关
3.1.2 放入项目文件
3.1.3 初始化项目
3.1.4 开启项目
3.2 二次部署
3.2.1 运行数据库文件(如果有新的sql语句的话)
3.2.2 停止项目
3.2.3 放入新项目文件
3.2.4 安装项目所需插件cd /e
3.2.5 重启项目

一、系统安装

1.1 操作系统安装

CentOS release 6.9 (Final) 最小化安装

分区要求:采用逻辑卷分区

分区 大小 文件格式
/boot 1000m ext4
/ 剩余大小 ext4
swap 4G swap

系统安装完成后关闭selinux并重启

vim /etc/sysconfig/selinux

SELINUX=disabled  #设置为disabled

shutdown -r now立即重启使其生效

 

1.2 网络及IP配置

根据具体分配IP信息进行配置。(略)

1.3 优化加固及防火墙配置

首先进行update和基础工具安装

yum update

yum -y install redhat-lsb  telnet zlib-devel pam-devel  gcc vim

yum -y install bind-utils sysstat traceroute

 

升级OPENSSH OPENSSL为最新版本,具体过程略

 

加固配置

(略)

系统优化配置如下:

编辑:/etc/security/limits.conf

# End of file

*               soft    core            0

*               hard    core            0

*               soft    nproc          65535

*               hard    nproc          65535

*               soft    nofile          65535

*               hard    nofile          65535

编辑:/etc/security/limits.d/90-nproc.conf

*          soft    nproc     65535

root       soft    nproc     unlimited

编辑:vim /etc/sysctl.conf

########内核优化############

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

net.core.somaxconn = 65535

#vm.max_map_count=262144        #根据实际情况分配

 

防火墙配置:

编辑防火墙配置文件:vim /etc/sysconfig/iptables

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

##############allow ssh access default port 22##########################

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

#############开启对外提供服务端口如80###############################

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

 

 

#############zabbix 10050 10051########################################

-A INPUT -m state -s x.x.x.x --state NEW -m tcp -p tcp -m multiport --dports 10050:10051 -j ACCEPT

-A INPUT-m state -s x.x.x.x.x --state NEW -m tcp -p tcp -m multiport --dports 10050:10051 -j ACCEPT

####################################################################

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A INPUT -p tcp -j DROP

COMMIT

 

 

二、软件安装

2.1 各软件版本及安装路径

 

编号 软件 版本信息 安装路径 代码目录
1 nodejs v8.9.4 /usr/local/nodejs /web/web /web/manager
2 java 1.8.0_151-b12 /usr/local/java  
3 tomcat 8.0.50 /usr/local/tomcat /web/server
4 redis 4.0.7 /usr/local/redis  
5 mongo v3.6.2 /usr/local/mongodb  
6 mysql 5.7.21 /usr/local/mysql  

 

2.2 Nodejs安装及配置

首先将下载好的文件放在/usr/local/src下

cd /usr/local/src

xz -d node-v8.9.4-linux-x64.tar.xz

tar -xvf node-v8.9.4-linux-x64.tar

cd node-v8.9.4-linux-x64

./node -v

mv /usr/local/src/node-v8.9.4-linux-x64 /usr/local/nodejs

配置变量环境:

vim /etc/profile

export NODE_HOME=/usr/local/nodejs

export PATH=$NODE_HOME/bin:$PATH

添加完后:source /etc/profile使其生效

 

安装好后安装pm2进行Node管理

npm install -g pm2

 

2.3 Java环境安装及配置

首先将下载好的文件放在/usr/local/src下

tar xzvf jdk-8u151-linux-x64.tar.gz

mv jdk1.8.0_151 /usr/local/java

配置环境变量

##########set java environment##################

JAVA_HOME=/usr/local/java

JRE_HOME=/usr/local/java/jre

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$JAVA_HOME/bin:$PATH

export PATH JAVA_HOME CLASSPATH

添加完后:source /etc/profile使其生效

2.3 Tomcat安装及配置

首先将下载好的文件放在/usr/local/src下

tar xzvf apache-tomcat-7.0.84.tar.gz

mv apache-tomcat-7.0.84 /usr/local/tomcat

进行tomcat安全加固及配置(灰色部分暂时不用修改)

1、删除文档和示例程序

【操作目的】删除示例文档

【加固方法】删除webapps/docs、examples、manager、ROOT、host-manager

2、禁止列目录

【操作目的】防止直接访问目录时由于找不到默认页面而列出目录下的文件

【加固方法】打开web.xml,将<param-name>listings</param-name> 改成<param-value>false</param-value>

3、禁止使用root用户运行

【操作目的】以普通用户运行,增加安全性

【加固方法】以tomcat用户运行tomcat程序

注意:配合建立相应的tomcat运行账户。

注意:酌情处理

4、开启日志审核

【操作目的】检查tomcat的访问日志

【加固方法】独立运行的tomcat,修改conf/server.xml,取消注释

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

启用access_log后,重启tomcat,在tomcat_home/logs中可以看到访问日志。

5、修改默认访问端口

【操作目的】修改默认的8080端口

【加固方法】conf/server.xml把8080改成任意端口

注意:根据实际需要修改端口。前端用NGINX时可不修改。

 

6、tomcat默认帐号安全

【操作目的】禁用tomcat默认帐号

【加固方法】conf/tomcat-user.xml中的所有用户的注释掉

<!--

<role rolename="tomcat"/>

<role rolename="role1"/>

<user username="tomcat" password="tomcat" roles="tomcat"/>

<user username="both" password="tomcat" roles="tomcat,role1"/>

<user username="role1" password="tomcat" roles="role1"/>

-->

7、重定向错误页面

【操作目的】修改访问tomcat错误页面的返回信息

【加固方法】conf/web.xml在倒数第1行之前加

<error-page>

<error-code>401</error-code>

<location>/401.htm</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/404.htm</location>

</error-page>

<error-page>

<error-code>500</error-code>

<location>/500.htm</location>

</error-page>

然后在webapps\manger目录中创建相应的401.html\404.htm\500.htm文件

8、修改版本号信息:

【操作目的】修改访问tomcat显示相关版本号信息内容

【加固方法】/usr/local/tomcat/lib/catalina.jar包下/org/apache/catalina/util/serverinfo.properties下的相关如下内容:

server.info=ant/888

server.number=888

server.built=Jan 19 2018 15:01:35 UTC

9、关闭自动部署

【操作目的】禁止tomcat自动加载WAR包

【加固方法】编辑server.xml

unpackWARs="true" autoDeploy="false"

10、启用cookie的HttpOnly属性

【操作目的】使用HttpOnly提升Cookie安全性

【加固方法】编辑/usr/local/tomcat/conf/context.xml

<Context useHttpOnly="true">

 

<!-- Default set of monitored resources -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>

11、关闭AJP端口

【操作目的】关闭AJP缺省服务端口,因使用的是NGINX反向代理方式。

【加固方法】编辑server.xml

<!--    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

-->

 

 

server.xml

<?xml version='1.0' encoding='utf-8'?>

 

<Server port="8006" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

 

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

 

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

 

 

<GlobalNamingResources>

 

<Resource name="UserDatabase" auth="Container"

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>

 

 

<Service name="Catalina">

 

 

<Connector port="8081" protocol="HTTP/1.1"

maxThreads="1500"

minProcessors="100"

maxProcessors="1500"

minSpareThreads="100"

maxSpareThreads="1500"

enableLookups="false"

URIEncoding="utf-8"

acceptCount="1500"

server="Ant"

connectionTimeout="20000"

redirectPort="8443" />

 

<Engine name="Catalina" defaultHost="localhost">

 

 

<Realm className="org.apache.catalina.realm.LockOutRealm">

 

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"

resourceName="UserDatabase"/>

</Realm>

 

<Host name="localhost"  appBase="webapps"

unpackWARs="true" autoDeploy="false">

<Context path="" docBase="/web/server"  reloadable="false"/>

 

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 

</Host>

</Engine>

</Service>

</Server>

 

2.4 Redis安装及配置

首先将下载好的文件放在/usr/local/src下

cd /usr/local/src

yum install tcl   #解决安装过程中的报错

tar xzvf redis-4.0.7.tar.gz

cd redis-4.0.7

mkdir -p /usr/local/redis/bin

mkdir -p /usr/local/redis/etc

cp -aRp  redis.conf  /usr/local/redis/etc

cd src

cp -aRp mkreleasdhdr.sh redis-benchmark redis-check-aof  redis-cli redis-server /usr/local/redis/bin

 

编辑配置文件

vim /usr/local/redis/etc/redis.conf

daemonize yes  #(找到这一项,修改为yes)

bind 10.21.88.54 127.0.0.1 #设置本机服务IP,应是内网IP。外网不安全

启动

redis-server /usr/local/redis/etc/redis.conf

缺省服务端口:6379

配置环境变量:

##########set redis path########################

export PATH=$PATH:/usr/local/redis/bin

################################################

 

2.5 Mongodb安装及配置

首先将下载好的文件放在/usr/local/src下

tar xf mongodb-linux-x86_64-rhel62-3.6.2.tgz

cp -aRp mongodb-linux-x86_64-rhel62-3.6.2 /usr/local/mongodb

cd /usr/local/mongodb/

mkdir /usr/local/mongodb/data/mongodata -p

mkdir /usr/local/mongodb/data/log/mongolog -p

mongod --dbpath=/usr/local/mongodb/data/mongodata --logpath=/usr/local/mongodb/data/log/mongolog/mongodb.log --logappend --fork

配置环境变量

##########set mongodb path##################

export PATH=$PATH:/usr/local/mongodb/bin

################################################

添加完后:source /etc/profile使其生效

注意:设置MONGO加密码过程略

2.6 MysqlGTID安装及配置

首先将下载好的文件放在/usr/local/src下

 

cd /usr/local/src

yum install numactl -y  #解决安装过程中的报错

tar xzvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql

mkdir /usr/local/mysql/data

groupadd mysql

useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql

chown -R mysql.mysql /usr/local/mysql

cd /usr/local/mysql

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

记住生成的密码

bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

chown -R mysql.mysql /usr/local/mysql

cd /usr/local/mysql/support-files

cp mysql.server /etc/init.d/mysqld

vim /etc/init.d/mysqld         #注意此步骤编辑如下路径

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

配置环境变量

################set MYSQL path#############################

export MYSQL_HOME="/usr/local/mysql"

export PATH="$PATH:$MYSQL_HOME/bin"

#############################################

添加完后:source /etc/profile使其生效

配置MY.CNF文件 vim /etc/my.cnf

主:

[mysqld]

##########目录位置###################################################

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql.sock

pid_file=/usr/local/mysql/mysql.pid

log-error=/usr/local/mysql/data/mysqllog.err

user=mysql

###########SLOW LOG###################################################

slow_query_log=1

slow_query_log_file=/usr/local/mysql/data/mysql.slow

long_query_time=5

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

###########设置字符集#################################################

collation-server = utf8mb4_unicode_ci

init-connect='SET NAMES utf8mb4'

character-set-server = utf8mb4

######################GTID设置#########################################

server_id=175

auto_increment_offset = 1

auto_increment_increment = 2                                            #奇数ID

gtid-mode=on

sync-master-info=1

enforce-gtid-consistency=true

master-info-repository=table

relay-log-info-repository=table

log_slave_updates=true

log_bin=mysql-bin

binlog_format=row

binlog_row_image = full

expire_logs_days=90

replicate-ignore-db = mysql

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

#

binlog-checksum=CRC32

slave_allow_batching = 1

master-verify-checksum=1

slave-sql-verify-checksum=1

relay_log_purge = 1

##relay_log_recovery = 1  从库开启即可

slave_skip_errors=1062,1032,1205

#######################################################################

################优化配置###############################################

innodb_buffer_pool_size=1000M   #根据实际情况修改

innodb_read_io_threads=8

innodb_log_buffer_size=8M

 

innodb_file_per_table=ON

innodb_file_per_table=1

max_allowed_packet=3000M

 

#innodb_additional_mem_pool_size=16M

######################################################################

max_connections = 768

#read_buffer_size = 1M

#thread_cache_size = 64

#thread_concurrency = 4

#######################################################################

query_cache_type=1

query_cache_size=128M

query_cache_limit=2M

########################################################################

skip-name-resolve

 

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

[client]

port=3306

socket=/usr/local/mysql/mysql.sock

default-character-set=utf8mb4

[mysql]

no-auto-rehash

default-character-set=utf8mb4

#########################################################################

[mysqld]

##########目录位置###################################################

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql.sock

pid_file=/usr/local/mysql/mysql.pid

log-error=/usr/local/mysql/data/mysqllog.err

user=mysql

###########SLOW LOG###################################################

slow_query_log=1

slow_query_log_file=/usr/local/mysql/data/mysql.slow

long_query_time=5

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

###########设置字符集#################################################

collation-server = utf8mb4_unicode_ci

init-connect='SET NAMES utf8mb4'

character-set-server = utf8mb4

#######################################################################

server_id=173

auto_increment_offset = 2

auto_increment_increment = 2                                            #偶数ID

 

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=table

relay-log-info-repository=table

sync-master-info=1

log_slave_updates

log_bin=mysql-bin

binlog_format=row

binlog_row_image = full

expire_logs_days=90

replicate-ignore-db = mysql

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

log-slave-updates=true

 

binlog-checksum=CRC32

slave_allow_batching = 1

master-verify-checksum=1

slave-sql-verify-checksum=1

relay_log_purge = 1

relay_log_recovery = 1

slave_skip_errors=1062,1032,1205

 

################优化配置###############################################

innodb_buffer_pool_size=1000M  #根据实际情况修改

 

innodb_read_io_threads=8

innodb_log_buffer_size=8M

 

innodb_file_per_table=ON

innodb_file_per_table=1

max_allowed_packet=3000M

 

#innodb_additional_mem_pool_size=16M

######################################################################

max_connections = 768

#read_buffer_size = 1M

#thread_cache_size = 64

#thread_concurrency = 4

#######################################################################

query_cache_type=1

query_cache_size=128M

query_cache_limit=2M

########################################################################

skip-name-resolve

 

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

[client]

port=3306

socket=/usr/local/mysql/mysql.sock

default-character-set=utf8mb4

[mysql]

no-auto-rehash

default-character-set=utf8mb4

#########################################################################

 

 

设置好后重启MYSQL并设置开机启动相关项

service mysqld restart

#chkconfig --add mysqld     #为了防止自动启动导致数据不一致,不加入启动项

#chkconfig --level 345 mysqld on #为了防止自动启动导致数据不一致,不加入启动项

 

设置root登录密码

mysql -u root -p  #输入刚刚记录的初始密码

set password=password('xxxxxx');

 

进行主主配置

原理图:

列表:

编号 服务器名称 IP 备注
1 ATLAS 10.21.88.51  
2 主A 10.21.88.52  
3 主B 10.21.88.53  

 

首先设置授权同步用的账户:

主A执行:

stop slave;

grant replication slave on *.* to 'repl'@'10.21.88.53' identified by 'dfab3667ee';

show master status;

 

主B执行:

stop slave;

grant replication slave on *.* to 'repl'@'10.21.88.52' identified by 'xxxxxx';

Show master status;

注意:如上每台的File和Position的值 首次使用传统复制模式同步

设置主A作为主B的SLAVE进行同步

主A执行:

 

change master to master_auto_position=0;

change master to

master_host='10.21.88.53',master_port=3306,master_user='repl',master_password='xxxxxx',master_log_file='mysql-bin.000001',master_log_pos=1722;

start slave;

show slave status\G;

 

设置主B作为主A的SLAVE进行同步

主B执行:

change master to master_auto_position=0;

change master to

master_host='10.21.88.52',master_port=3306,master_user='repl',master_password='xxxxxx ',master_log_file='mysql-bin.000004',master_log_pos=1327;

start slave;

show slave status\G;

 

建立后观察状态:主A和主B都执行

mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.9.175

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 1327

Relay_Log_File: db2-relay-bin.000002

Relay_Log_Pos: 320

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB: information_schema,performance_schema

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 1327

Relay_Log_Space: 525

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 175

Master_UUID: 5a264b30-36e6-11e8-93e8-000c299f9498

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set: 5a264b30-36e6-11e8-93e8-000c299f9498:1-3,

5cdc7ad8-36e6-11e8-924c-000c29be68d5:1-7

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

设置成GTID同步:

stop slave;

 

change master to MASTER_AUTO_POSITION=1;

 

start slave;

show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.9.175

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 1368

Relay_Log_File: db2-relay-bin.000004

Relay_Log_Pos: 470

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB: mysql,information_schema,performance_schema

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 1368

Relay_Log_Space: 2001

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 175

Master_UUID: 5a264b30-36e6-11e8-93e8-000c299f9498

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 5a264b30-36e6-11e8-93e8-000c299f9498:4-7:10

Executed_Gtid_Set: 5a264b30-36e6-11e8-93e8-000c299f9498:1-10,

5cdc7ad8-36e6-11e8-924c-000c29be68d5:1-9

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

 

 

异常报错:

1776 错误

change master to master_host='192.168.9.175',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=1327;

ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.

解决方法:

当使用 MASTER_AUTO_POSITION 参数的时候,MASTER_LOG_FILE,MASTER_LOG_POS参数不能使用。

change master to   master_host='192.168.9.173',master_port=3306,master_user='repl',master_password='123456',master_auto_position=0;

 

不要提前设置MYSQL账户:

提前设置MYSQL账户可能导致切换至GTID模式后同步报错。要在成功建立完GTID后再手动分别在两天机建立其它MYSQL账户

 

备份:

Mkdir -p /home/shell_script  #脚本存放目录

Vim /home/shell_script/db_bak_yb.sh

 

添加如下脚本

#!/bin/bash

##########Backup mysql database#####################

#########By qcx 2018-4-9##########################

#1.定义变量

bak_path=/home/backup/dbbak # 数据库数据文件备份目录

date_now=`date +%Y%m%d` # 当前日期

date_dep=`date -d "-4 week" +%Y%m%d` # 28天前日期

###################SCP相关信息################

SERVER=10.21.88.54    #备份用机器的IP

Port=22

User=root

PASSWORD=xxx

REMOTE_PATH=/backup/dbbak

#2.删除旧备份文件

cd $bak_path

 

echo "================Backup database================" |tee -a $date_now-log

if [ -d $date_dep ]; then

echo "`date '+%F %H:%M:%S'` Remove deprecated folder $date_dep." |tee -a $date_now-log

rm -rf $date_dep # 删除28天前备份数据

fi

 

if [ ! -d $date_now ]; then

mkdir $date_now # 创建当前日期备份数据文件夹

fi

cd $date_now

#3.开始备份数据库

########FileOS ixmu_app ixmu_juhe jgxt####################################

echo "`date '+%F %H:%M:%S'` Begin to backup FileOS" |tee -a ../$date_now-log

/usr/local/mysql/bin/mysqldump -uroot -pxxxxxx -x --opt --set-gtid-purged=OFF --default-character-set=utf8 xg_yb|gzip > xg_yb.sql.gz  # 使用mysqldump备份fileos数据库实例并压缩成gzip格式

if [ $? == 0 ]; then

echo "`date '+%F %H:%M:%S'` Finish to backup FileOS" |tee -a ../$date_now-log

else

echo "备份失败,请检查原因" |tee -a ../$date_now-log

fi

 

echo "################Finished backup databases#####################" |tee -a ../$date_now-log

echo "Starting upload backup files........................"|tee -a ../$date_now-log

#4.通过EXPECT实现密码输入和SCP文件。因为易班暂未提供备份机器,先备份到本机以后提供再开启###########

#cd $bak_path

#expect -c "

#   spawn scp -P $Port -r $date_now  root@$SERVER:$REMOTE_PATH

#   expect {

#     \"*assword\" {set timeout 300; send \"$PASSWORD\r\";}

#     \"yes/no\" {send \"yes\r\"; exp_continue;}

#   }

#   expect eof" |tee -a $date_now-log

#sleep 2s

#echo `date '+%F %H:%M:%S'` "trans dbbak finished" |tee -a $date_now-log

##############备份文件的解压方式gunzip filename.gz#############

##############或gzip -d filename.gz############################

报错解决

提示加入--set-gtid-purged=OFF

解决方法:在mysqldump时加--set-gtid-purged=OFF参数

 

添入计划任务: crontab -e

##############早2点01备份数据库#############

01 2 * * *  /home/shell_script/ db_bak_yb.sh

##############################################

中间件配置部分(略)

三、代码部署及调试

3.1初次部署

3.1.1  创建数据库相关

  1. a)      登陆mysql(mysql -u root -pxchs123456)
  2. b)      创建数据库xchs_core(CREATE DATABASE xchs_core)
  3. c)      退出mysql数据库(quit)
  4. d)      导入’init.sql’文件(mysql -u root -p xchs123456 xchs_core < /root/init.sql)

3.1.2   放入项目文件

  1. a)      后端项目文件(mv /root/saas-core.war  /usr/local/tomcat/webapps)
  2. b)      前端项目文件(mv /root/saas_web  /usr/local/nodejs/workspace/saas_web)
  3. c)      平台管理文件(mv /root/official  /usr/local/nodejs/workspace/official)

3.1.3   初始化项目

  1. a)      安装cnpm(npm install cnpm -g)
  2. b)      安装pm2(cnpm install pm2 -g)
  3. c)      安装项目所需插件
  4. cd /usr/local/nodejs/workspace/saas_web
  5. cnpm i

iii.          cd /usr/local/nodejs/workspace/official

  1. cnpm i

3.1.4   开启项目

  1. a)      启动后端项目
  2. /usr/local/tomcat/bin/startup.sh
  3. b)      启动前端项目
  4. cd /usr/local/nodejs/workspace/saas_web
  5. pm2 start app.json
  6. c)      启动平台项目
  7. cd /usr/local/nodejs/workspace/official
  8. 未定

 

3.2 二次部署

3.2.1 运行数据库文件(如果有新的sql语句的话)

  1. a)      导入’init.sql’文件(mysql -u root -p xchs123456 xchs_core < /root/init.sql)

3.2.2 停止项目

  1. a)      后端项目
  2. /usr/local/tomcat/bin/shutdown.sh
  3. b)      前端
  4. pm2 stop saas_web
  5. c)      平台
  6. pm2 stop offical

3.2.3 放入新项目文件

  1. a)      后端项目文件(\cp -rf /root/saas-core.war  /usr/local/tomcat/webapps)
  2. b)      前端项目文件(\cp -rf /root/saas_web/*  /usr/local/nodejs/workspace/saas_web)
  3. c)      平台管理文件(\cp -rf /root/official/*  /usr/local/nodejs/workspace)

3.2.4 安装项目所需插件cd /e

  1. a)      cd /usr/local/nodejs/workspace/saas_web
  2. b)      cnpm i
  3. c)      cd /usr/local/nodejs/workspace/ official
  4. d)      cnpm i

3.2.5 重启项目

  1. a)      后端项目
  2. /usr/local/tomcat/bin/startup.sh
  3. b)      前端
  4. pm2 start saas_web
  5. c)      平台
  6. pm2 start offical

 

最后修改日期:2018年11月8日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。