centos7下nginx+mycat实现负载均衡、数据库的主从复制、读写分离

Nginx和tomcat 项目安装省略

 

1、准备环境

序号

内网IP

主机名Hostname

服务service

1

192.168.78.132

mysqlmaster

mysql5.7、nginx

2

192.168.78.133

mysqlslave

mysql5.7、tomcat7、JDK1.8、mycat

3

192.168.78.134

mysqlslave

mysql5.7、tomcat7、JDK1.8

2、架构图

3、基础环境安装

以下每台服务器均需执行相同操作:

#关闭SELINUX

sed -i 's/SELINUX=enforcing/SELINUX=disabled/'g /etc/selinux/config

setenforce 0

#禁用系统防火墙

systemctl disable firewalld

systemctl stop firewalld

firewall-cmd –state

#安装系统依赖

yum -y install iptables-services lrzsz libcgroup  libtool-ltdl  libseccomp policycoreutils-python crontabs sysstat tree telnet dstat iotop htop dos2unix nc nmap vim  wget net-tools screen lsof tcpdump mtr libaio-devel bzip2 zip unzip

#设置时区

timedatectl set-timezone Asia/Shanghai

#设置对时

ntpdate cn.pool.ntp.org

systemctl start ntpd

#磁盘检查

df-h

#主机名检查

hostname

#如果不一致,修改hostnamectl set-hostname xxx

4、三台都安装mysql5.7

官网直接下载

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

 

4.1、解压压缩包到目标位置

--解压压缩包

 

tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /software/

cd /software

mv mysql-5.7.25-linux-glibc2.12-x86_64/ mysql

4.2、创建数据仓库目录

cd mysql

mkdir data

4.3、改变目录属有者

groupadd mysql

useradd -r -s /sbin/nologin -g mysql mysql -d /software/mysql

chown -R mysql:mysql /software/mysql/

4.4、配置参数

bin/mysqld --initialize --user=mysql --basedir=/software/mysql --datadir=/software/mysql/data/mysql

4.5、使用脚本工具生成密钥文件

bin/mysql_ssl_rsa_setup  --datadir=/software/mysql/data/mysql

4.6、修改系统配置文件

cd support-files/

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

4.7、修改以下内容

vi /etc/my.cnf

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

port=3306

datadir=/software/mysql/data/mysql

skip-grant-tables

4.8、启动mysql

/etc/init.d/mysql start

ln -s /software/mysql/bin/mysql /usr/bin/

service mysql start

4.9、登录数据库配置权限

mysql -hlocalhost -uroot -p

查看数据库:show databases;

创建数据库:create database db01;

增加用户权限:grant all privileges on *.* to 'root'@'%' identified by 'root123456';

刷新更改:flush privileges;

设置开机启动

chmod 755 /etc/init.d/mysql

chkconfig --add mysql

chkconfig --level 345 mysql on

5、mysql主从分离

5.1 操作主机

修改/etc/my.cnf文件

server-id=1 log_bin

binlog-do-db=baizhi(要同步的数据库) binlog-ignore-db=mysql(忽略同步的数据库)

5.2 修改从节点

修改/etc/my.cnf文件

server-id=133

重启  service mysql restart

登录从机mysql数据库

#关闭

stop slave;

#设置备份位置

change master to master_host='192.168.78.132',master_user='root',master_password='root123456',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;

#启动

start slave;

#查看从节点的状态 (两个都为yes即设置成功)

show slave status\G

6、使用mycat实现读写分离

6.1上传mycat安装包 /software/下

6.2 解压安装

6.3 配置环境变量

vi /etc/profile

#mysql_HOME

export PATH=/software/mysql/bin:$PATH

#JAVA_HOME

export JAVA_HOME=/software/jdk1.8

#MYCAT_HOME

export MYCAT_HOME=/software/mycat

#PATH

export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin

生效

source  /etc/profile

6.4 修改/confg目录下的server.xml和schema.xml配置文件

修改schema.xml

[root@mysqlslave conf]# cat schema.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

    <!--dataNode配置数据库地址,对应下发dataNode标签name属性值-->

    <schema name="MYCATDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

    </schema>

<!--数据节点

name:自定义唯一

dataHost:数据主机

database:物理数据库名,这里有数据库名为mycatdb

-->

      <dataNode name="dn1" dataHost="host1" database="db01" />

<!--数据主机

name:和datanode的dataHost一致

         ataHost标签中的balance属性配置读写分离类型,默认为0,实际生产过程中设置为1(主双从)或者3(单主单从)

0:不开启读写分离,所有读操作都发送到当前可用的writeHost上

1:全部的readHost与stand by writeHost参与SELECT 语句的负载均衡

2:所有的读操作随机在writeHost和readHost上分发

3:所有读请求随机分发到readHost上执行,writeHost不负担读压力

-->

    <dataHost name="host1" maxCon="1000" minCon="10" balance="0"

              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

        <!--心跳机制,检测数据库是否可用-->

<heartbeat>select user()</heartbeat>

                  <!--写主机目前只配置一个

                         url:配置数据库IP:端口

-->

                <writeHost host="hostM1" url="192.168.78.132:3306" user="root"

                                   password="root123456">

<!--读主机

url:配置数据库IP:端口

-->

                <readHost host="hostS2" url="192.168.78.134:3306" user="root" password="root123456" />

                <readHost host="hostS2" url="192.168.78.133:3306" user="root" password="root123456" />

                </writeHost>

                <!--<writeHost host="hostS1" url="localhost:3306" user="root"

password="root123456" />-->

    </dataHost>

</mycat:schema>

6.5 启动mycat 

mycat  start

6.7连接测试

6.8 测试

主库写入数据同步到从库

注意项目中数据库连接的url需要修改为安装mycat的机器的ip地址,数据库名为schema.xml配置文件中的数据库名

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://192.168.78.133:8066/TESTDB?useUnicode=true&characterEncoding=utf8

jdbc.user=mycat

jdbc.password=123456

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值