
使用OpenStack构建读写分离的数据库集群
本实验需要三台虚拟机,以为为IP地址实例表
IP | 作用 |
---|---|
192.168.20.50 | 主数据库 |
192.168.20.40 | 从数据库 |
192.168.20.30 | mycat端 |
主从复制
1.在虚拟机中安装mariaDB并设置开机自启
yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
2.初始化数据库
mysql_secure_installation
依次输入 回车 , y
,设置密码(在本例中设为000000), y
, n
,y
, y
配置主节点
1.修改配置文件:
vi /etc/my.cnf
在 [mysqld]
中添加以下代码
log_bin=mysql-bin
binlog_ignore_db=mysql
server_id=50 #为实际IP的最后一位
read-only=0
systemctl restart mariadb
重启服务
2.开放主节点的数据库权限
登录到数据库
mysql -uroot -p000000
授权
grant all privileges on *.* to root@'%' identified by '000000';
验证是否授权成功,登录到从数据库
mysql -uroot -h 192.168.20.50 -p000000
在主节点中创建一个user远程用户让从节点链接,并赋予从节点同步主节点的数据库的权限
回到主节点,继续在数据库中执行一下命令:
create user 'user'@'192.168.20.50' identified by '000000';
grant replication slave on *.* to 'user'@'192.168.20.40';
刷新权限:
flush privileges;
查看主数据库中的状态:
show master status;
配置从节点
修改配置文件:
server_id=40 #id为实际IP最后一位
relay-log=mysql-relay
重启数据库
systemctl restart mariadb
在从节点中登录数据库:
配置从节点链接主节点的信息。Master_host:主节点的 IP 地址,master_user
是上一步中创建的用户user
change master to master_host='192.168.20.50',master_user='user',master_password='000000';
开启从节点服务,检查是否开启成功
start slave;
show slave status \G;
Slave_IO_Running
和 Slave_SQL_Running
都为Yes即为成功!
验证主从数据库同步:
在主节点登录数据库
create database test0;
use test0;
create table student (id int,name varchar(50),age int);
insert into student values (20050623,"zhaoda",18);
在从节点登录数据库
show databases;
select * from test0.student;
主从数据库同步,则搭建成功!
读写分离
安装JDK和mycat组件
将组件上传至根目录
tar -zxvf jdk-8u202-linux-x64.tar.gz
tar -zxvf Mycat-server-1.6-RELEASE-2016102804710-linux.tar.gz -C /usr/local
配置环境变量, vi /etc/profile ,将以下代码添加至末尾:
export JAVA_HOME=/root/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export MYCAT_HOME=/usr/local/mycat/
使用 source /etc/profile
使环境变量生效
编辑mycat的逻辑库配置文件
vim /usr/local/mycat/conf/schema.xml
修改为以下的配置文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn3" />
<dataNode name="dn3" dataHost="localhost1" database="test0" /> #database为自己实际创建的数据库名
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.20.50:3306" user="root" #此url为自己的实际主数据库IP地址
password="000000" >
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.20.40:3306" user="root" password="000000" /> #此处url为自己实际的从数据库IP
</writeHost>
</dataHost>
</mycat:schema>
修改配置文件权限
chown -R root:root schema.xml
编辑mycat的访问用户
vim /usr/local/mycat/conf/server.xml
将最后的 user name="user"
的几行代码删除
在 user name="root" 部分中,修改代码为
<property name="password">000000</property>
<property name="schemas">TESTDB</property>
启动mycat服务
/bin/bash /usr/local/mycat/bin/mycat start
查看端口号占用情况,8066和9066为LISTEN状态即为启动成功
netstat -ntpl
如果netstat无法执行,可以执行以下代码安装依赖
yum -y install net-tools
使用端口8066登录数据库并添加一条数据
mysql -h 127.0.0.1 -uroot -p000000 -P8066
show databases;
use TESTDB;
show tables;
select * from student;
insert into student values (3,"zhanghao",19);
通过9066端口查看对数据库读写操作的分离信息
mysql -h 127.0.0.1 -uroot -p000000 -e 'show @datasource'
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果