LinuxMySQL读写分离

Linux:Centos7.9

MySQL:mysql8.0.12

客户端 10.0.0.10
主机 10.0.0.40
从机 10.0.0.50

都关闭防火墙和selinux
systemctl stop firewalld
setenforce 0

创表创库
mysql -uroot -p1
create database HA;
use HA;
create table T1(id int,name varchar(20));


配置主从
vim /etc/my.cnf
添加
server-id=1
log-bin=mysql-bin-master
下面两个主从都要一样
binlog-do-db=HA 
binlog-ignore-db=mysql

修改auto.cnf
vim /usr/local/mysql/data/auto.cnf
修改UUID 服务器都不能一样

重启mysql
systemctl restart mysql


都创建同步账户
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '1';
授权slave同步账号
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
加载
flush privileges;

show master status;

###

change master to master_host='10.0.0.40',master_user='slave',master_password='1',master_port=3306,master_log_file='mysql-bin-master.000001',master_log_pos=807;
###

start slave;
show slave status\G;

在mycat客户端上
安装JDK
1) 上传jdk安装包
2) 解压缩到/usr/local
[root@mycat ~]# tar zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/
3) 重命名为jdk8
cd /usr/local/
mv jdk1.8.0_181 jdk8
4) 修改/etc/profile添加
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
export PATH

export JAVA_HOME=/usr/local/jdk8
export PATH=$PATH:$JAVA_HOME/bin
5) 生效source /etc/profile
6) 测试java -version

安装MYCAT
1) 上传MYCAT安装包
2) 解压缩到/usr/local
tar zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /usr/local
3) 修改/etc/profile添加
vim /etc/profile
export MYCAT_HOME=/usr/local/mycat
4) 生效source /etc/profile
5) 修改 
vim /etc/hosts
    mycat服务器ip        mycat.com
    主MySQL的ip        master.com
    从MySQL的ip        slave.com
6) ping mycat.com
7) 修改conf/server.xml
vim /usr/local/mycat/conf/server.xml
账号 密码 数据库名
    <user name="root" defaultAccount="true">
        <property name="password">1</property>
        <property name="schemas">HA</property>
        <property name="defaultSchema">HA</property>
    </user>

    <user name="user">
        <property name="password">user</property>
        <property name="schemas">HA</property>
        <property name="readOnly">true</property>
        <property name="defaultSchema">HA</property>
    </user>


8) 修改conf/schema.xml
vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!-- 修改为你的数据库 -->
        <schema name="HA" checkSQLschema="true" sqlMaxLimit="100"  dataNode='dn1'>
        </schema>
        <!-- 修改为你的数据库 -->
        <dataNode name="dn1" dataHost="host1" database="HA" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- 指定写主机 -->
                <writeHost host="hostM1" url="10.0.0.10:3306" user="root"  
                  password="1">
                 <!-- 指定读主机 -->
                 <readHost host="hostS1" url="10.0.0.40:3306" user="root" password="1" />
                </writeHost>
        </dataHost>
</mycat:schema>
9) 到bin执行./mycat start 或 console
cd /usr/local/mycat/bin
./mycat console

三、客户端测试
启用mycat
mysql -uroot -p1 -h10.0.0.50 -P8066 
报登录错误,原因mycat1.6不支持mysql8
解决方案:
1)把mysql驱动包8.0.12复制到usr/local/mycat/lib下
mv mysql-connector-java-8.0.12.jar /usr/local/mycat/lib
2) 设置权限777
cd /usr/local/mycat/lib
chmod 777 mysql-connector-java-8.0.12.jar
3)把原有的5.1.35驱动包修改名称为xx.jar.bak
mv mysql-connector-java-5.1.35.jar mysql-connector-java-5.1.35.jar.bak
4) 修改/etc/my.cnf
vim /etc/my.cnf
[mysqld]加
sql_mode=""
default_authentication_plugin=mysql_native_password
5) 重启mysql
systemctl restart mysql

6)打开conf/log4j2.xml
修改日志级别为debug ,取消注释 Console
 <asyncRoot level="debug" includeLocation="true">                                                                
             <AppenderRef ref="Console" />
             <AppenderRef ref="RollingFile"/>
        </asyncRoot>

7)关闭重新启动mycat  
./mycat stop
./mycat console
8) 重新开一个窗口登录mycat
mysql -uroot -p1 -h10.0.0.50 -P8066 --default_auth=mysql_native_password
在mysql里分别执行更新和查询操作,看前面窗口的日志

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值