构建读写分离的数据库集群

准备三台虚拟机:mycat(Mycat中间件服务节点)、db1(mariadb数据库集群主节点)、db2(mariadb集群从节点)

基础环境配置

#vi /etc/hosts

  添加以下配置

172.16.51.6     mycat

172.16.51.18    db1

172.16.51.30    db2

三台虚拟机分别上传gpmall-repo文件至/opt/下,并设置本地yum源

#mv /etc/yum.repo.d/* /media

#mkdir /opt/centos

#mount /dev/cdrom /opt/cenos

#vi /etc/yum.repo.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

  

安装jdk环境

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

#java -version

  关闭防火墙(三个节点)

#iptables -F

#iptables -X

#iptables -Z

部署mariadb主从数据库集群服务

在db1、db2节点安装mariadb服务、启动服务、设置开机自启

#yum install -y mariadb mariadb-server

#systemctl start mariadb

#systemctl enable mariadb

在db1、db2节点初始化mariadb数据库,设置用户root密码为123456

#mysql_secure_installstion

(回车、y、123456、123456、y、n、y、y)

在db1节点my.cnf配置文件开头中增添以下内容

#vi /etc/my.cnf

[mysqld]

log_bin = mysql-bin

binlog_ignore_db = mysql

server_id = 18

#systemctl restart mariadb (重启mariadb服务)

开放主节点数据库权限

在db1节点登录数据库

#mysql -uroot -p123456

>grant all privilcation slave on *.* to root@’%’ identified by “123456”;

在db1主节点数据库创建user用户使其可以在db2从节点连接,并赋予从节点同步数据库的权限

>grant replication slave on *.* to ‘user’@’db2’ identified by ‘123456’;

配置从节点db2同步主节点db1

在db2从节点登录myariadb数据库,配置从节点连接主节点的连接信息。Master_host为主节点db1,master_user为上面创建的用户user

#mysql -uroot -p123456

>change master to master_host=’db1’,master_user=’user’,master_password=’123456’;

>start slave;

>show slave status\G;

//Slave_IO_Running和Slave_SQL_Running的状态都为YES

验证主从数据库的同步功能

在db1数据库中创建库test,并在库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”);

>select * from company;

部署Mycat读写分离中间件服务

将Mycat服务的软件包上传到/root目录下,并将软件包及液压到/use/local目录中

# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

#chown -R 777 /usr/local/mycat/ (赋予mycat目录权限)

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

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

#source /etc/profile

编辑mycat的逻辑库配置文件

#vi /usr/local/mycat/conf/schema.xml

 

 

    select user()

    

        

    

修改schema.xml的用户权限

#chown root:root /usr/local/mycat/conf/schema.xml

编辑mycat的访问用户

修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为123456,访问Mycat的逻辑库为USERDB

#vi /usr/local/mycat/conf/server.xml

在文件最后部分

123456

USERDB

删除以下几行

user

TESTDB

true

启动mycat服务

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

#netstat -ntpl

  //若有8066和9066端口,则表示mycat服务开启成功

验证数据库集群服务读写分离功能

  用mycat服务查询数据库信息

   首先在mycat虚拟机上使用yum安装mariadb服务

#yum install -y MairaDB-client\

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

#mysql -h127.0.0.1 -P8066 -uroot -p123456

#show databases;

#use USERDB

#show tables;

# select * from company;

用mycat服务添加表数据

 在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,"basketball","usa"),添加完毕后查看表信息

#insert into company values(2,"bastetball","usa");

# select * from company;

验证Mycat服务对数据库读写操作分离

  在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在db1主数据库节点上,所有的读取操作READ_LOAD数都在db2主数据库节点上。

#mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show  @@datasource;'

你可能感兴趣的