MySQL主从复制不在叙述,以下是 mycat 的部署过程: 从GitHub上下载mycat ,此本版是:Mycat-server-1.6.7.5 1· 解压 下载好的 tar 包:

tar -xf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz

cd mycat

cp schema.xml schema.xml.bak

cp server.xml server.xml.bak

vim schema.xml //编辑配置文件,指定数据库、读写分离参数

<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="adshield" checkSQLschema="false" sqlMaxLimit="100" dataNode="node1"/>
<schema name="adshield_res_video" checkSQLschema="false" sqlMaxLimit="100" dataNode="node2"/> <schema name="database1" checkSQLschema="false" sqlMaxLimit="100" dataNode="node3"/> <schema name="konga" checkSQLschema="false" sqlMaxLimit="100" dataNode="node4"/> <schema name="nacos" checkSQLschema="false" sqlMaxLimit="100" dataNode="node5"/> <schema name="oauth2" checkSQLschema="false" sqlMaxLimit="100" dataNode="node6"/> <schema name="videodata" checkSQLschema="false" sqlMaxLimit="100" dataNode="node7"/> <schema name="videodata_dev" checkSQLschema="false" sqlMaxLimit="100" dataNode="node8"/> //dataNode 这里的值需要和下面的值对应 <schema name="viip_qa" checkSQLschema="false" sqlMaxLimit="100" dataNode="node9"/> <schema name="test-lyh" checkSQLschema="false" sqlMaxLimit="100" dataNode="node10"/> // schema name 是mycat 的逻辑名称,配置时最好和真实库是一样的,这样更直观。 <dataNode name="node1" dataHost="192.168.64.12" database="adshield"/> // dataNode name 是你真实数据库的名称 <dataNode name="node2" dataHost="192.168.64.12" database="adshield_res_video"/> <dataNode name="node3" dataHost="192.168.64.12" database="database1"/> <dataNode name="node4" dataHost="192.168.64.12" database="konga"/> <dataNode name="node5" dataHost="192.168.64.12" database="nacos"/> <dataNode name="node6" dataHost="192.168.64.12" database="oauth2"/> <dataNode name="node7" dataHost="192.168.64.12" database="videodata"/> <dataNode name="node8" dataHost="192.168.64.12" database="videodata_dev"/> <dataNode name="node9" dataHost="192.168.64.12" database="viip_qa"/> <dataNode name="node10" dataHost="192.168.64.12" database="test-lyh"/>

<dataHost name="192.168.64.12" maxCon="1000" minCon="50" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType="0" slaveThreshold="100"> // balance 值为 1 表示读写分离 还可以表示 0、1、2、3 具体参考官网解释 <heartbeat>select user()</heartbeat> <writeHost host="192.168.64.12" url="192.168.64.12:3326" user="test" password="test123"> <readHost host="192.168.64.14" url="192.168.64.14:3306" user="test" password="test123"/> //指定主、从的地址、用户、密码 </writeHost> </dataHost>

</mycat:schema>

vim server.xml //修改mycat 用户等配置 ,配置文件太长,贴出修改部分

<user name="root" defaultAccount="true"> //连接mycat的用户名 <property name="password">City@#$123</property> //连接mycat的密码 <property name="schemas">adshield,adshield_order,adshield_taxi,mysql,nacos,pb_cms_base,performance_schema,sys,test2,information_schema</property> //mycat 需要连接的库,这里需要和上个配置文件<schema.xml> 中 schema name 的值相对应。下面参数的配置都一样。 <property name="defaultSchema">adshield,adshield_order,adshield_taxi,mysql,nacos,pb_cms_base,performance_schema,sys,test2,information_schema</property>

cd /usr/local/mycat

mkdir logs

chmod 777 logs

vim /etc/profile //配置环境变量

export MYCAT_HOME=/usr/local/mycat export PATH=$MYCAT_HOME/bin:$PATH

source /etc/profile

mycat start // 启动时会产生日志,可以观看日志是否启动成功

MyCAT Server startup successfully. see logs in logs/mycat.log 日志产出 说明启动成功

因公司需求,需要将主库和mycat 的端口互换,这样可以避免程序再次修改连接数据库的操作,所以如果有需求,请修改以下配置文件:

vim server.xml

<property name="serverPort">3306</property> <property name="managerPort">9066</property> //需要将他取消注释,修改端口,重启mycat