mysql读写分离(需先完成主从复制)
启动顺序:41,42,43
架构说明:
ip | 角色 | 安装配置 |
---|---|---|
192.168.242.43 | mycat管理端 | mycat,jdk1.8.0_161 |
192.168.242.41 | mysql主(写) | mysql |
192.168.242.42 | mysql从(读) | mysql |
安装jdk
# 解压下载好的jdk tar -zxf /home/hadoop/jdk-8u161-linux-x64.tar.gz -C /usr/local/java/ # 配置java环境变量 vi /etc/profile export JAVA_HOME=/usr/local/java/jdk1.8.0_161 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH} # 使配置生效 source /etc/profile
mycat安装
# 解压mycat安装包 tar -zxf /home/hadoop/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local/
配置mycat的server.xml
vi /usr/local/mycat/conf/server.xml <user name="root" defaultAccount="true"> <!-- password是mycat登录密码 --> <property name="password">root</property> <!--schemas是 mycat 逻辑数据库名,自己定义不一定和真实数据库同名(实际测试不一样连接不上),和schema.xml的逻辑数据库同名即可--> <property name="schemas是">mycat_sql</property> <!-- 表级 DML 权限设置 --> <!-- <privileges check="false"> <schema name="TESTDB" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema> </privileges> --> </user> <!-- 这里需要注释 <user name="user"> <property name="password">user</property> <property name="schemas">TESTDB</property> <property name="readOnly">true</property> </user> -->
配置schema.xml
vi /usr/local/mycat/conf/schema.xml ### !!!!注意!!!! <schema name="mycat_sql" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />这里最好与真是数据库名称一样,否则连接不上 <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mycat_sql" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" /> <dataNode name="dn1" dataHost="auth" database="zxnbmk" /> <dataHost name="auth" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM" url="192.168.242.41:3306" user="mycat_wr" password="123"> <readHost host="hostS" url="192.168.242.42:3306" user="mycat_re" password="123" /> </writeHost> </dataHost> </mycat:schema>
只读数据库(从)添加用户
# 添加仅具有读权限的mwycat_sql用户 create user 'mycat_re'@'%' identified with mysql_native_password by '123'; GRANT select ON *.* TO 'mycat_re'; flush privileges;
读写数据库(主)添加用户
# 添加仅具有读写权限的mycat_sql用户 CREATE USER 'mycat_wr'@'%' IDENTIFIED WITH mysql_native_password BY '123'; GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'mycat_wr'@'%'; FLUSH PRIVILEGES;