tomcat+mysql服务器部署及主备数据同步总结

xiaoxiao2021-02-28  175

tomcat+mysql服务器部署及主备数据同步总结

  SilenceWho  2014-08-01 15:37:34 环境:  主服务器Main_Server(Linux系统)  备服务器Backup_Server(Linux系统)  网管PC (可通过ssh, telenet登录服务器) 部署步骤: (注意:1~4步骤在2台服务器上均操作一遍) 工作中用到的,自己实际操作过,总结出来交流顺便给自己存档吧~ ----------------------------------------------------------------------------------- 1. 安装Linux操作系统(光盘安装) 注意事项: a) /opt单独建一个分区,数据库以及数据分区outbox放在这个专门的分区上。注意:/opt分区容量再扩大些。 b) 另行用命令行,把光盘Packages目录下的rpm包全打上2遍。执行命令rpm –ivh -–nodeps –-force /media/Packages/*.rpm c) /var和/tmp分区是数据频繁变化的,/var有系统日志等,/tmp有临时文件和碎片。/home要尽可能大,/usr目录下安装大部分软件。 2. 安装JDK和tomcat a) 解压tomcat和JDK安装包 tar -zxvf apache-tomcat-7.0.53.tar.gz tar -zxvf jdk-8u5-linux-x64.gz b) 配置环境变量: vi .bash_profile //编辑.bash_profile; 在文件末尾添加: export JAVA_HOME=/home/software/jdk1.8.0_05 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export TOMCAT_HOME=/home/software/apache-tomcat-7.0.53 export CATALINA_HOME=/home/software/apache-tomcat-7.0.53 保存并退出.bash_profile :wq 生效.bash_profile source .bash_profile c) 检测是否安装成功 查看java版本:java –version d) 启动tomcat服务器 Cd到tomcat文件夹下的bin启动和关闭tomcat: ./shutdown.sh ./startup.sh 3. 安装Mysql 1) 在mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz安装包所在目录,解压软件包: tar -zvxf mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz 2) 将解压的mysql文件夹,移到/usr/local/目录下: mv mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64/usr/local/mysql 3) 将mysql配置文件拷贝到/etc/目录下,并改名my.cnf: cp /usr/local/mysql/support-files/my-default.cnf/etc/my.cnf 4) 添加mysql用户及用户组,用来运行mysql数据库 groupadd mysql useradd -g mysql mysql 5) 修改mysql目录权限 //设定root能访问/usr/local/mysql chown –r root/usr/local/mysql //设定mysql组能访问/usr/local/mysql chgrp -r mysql /usr/local/mysql // 设定mysql用户能够访问/var/lib/mysql chown -R mysql /usr/local/mysql/data 6) 生成mysql系统数据库,安装在/usr/local/mysql目录下: cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql& 7) 以mysql用户启动mysql服务 /usr/local/mysql/bin/mysqld_safe -user=mysql& 8) 修改mysql的root密码,密码假定为:123456 /usr/local/mysql/bin/mysqladmin -u root password 123456 9) 进入MYSQL安装路径下的bin目录,以root用户登录mysql: cd/usr/local/mysql/bin ./mysql -u root -p 10) 开启 mysql 本地和远程访问 grant all on *.* to root@192.168.10.133(本机IP地址); grant all privileges on *.* to root@"%" identified by "123456"; flush privileges; 11) 设置MySQL服务及命令 cp /usr/local/mysql/bin/* /usr/bin 12) 设置mysql启动命令,打开/usr/local/mysql/support-files/mysql.server文件,将以下内容:$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" 改为: $bindir/mysqld_safe --datadir="$datadir" --user=root --pid-file="$mysqld_pid_file_path"   拷贝到/etc/init.d目录,并赋可执行权限 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql 13) 以root用户调用以下命令启动mysql服务 service mysql start 14) 设置mysql自启动 在文件/etc/rc.d/rc.local中添加 service mysql start chkconfig --add mysql chkconfig --level 345 mysql on 15) 重启电脑查看MySQL是否自动启动并初始化: 登录MySQL cd /usr/local/mysql/bin ./mysql -uroot -p 4. 将项目部署到服务器上 将war包上传到tomcat的webapps目录下 重新启动Tomcat服务器 以下解决主备数据库数据库,数据分区自动及手动同步 5. 手动同步主备服务器数据分区 假设main_server中,tomcat存放用户数据的文件目录为/home/outbox, 整个程序通过这个outbox文件夹及mysql数据库进行数据的存储和处理。main_server可以通过NFS方式共享outbox文件夹给backup_server.同时backup_server将main_server共享的outbox文件夹mount至/home/outbox 命令为mount –t nfs 192.168.235.129:/home/outbox /home。 NFS共享文件夹方法:  执行如下命令编辑文件/etc/exports: # vi /etc/exports 在该文件里添加如下内容: /home/outbox 192.168.*.*(rw,sync,no_root_squash) 然后保存退出。(ip地址填写main_server的ip) 括号内的参数意义描述如下:rw:读/写权限,只读权限的参数为ro;sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。  接着执行如下命令,启动端口映射: # /etc/rc.d/init.d/portmap start  最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求: # /etc/rc.d/init.d/nfs start 用户也可以重新启动Linux 服务器,自动启动NFS 服务。  关闭防火墙 6. 改进方案:自动应急,有故障后按顺序使用下一个数据库连接 在2台服务器/etc/hosts中登记(ip地址自行更改) 192.168.*.* dbsvr 192.168.*.* dbsvr2 Tomcat META_INF中配置文件context.xml中填写2个数据库连接〈context〉</context>节点写两个,在程序中初始化的时候通过代码判断,两个节点的name不能相同,优先使用第1个,有故障后再按顺序使用下一个数据库连接。 具体实现: /webapps/projectname/META-INF/Context.xml     <Resource       name="jdbc/mysql" type="javax.sql.DataSource"       driverClassName="com.mysql.jdbc.Driver"       maxActive="100" maxIdle="30" maxWait="5000"       username="root" password="123456"       url="jdbc:mysql://dbsvr:3306/filesystem?useUnicode=true&characterEncoding=UTF-8"/>     <Resource       name="jdbc/mysql2" type="javax.sql.DataSource"       driverClassName="com.mysql.jdbc.Driver"       maxActive="100" maxIdle="30" maxWait="5000"       username="root" password="123456" url="jdbc:mysql://dbsvr2:3306/filesystem?useUnicode=true&characterEncoding=UTF-8"/> webapps/filesys/WEB-INF/web.xml <resource-ref>                 <res-ref-name>jdbc/mysql</res-ref-name>                 <res-type>javax.sql.DataSource</res-type>                 <res-auth>Container</res-auth>         </resource-ref>         <resource-ref>                 <res-ref-name>jdbc/mysql2</res-ref-name>                 <res-type>javax.sql.DataSource</res-type>                 <res-auth>Container</res-auth>         </resource-ref> projectname\src\...\dao\BaseDAO.java public Connection getConnection() {                 Context jndiCntx=null; DataSource dataSource=null; try {                         jndiCntx = new InitialContext();                         dataSource = (DataSource) jndiCntx                                         .lookup("java:comp/env/jdbc/mysql");                         conn = dataSource.getConnection(); return conn;                 } catch (Exception e) {                         e.printStackTrace();                 } try {                         jndiCntx = new InitialContext();                         dataSource = (DataSource) jndiCntx                                         .lookup("java:comp/env/jdbc/mysql2");                         conn = dataSource.getConnection(); return conn;                 } catch (Exception e) {                         e.printStackTrace();                 }                 return null;         } 编程规范 任何一次数据库操作失败后,再偿试一次。前一次失败可触发closeconnection(),使得conn=NULL。再偿试一次就可以切换至备用数据库。 7. Backup_server手动同步main_server数据库信息 步骤:手工操作。 在备机上mysqldump –h192.168.*.* –uroot –p123456 databasename > all.sql 同时,在备机上mysql –uroot –p123456 databasename <all.sql 8. 改进方案:主备数据库自动同步模式   配置主机 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to root@'192.168.*.%' IDENTIFIED BY '123456';  [mysqld] log_bin=mysql-bin server-id=1 mysql> show master status; 确认状态 #service mysql restart 配置备机 [mysqld] log_bin = mysql-bin server-id=2 relay_log = mysql-relay-bin log_slave_updates = 1 replicate-ignore-db=mysql,information_schema,performance_schema,test replicate-do-db=filesystem #service mysql restart mysql> CHANGE MASTER TO MASTER_HOST='192.168.*.*',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0; mysql> start slave; mysql> show slave status\G; 文件同步: NFS进行文件同步: 主机:/opt/outbox 192.168.*.*(rw,sync,no_root_squash) 备机:/opt/outbox2 192.168.*.*(rw,sync,no_root_squash) 查看共享命令:exportfs –av 主备文件分区复制通过rsync实现: 1. 安装rsync 2. rsyncd.conf是rsync主要配置文件,创建并编辑它。 每天0点1分进行文件转储,到移动硬盘。 通过shell脚本定期检查db slave和服务器健康信息。
转载请注明原文地址: https://www.6miu.com/read-23130.html

最新回复(0)