简单介绍下mysql主从复制、读写分离+tomcat项目等
admin
2023-05-22 22:22:54
0

的负载均衡(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


https://sourceforge.net/projects/amoeba/files/


下载最新版;并解压

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


#设置客户端连接的参数:端口、用户名、密码等信息

root

root


#设置主从的写与读;原配置文件以下内容是注释掉的,这里需要开启

server1

server2


vi conf/dbServers.xml

#这里设置连接主从数据库的参数:端口、数据库、用户名、密码


                        3306


                       

                        erpBack


                       

                        cp


                        123123

eg:这里需要注意,主从mysql都需要开启远程访问功能,并设置的用户名与密码相同!!


#设置主从的ip地址;注意:本机的话也IP地址代替


       

               

                       

                        192.168.137.3

               

       


       

               

                       

                        192.168.137.5

               

       

启动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_pass http://test.com;

proxy_redirect default;


最后,在客户端测试!


如果大家还有什么地方需要了解的可以在官网找我们的专业技术工程师的,技术工程师在行业内拥有十几年的经验了,所以会比小编回答的更加详细专业。官网链接www.yisu.com

 

相关内容

热门资讯

摩洛哥非法移民讲述:为何突然越... 亚辛(Yassine)今年24岁,来自摩洛哥北部城市得土安。7月30日,天气晴朗,最高温度30摄氏度...
原创 成... 深夜,手机屏幕的光映着很多人的脸。只要轻轻一点,就能看到大量成人内容,免费、方便、不用露脸——看起来...
原创 女... 在航天员群体中,王亚平的名字早已家喻户晓,她是我国首位太空教师,也是首位完成出舱活动的女航天员,两次...
继旅长“带队上酒店”狂欢后,台... 【环球网报道 记者 徐思琦】据台湾联合新闻网、中时新闻网8月4日报道,就在台军8月5日至14日“汉光...
华为轮值董事长汪涛一行莅临牧原... 8月3日,华为技术有限公司轮值董事长汪涛一行莅临牧原参观交流。牧原股份终身荣誉董事长秦英林、总裁高曈...
三星Galaxy Z Fold... 三星最新推出的 Galaxy Z Fold 8 试图在折叠屏市场确立新的细分定位。这款设备介于小巧的...
60秒广告赚25万8!AI短剧... 说实话,AI 短剧火了不是一天两天。但虚拟主角直接明码标价接广告,比拥有千万粉丝的真人网红报价还高,...
东光县以科技创新驱动县域特色产... 东光县以科技创新驱动县域特色产业升级 增加科技“含新量” 提升发展“含金量” 日前,走进东光县秦村镇...
OpenAI宣布新模型攻克10... 当地时间8月1日,ChatGPT开发商OpenAI在官网宣布,其下一代人工智能模型系列将命名为“As...
【第227期 重庆CIO智行社... 当前,人工智能正从单点智能工具加速演进为多智能体协同驱动的新型制造模式,重塑机械制造业的生产组织方式...