数据库读写分离
先准备三台centos7服务器
一台db1,一台mycat,一台db2
两个作为主从服务器,一个作为中间节点
192.168.100.10 db1
192.168.100.20 mycat
192.168.100.30 db2
1,关闭所有机子的防火墙,配置好主机映射,同一网段。
三台服务器都准备好gpmall-repo包,mycat准备好mycat数据包
2,开始在mycat节点安装java环境,主从机安装mariadb,并设置开机自启动
mycat:
yum install java* -y
java -version查看
主从:
yum install mariadb mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
3,初始化主从上的mariadb,完成主从
mysql_secure_installation
配置db1的配置文件,因为只要一个主数据库服务器,所以修改一台配置文件即可
db1:
vim /etc/my.cnf
[mysqld]
log_bin = mysql-bin
#记录操作日志
binlog_ignore_db = mysql
#不同步 MySQL 系统数据库
server_id = 10
#数据库集群中的每个节点 id 都要不同
然后重启数据库
systemctl restart mariadb
(有些版本数据库会缺少配置文件)
例如设置日志文件的配置
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
4,然后进入数据库配置权限
先授权所有客户端机器可以root用户登录到数据库
grant all privileges on *.* to root@'%' identified by "000000";
然后授权指定的用户这里是user
grant replication slave on *.* to 'user'@'db2' identified by '000000';
5,db2同步,完成主从
db2:
进入数据库
刷新slave;
reset slave;
配置master
change master to master_host='db1',master_user='user',master_password='000000';
然后开启slave
start slave;
查看情况
show slave status\G;
6,然后测试主从,并创建测试数据库
db1:
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");
然后查看数据表,从服务器也查看,数据一样说明同步
7,然后正式开始部署读写分离服务
tar -zxvf Mycat-server* -C /usr/local/
然后赋予mycat读权限
chown -R 777 /usr/local/mycat
然后把变量文件添加到mycat服务的系统变量中
echo export MYCAT_HOME=/usr/local/mycat >> /etc/profile
然后执行脚本使变量生效
8,然后到最复杂的一步
编辑schema.xml配置文件
vim /usr/local/mycat/conf/schema.xml
大部分内容在文档中已经存在,要先把不重要的内容删除
然后设置写入节点为db1,读节点为db2
先删除内容,保留红框里的内容
1-34行

34-66行

最后只保留一行即可

9,然后开始编辑内容
删除完内容会得到

修改内容

修改参数解释
sqlMaxLimit:配置默认查询数量。
database:为真实数据库名。
balance="0":不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
balance="1":全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单
来说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2、
S1、S2 都参与 select 语句的负载均衡。
balance="2":所有读操作都随机的在 writeHost、readhost 上分发。
balance="3":所有读请求随机地分发到 wiriterHost 对应的 readhost 执行,writerHost
不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 版本没有。
writeType="0":所有写操作发送到配置的第一个 writeHost,第一个挂了需要切换到
还 生 存 的 第 二 个 writeHost , 重 新 启 动 后 已 切 换 后 的 为 准 , 切 换 记 录 在 配 置 文 件
dnindex.properties 中。
writeType="1":所有写操作都随机的发送到配置的 writeHost。
10,然后修改schema.xml的用户权限
chown root:root /usr/local/mycat/conf/schema.xml
11,编辑mycat的访问用户
mycat的访问用户目录在/usr/local/mycat/conf下的server.xml文件,修改root用户访问密码与数据库,访问mycat的逻辑库为userdb,在schema.xml文件中指明了
vim /usr/local/mycat/conf/server.xml
在文档偏下方找到配置

密码和逻辑数据库改为自己制定的
记得删除下面几行
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
12,然后启动mycat服务器
/bin/bash /usr/local/mycat/bin/mycat start
然后netstat -ntpl查看,如果开放了8066和9066端口就表示mycat启动成功
13,然后验证读写分离功能
在mycat上安装mariadb-client
mycat上不能安装mariadb-server,否则后面的查看数据库表的时候
会报错
然后用mysql命令查看mycat的逻辑数据库
mysql -h 127.0.0.1 -P8066 -u root -p
000000
进入逻辑数据库查看内容
给表添加数据
insert into company values(2,"bastetball","usa");
然后用mysql命令,通过9066端口查询对数据库读写操作的分离信息
mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
注意:如果在完成读写分离的时候,在mycat节点上
同时安装了mycat和mariadb服务,那在使用逻辑数据库
列出所有表的时候报错,所以在mycat上只要安装
mariadb-client和mycat即可

浙公网安备 33010602011771号