GMT-CMSP系统维护步骤整理
一、关闭前端各服务
1、北京代理,韩国代理节点nginx
/etc/init.d/nginx stop
2、关闭WEB1,WEB2 NGINX和PHP
pkill nginx && pkill php-fpm
确认
ps xua|egrep 'nginx|php-fpm' |grep -v grep
二、nginx升级
1、配置nginx官方源
[root@web1 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
2、web1升级nginx
原来的源码编译的nginx/0.8.38 太老,模块也没有,放弃
[root@web1 ~]# yum -y install nginx
3、配置文件复制进新的nginx配置文件目录
[root@web1 ~]# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_bak
[root@web1 ~]# cp /etc/nginx/conf.d/default.conf /etc/nginx/default.conf_bak
[root@web1 ~]# cp /usr/local/nginx/conf/vhosts/* /etc/nginx/conf.d/
[root@web1 ~]# cp /usr/local/nginx/conf/nginx.conf /etc/nginx/nginx.conf
全局修改部分
[root@web1 ~]# vim /etc/nginx/nginx.conf
#include vhosts/*;
include conf.d/*;
4、打开nginx status
[root@web1 ~]# vim /etc/nginx/conf.d/default.conf
location /NginxStatus {
stub_status on;
access_log off;
allow 1.1.1.1;
allow 2.2.2.2;
deny all;
}
[root@web1 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5、设置开机启动
rc.local删除
sed -i /nginx/d /etc/rc.local
[root@web1 ~]# chkconfig nginx on
6、需求变化
需求临时变化ticket站点不停
解决办法
include conf.d/*;
修改为include conf.d/*.conf;
要开发的ticket配置文件修改为.conf结尾
nginx.conf文件中只留需要的ticket站点配置,gm配置拿掉
kill掉老的nginx后立即开启新的nginx
三、mongodb同步
ssh 10.56.135.116
ssh 10.56.135.117
1、备份mongodb
mongodump -h 127.0.0.1:27017 -d ticketproxy -o /store/backup/mongo
注意mongodump后会引起php-fpm卡死,这也是做主从的原因。
物理备份
未做,因为ticket服务不能停
[root@db1 ~]# /etc/init.d/mongod stop
[root@db1 ~]#cp -a /var/lib/mongo/ /var/lib/mongo_bak/
2、主配置文件
[root@db1 ~]# cp /etc/mongod.conf ./
[root@db1 ~]# vim mongod.conf
master = true
[root@db1 ~]# /etc/init.d/mongod restart
3、从配置文件
[root@db2 ~]# /etc/init.d/mongod stop
[root@db2 ~]# rm -rf /var/lib/mongo/*
[root@db2 ~]# vim /etc/mongod.conf
slave = true
source = 10.56.135.117:27017
【使用插入的方式未成功】
db.sources.insert({ "host" : "127.0.0.1:27017"})
4、启动检查
[root@db2 ~]# /etc/init.d/mongod start
查看日志,看到是否同步
主从确认是否一样
> db.tickets.count()
91139
四、MYSQL准备工作
1、主mysql授权从服务器访问
GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO root@10.56.135.117 IDENTIFIED BY 'password';
2、关闭DB1 DB2
/etc/init.d/mysql stop
备份从服
mv /usr/local/server/data /usr/local/server/data_20130618_bak
3、从DB1拷贝全新数据到DB2
DB1的大小
[root@db1 ~]# du -sk /usr/local/server/data
7132856 /usr/local/server/data
[root@db1 ~]#scp -r /usr/local/server/data root@10.56.135.117:/usr/local/server/
防止 拷贝时候断开 这个放在后台执行
# jobs
[1]+ Running scp -r /usr/local/server/data root@10.56.135.117:/data/ &
DB2的大小
[root@db2 ~]# du -sk /usr/local/server/data
7132856 /usr/local/server/data
修改权限
chown -R mysql.mysql /usr/local/server/data
五、MYSQL同步
1、修改主服配置文件
注意:配置文件中不要出现与主机名相关的数据
mv /usr/local/server/my.cnf /etc/my.cnf
vim /etc/my.cnf
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
binlog-do-db=db4
2、启动主mysql
3、启动从mysql
4、同步Position
查看主服务器Position
mysql> show master status;
+------------------+----------+-----------------------------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-----------------------------------------------------+------------------+
| mysql-bin.000005 | 2908 | db1,db2,db3,db3 | |
+------------------+----------+-----------------------------------------------------+------------------+
多看几次状态,确定Position没有变化,放置有一些后台程序在修改数据。
第一次就是因为crontab里任务没关闭,导致Position变化
从服务器设置主服务器信息,同步账号和Position
mysql> CHANGE MASTER TO MASTER_HOST='10.56.135.116', MASTER_USER='root',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=2908;
5、启动slave功能
mysql> start slave;
mysql> show slave status\G;
查看是否正常
6、测试
在主服务器,选择一个库表,插入一条数据,看从服务器是否有,有则成功。
六、碰到的问题总结
1、需求临时变化,ticket站点不停
解决办法
include conf.d/*;
修改为include conf.d/*.conf;
要开放的ticket配置文件修改为.conf结尾
nginx.conf文件中只留需要的ticket站点配置,gm配置拿掉
2、mongdb同步
> use local
> db.sources.insert({ "host" : "10.56.135.116:27017"})
没有成功
原因未知:
后来在配置文件中配置成功
3、网站访问慢
打开网站页面很慢,chrome F12 NETWORK查看要10s
改变点
nginx 升级
mysql主从
mongodb主从
查询的站点涉及到数据库
首先排查nginx
nginx访问静态html页面很快
访问不查询mysql的数据库的php页面 phpinfo
访问速度也很快
问题是前端WEB1到后端DB1上面
mysql client 连接速度很慢
ssh 连接 建立起连接前也很慢
telnet 22/3306端口速度快
在维护前ssh也比较慢,应该不是网络问题
查看DB1 mysql错误日志
很多报错
could not be resolved: Temporary failure in name resolution
解决办法:节点添加下面两行
[mysqld]
skip-host-cache
skip-name-resolve
4、mysqld pid删除后脚本无法停止
获取mysqld的pid写入文件
echo $(ps xua|grep mysqld |grep -vE 'grep|mysqld_safe' |awk '{print $2}') >/usr/local/server/data/db2.pid
chown mysql.mysql /usr/local/server/data/db2.pid