mycat实现读写分离

读写分离原理

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

一、准备mariadb环境

三台虚拟机
mycat db1 db2

1.上传项目压缩包并解压

上传安装所需的文件夹gpmall-repo到/opt
上传压缩包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

2. 编辑hosts文件

vim /etc/hosts

内容:

10.30.59.238 mycat
10.30.59.239 db1
10.30.59.240 db2

3.配置本地yum源和mariadb的yum源(3台)

mv /etc/yum.repos.d/* /media
vi /etc/yum.repos.d/local.repo

内容 :

[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1

并挂载

mkdir /opt/centos
mount /dev/cdrom /opt/centos

4.安装JDK环境

mycat 节点安装mycat

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

5.关闭防火墙规则(所有节点)

iptables -F
iptables -X
iptables -Z
iptables-save

二、部署mariadb(db1和db2)

1.安装mariadb

yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable  mariadb

初始化mariadb

mysql_secure_installation 

默认回车 设置密码
最后四个 y n y y

2.编辑配置文件

db1 节点:

vi  /etc/my.cnf

增添内容: (注释文字去掉)

[mysqld]
log_bin = mysql-bin                       #记录操作日志
binlog_ignore_db = mysql                  #不同步MySQL系统数据库
server_id =  239                           #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如172.16.51.18,server_id就写18 

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

3.开放db1节点的数据库权限

进入数据库
grant all privileges on . to root@’%’ identified by “000000”;
grant replication slave on . to ‘user’@‘db2’ identified by ‘000000’;

配置db2节点
更改master

change master to master_host='db1',master_user='user',master_password='000000';

开启 slave从节点服务

start slave;
show slave status\G

查看slave服务状态的命令不加“;”
在这里插入图片描述

4.验证同步

在db1节点创建数据库test中的表company

create database test;
use test
create table company(id int not null primary key,name varchar(50),addr varchar(255));
insert into company values(1,"facebook","usa");

再在db2中查看创建的表

select * from test.company;

三、mycat实现读写分离

1.安装mycat

解压上传的压缩包到/usr/local

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
chown -R 777 /usr/local/mycat/

2.配置文件

(1)增加变量

在/etc/profile系统变量文件中添加Mycat服务的系统变量,并生效变量

echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
source /etc/profile

(2)编辑Mycat的逻辑库配置文件

在这里定义一个逻辑库schema,name为USERDB;该逻辑库USERDB对应数据库database为test(在部署主从数据库时已安装);设置数据库写入节点为主节点db1;设置数据库读取节点为从节点db2。(可以直接删除原来
schema.xml的内容,替换:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema> 
<dataNode name="dn1" dataHost="localhost1" database="test" />  
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1"  slaveThreshold="100">  
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="10.30.59.239:3306" user="root" password="000000">
        <readHost host="hostS1" url="10.30.59.240:3306" user="root" password="000000" />
    </writeHost>
</dataHost>
</mycat:schema>

修改权限
chown root:root /usr/local/mycat/conf/schema.xml

(3)编辑访问用户

vim /usr/local/mycat/conf/server.xml

在配置文件的最后部分修改:

<user name="root">
		<property name="password">000000</property>
		<property name="schemas">USERDB</property>

然后删除如下几行:

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

3.启动mycat服务

/bin/bash /usr/local/mycat/bin/mycat start

四、验证读写分离

1.安装mariadb-client

mycat节点

yum install -y MariaDB-client

2.查看mycat服务的逻辑库

在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库USERDB,因为Mycat的逻辑库USERDB对应数据库test(在部署主从数据库时已安装),所以可以查看库中已经创建的表company。

进入逻辑库

mysql -h127.0.0.1 -P8066 -uroot -p000000

查看逻辑库的表

show USERDB.tables;

在这里插入图片描述

3.添加数据

insert into company values(2,"pingpang","china");

查看表
在这里插入图片描述

4.验证读写分离

mysql -h127.0.0.1 -P9066 -uroot -p000000 -e "show @@datasource;"

在这里插入图片描述
完成!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值