mycat实现读写分离

mycat部署

  • 读写分离原理
  • 一、准备mariadb环境
    • 1.上传项目压缩包并解压
    • 2. 编辑hosts文件
    • 3.配置本地yum源和mariadb的yum源(3台)
    • 4.安装JDK环境
    • 5.关闭防火墙规则(所有节点)
  • 二、部署mariadb(db1和db2)
    • 1.安装mariadb
    • 2.编辑配置文件
    • 3.开放db1节点的数据库权限
    • 4.验证同步
  • 三、mycat实现读写分离
    • 1.安装mycat
    • 2.配置文件
      • (1)增加变量
      • (2)编辑Mycat的逻辑库配置文件
      • (3)编辑访问用户
    • 3.启动mycat服务
  • 四、验证读写分离
    • 1.安装mariadb-client
    • 2.查看mycat服务的逻辑库
    • 3.添加数据
    • 4.验证读写分离

读写分离原理

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(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服务状态的命令不加“;”
mycat实现读写分离_第1张图片

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;

mycat实现读写分离_第2张图片

3.添加数据

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

查看表
mycat实现读写分离_第3张图片

4.验证读写分离

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

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

你可能感兴趣的:(数据库,mycat,读写分离)