对 mysql主从复制、读写分离+tomcat项目进行简单的介绍
发布时间:2023-06-21 10:54:37 所属栏目:MySql教程 来源:
导读:编程之家的负载均衡(Server Load Balancing)是对多台云服务器(计算集群)进行流量分发的网络服务设备。它可以通过流量分发,快速提高应用系统对外的服务能力;隐藏实际服务端口,增强内部系统的安全性;通过消除服
|
编程之家的负载均衡(Server Load Balancing)是对多台云服务器(计算集群)进行流量分发的网络服务设备。它可以通过流量分发,快速提高应用系统对外的服务能力;隐藏实际服务端口,增强内部系统的安全性;通过消除服务单点故障,提升应用系统的可靠性。今天编程之家就给大家介绍下mysql主从复制、读写分离+tomcat项目等 简单介绍下mysql主从复制、读写分离+tomcat项目等 Nginx负载均衡+MysqL主从复制、读写分离+tomcat项目 架构:(因为资源有限,只有两台虚机) 1 192.168.137.3 Nginx、MysqL(主)、Tomcat1、Tomcat2 2 192.168.137.5 MysqL(从) 系统版本:centos 7 192.168.137.3 1、先安装 Nginx ,方便以后用 2、安装MysqL file /usr/share/MysqL/charsets/swe7.xml from install of MysqL-server-5.6.13-1.linux_glibc2.5.x86_64 conflicts with file from package mariadb-libs-1:5.5.52-1.el7.x86_64 yum remove mariadb-libs [root@localhost local]# rpm -ivh MysqL-server-5.6.13-1.linux_glibc2.5.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:MysqL-server-5.6.13-1.linux_glibc################################# [100%] Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/bin/MysqL_install_db line 42. BEGIN Failed--compilation aborted at /usr/bin/MysqL_install_db line 42. [root@localhost local]# yum install 'perl(Data::Dumper)' [root@localhost local]# rpm -e MysqL-server [root@localhost local]# rpm -ivh MysqL-server-5.6.13-1.linux_glibc2.5.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:MysqL-server-5.6.13-1.linux_glibc################################# [100%] 一定要记得初始化!!!!!真是醉了 [root@localhost ~]# MysqL_install_db [root@localhost ~]# cp /usr/share/MysqL/my-default.cnf /etc/my.cnf [root@localhost ~]# service MysqL start Starting MysqL. ERROR! The server quit without updating PID file (/var/lib/MysqL/localhost.localdomain.pid). [root@localhost ~]# vi /etc/my.cnf 并在配置文件中添加log-error = /var/log/MysqL.log ;log文件在初始化时生成 [root@localhost ~]# chown -R MysqL:MysqL /var/lib/MysqL/ [root@localhost ~]# service MysqL start Starting MysqL. SUCCESS! /usr/bin/MysqLadmin -u root password '123123' 3、安装tomcat 安装jdk 解压进入目录 JAVA_HOME=/usr/local/jdk1.7.0_09 CLAsspATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLAsspATH [root@localhost jdk1.7.0_09]# vi /etc/profile [root@localhost jdk1.7.0_09]# source /etc/profile [root@localhost jdk1.7.0_09]# java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 安装tomcat 解压进入目录 [root@localhost local]# mv apache-tomcat-6.0.44 tomcat [root@localhost local]# vi /etc/profile export TOMCAT_HOME=/usr/local/tomcat 安装tomcat2 解压进入目录 [root@localhost local]# mv apache-tomcat-6.0.44 tomcat2 [root@localhost local]# vi /etc/profile export TOMCAT_HOME2=/usr/local/tomcat2 修改相应的端口 比如8081 关闭firewalld 客户端测试 192.168.137.5安装MysqL(同上面安装一样) 4、配置MysqL读写分离,先要设置主从 主MysqL: #GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'cp'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION; 注意:以上这行不能使用!!!!在配置读写分离的时候,操作数据库权限不够,用以下语句!!!!!! grant all privileges on *.* to 'cp'@'%' identified by '123123' WITH GRANT OPTION; 从MysqL: 编辑配置文件 server-id = 222 relay-log = /data/relaylogs/relay-bin MysqL> CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='MysqL-bin.000004',MASTER_LOG_POS=2186726; ERROR 29 (HY000): File '/data/relaylogs/relay-bin.index' not found (Errcode: 13 - Permission denied) 上述原因是:/data/relaylogs/relay-bin.index这个文件没有找到,需要touch这个文件!!!! 上述命令成功后,start slave 然后用:show slave status\G 查看是否正确 问题1:在更改已经存在的库,从MysqL报错Slave_sql_Running: No 解决办法: MysqL> reset slave ; MysqL> stop slave ; MysqL> set GLOBAL sql_SLAVE_SKIP_COUNTER=1; MysqL> start slave ; 问题2:在master上已经存在的数据库,无法同步到slave上 解决办法: 重新配置主从!!!!!!!!!!!!!!! 重新配置主从---接着上面的操作 1、进入主库,进行锁表,防止数据写入 MysqL> flush tables with read lock; 2、在从库上,直接备份远程数据库到本地目录下 MysqLdump -h 192.168.137.3 -ucp -p123123 --databases erpBack >erpBack.bak.sql 3、在从库上,停止slave MysqL> stop slave ; 4、新建erpBack库,并导入数据 MysqL> create database erpBack ; MysqL> use erpBack ; MysqL> source /root/erpBack.bak.sql 5、在主库上,解锁表;并查看二进制日志信息;并记录 MysqL> unlock tables ; MysqL> show master status; 6、在从库上,重新配置连接信息 CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='MysqL-bin.000006',MASTER_LOG_POS=120; 7、启动slave;查看主从状态 MysqL> start slave ; MysqL> show slave status\G 8、在主库上,更新erpBack库数据;并在从库上查看是否运行正常!! Slave_IO_Running: Yes Slave_sql_Running: Yes 问题3:第二天重启系统后,show slave status\G 显示错误: Slave_IO_Running: No Slave_sql_Running: No 启动start slave,显示错误: ERROR 29 (HY000): File '/data/relaylogs/relay-bin.index' not found (Errcode: 13 - Permission denied) 解决:show master status; 重新配置主从 MysqL> reset slave ;重置slave,再重新配置slave MysqL> CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='MysqL-bin.000009',MASTER_LOG_POS=467; MysqL> start slave ; MysqL> show slave status\G 查看是否正确 配置MysqL读写分离,利用amoeba 下载最新版;并解压 unzip amoeba-MysqL-3.0.4-BETA-distribution.zip mv amoeba-MysqL-3.0.4-BETA amoeba cd amoeba chmod +x bin/ vi conf/amoeba.xml #设置客户端连接的参数:端口、用户名、密码等信息 <property name="user">root</property> <property name="password">root</property> #设置主从的写与读;原配置文件以下内容是注释掉的,这里需要开启 <property name="writePool">server1</property> <property name="readPool">server2</property> vi conf/dbServers.xml #这里设置连接主从数据库的参数:端口、数据库、用户名、密码 <!-- MysqL port --> <property name="port">3306</property> <!-- MysqL schema --> <property name="schema">erpBack</property> <!-- MysqL user --> <property name="user">cp</property> <property name="password">123123</property> eg:这里需要注意,主从MysqL都需要开启远程访问功能,并设置的用户名与密码相同!! #设置主从的ip地址;注意:本机的话也IP地址代替 <dbServer name="server1" parent="abstractServer"> <factoryConfig> <!-- MysqL ip --> <property name="ipAddress">192.168.137.3</property> </factoryConfig> </dbServer> <dbServer name="server2" parent="abstractServer"> <factoryConfig> <!-- MysqL ip --> <property name="ipAddress">192.168.137.5</property> </factoryConfig> </dbServer> 启动amoeba bin/launcher & 查看logs tail -f logs/net.log 客户端测试: MysqL -h 192.168.137.3 -P8066 -uroot -proot 配置Nginx代理 #servers upstream test.com { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8081; } #以上是每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端云服务器,可以解决session的问题。 proxy_redirect default; 最后,在客户端测试! (编辑:驾考网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
