构建读写分离数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 构建读写分离数据库

基础环境

关闭防火墙selinux

systemctl stop firewalld

setenforce 0

(1)修改主机名

# hostnamectl set-hostname db1

# hostnamectl set-hostname db2

# hostnamectl set-hostname mycat

(2)修改主机映射文件

[root@db1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.33 db1

192.168.200.44 db2

192.168.200.55 mycat

(3)配置yum源

[root@db1 ~]# cat /etc/yum.repos.d/local.repo

[mariadb]

name=mariadb

baseurl=file:///opt/gpmall-repo

gpgcheck=0

enabled=1

[centos]

name=centos

baseurl=file:///opt/centos

enabled=1

gpgcheck=0

mycat节点

1.安装java环境

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

2.关闭防火墙

iptables -F

iptables -X

iptables -Z

iptables-save

db1和db2节点安装mariadb服务

# yum install mariadb mariadb-server -y

# systemctl start mariadb && systemctl enable mariadb

初始化mariadb数据库并设置密码123456

# mysql_secure_installation

配置主节点db1虚拟机的数据库配置文件my.cnf

# vi /etc/my.cnf

[mysqld]

log_bin = mysql-bin #记录操作日志

binlog_ignore_db = mysql #不同步 MySQL 系统数据库

server_id = 18 #数据库集群中的每个节点 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

重启服务

systemctl restart mariadb

开放主节点db1的数据库权限

在主节点 db1 虚拟机上使用 mysql 命令登录 MariaDB 数据库,授权在任何客户端机器上

可以以 root 用户登录到数据库。

# mysql -uroot -p123456

grant all privileges on *.* to root@'%' identified by "123456";

在主节点 db1 数据库上创建一个 user 用户让从节点 db2 连接,并赋予从节点同步主节点

数据库的权限,命令如下:

grant replication slave on *.* to 'user'@'db2' identified by '123456';

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

# mysql -uroot -p123456

change master to

master_host='db1',master_user='user',master_password='123456';

配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用 show slave status\G; 命 令并查看从节点服务状态,如果 Slave_IO_Running 和 Slave_SQL_Running 的状态都为 YES,从节点服务开启成功。

start slave;

show slave status\G;

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

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");

 

db2数据库验证

show databases;

select * from test.company;

 

mycat节点读写分离中间件

安装 Mycat 服务

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

/usr/local/

赋予目录权限

# chown -R 777 /usr/local/mycat/

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

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

# source /etc/profile

[root@mycat ~]# cat /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="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="172.16.51.18:3306" user="root" password="123456">

<readHost host="hostS1" url="172.16.51.30:3306" user="root" password="123456"/>

</writeHost>

</dataHost>

</mycat:schema>

[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml

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

[root@mycat ~]# cat /usr/local/mycat/conf/server.xml

在配置文件的最后部分,

<user name="root">

<property name="password">123456</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>

启动mycat服务

[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat star

netstat -ntlp

验证数据库集群服务读写分离功能 (1)用 Mycat 服务查询数据库信息 先在 Mycat 虚拟机上使用 Yum 安装 mariadb-client 服务。

[root@mycat ~]# yum install -y MariaDB-client

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

[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456

show databases;

use USERDB

show tables;

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

select * from company;

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

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'


相关文章
|
7天前
|
移动开发 监控 关系型数据库
使用云数据库RDS和低代码开发平台“魔笔”,高效构建门户网站,完成任务领智能台灯!
使用云数据库RDS和低代码开发平台“魔笔”,高效构建门户网站,完成任务领智能台灯!
|
29天前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
5月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
2月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
54 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
2月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
2月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
2月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
75 2
|
3月前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
194 2
|
3月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
5月前
|
SQL 关系型数据库 MySQL

热门文章

最新文章