Linux学习笔记——构建读写分离的数据库集群
环境: 节点规划如下:主机名 IP地址 节点
mycat 192.168.200.166 Mycat中间件服务节点
db1-master 192.168.200.167 MariaDB数据库集群主节点
db2-slave 192.168.200.168 MariaDB数据库集群从节点
Mycat组件,使用 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 压缩包安装
这里提供给大家mycat下载地址:http://dl.mycat.org.cn/1.6-RELEASE/
1:基础环境配置
一 :修改3台主机的主机名。
mycat节点修改主机名:
@localhost ~]# hostnamectl set-hostname mycat
# bash
@MyCat ~]#
db1-master节点修改主机名:
# hostnamectl set-hostname db1
# bash
#
db2-slave节点修改主机名:
# hostnamectl set-hostname db2
# bash
#
二 :编辑 hosts 文件
#三台集群虚拟机的/etc/hosts 文件配置如下,添加下面三条
192.168.200.166 mycat
192.168.200.167 db1
192.168.200.168 db2
三:Yum 源配置
# 安装 JDK 环境,在 mycat 节点安装 JDK 环境:
# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# java -version //查看jdk版本
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode
# 关闭防火墙 (全部节点)
# iptables -F
# iptables -X
# iptables -Z
# iptables-save
2:部署 MariaDB 主从数据库集群服务
#在 db1 和 db2 节点上安装 MariaDB 服务,并开启,加入开机项目//记得开启,否则后面初始化数据库可能会失败
# yum install -y mariadb mariadb-server
# systemctl start mariadby
# systemctl enable mariadb
#初始化 MariaDB 数据库
# mysql_secure_installation
选项如下
Set root password? y
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? y
Disallow root login remotely? n
Remove test database and access to it? y
Reload privilege tables now? y
3:配置数据库集群主节点 (db1节点)
# vi /etc/my.cnf
log_bin = mysql-bin //记录操作日志
binlog_ignore_db = mysql //不同步 MySQL 系统数据库
server_id = 167 //这里的 id 直接设置会IP地址最后的数字
# systemctl restart mariadb //重启服务,这样配置才会生效
4:开放主节点的数据库权限
#在节点 db1 上操作
# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> grant all privileges on * . * to root@`%` identified by "000000"; //给予任何客户端可以 以root用户登录到数据库。
#在节点 db1 数据库上创建一个 user 用户,让从节点 db2 连接,并赋予从节点同步主节点数据库的权限
MariaDB [(none)]> grant replication slave on * . * to `user`@`db2` identified by "000000";
5:配置从节点 db2 主机同步主节点 db1
# vi /etc/my.cnf //进入配置文件
server_id = 168 #添加server_id ,注意这里的ID是唯一的,不能和master server id 一样
# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> change master to master_host='db1',master_user='user',master_password='000000'; //配置连接信息
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G; //这里会给予截图,帮助大家理解
# 查看到这两个为 YES 则从节点开启成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
6:验证主从数据库的同步功能
一:在 db1 节点上操作:
# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> create database test; //创建一个表
MariaDB [(none)]> use test //编辑它
MariaDB > create table company(id int not null primary key,name varchar(50),addr varchar(255)); //创建表字段
MariaDB > insert into company values(1,"facebook","usa"); //添加字段
MariaDB > select * from company; #查询表字段
+----+----------+------+
| id | name | addr |
+----+----------+------+
|1 | facebook | usa|
+----+----------+------+
1 row in set (0.01 sec)
二:在 db2 节点上操作:
# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
MariaDB [(none)]> select * from test.company; //显示出facebook 则成功
+----+----------+------+
| id | name | addr |
+----+----------+------+
|1 | facebook | usa|
+----+----------+------+
1 row in set (0.00 sec)
7:部署 Mycat 读写分离中间件服务
#这里我们简单介绍读写分离的作用,让大家简单理解。因为数据库的 “写” (写10000条数据到MySQL可能要3分钟),操作是比较耗时的,但数据库的“读”(从MySQL读10000条数据可能只要5秒钟)
操作比较快,所以读写分离可以解决数据库写入时影响查询效率的问题。
#这里我们在 Mycat 节点操作
# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ //将 Mycat 压缩包解压到 /usr/local/下
# chown -R 777 /usr/local/mycat/ //给予 mycat 文件所有权限
# echo export MYCAT_HOME=/usr/local/mycat/>>/etc/profile //在/etc/profile系统变量文件中添加Mycat服务的系统变量
# source /etc/profile //让配置生效
#编辑 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="192.168.200.167:3306" user="root" password="000000">
<readHost host="hostS1" url="192.168.200.168:3306" user="root" password="000000" />
</writeHost>
</dataHost>
</mycat:schema>
# chown root:root /usr/local/mycat/conf/schema.xml //修改 schema.xml 的用户权限
#编辑 Mycat 的访问用户
# vim /usr/local/mycat/conf/server.xml //进入配置文件
#编辑说明,编辑区域在 第80行,修改如下,注意下面的需要删除
<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>
# /bin/bash /usr/local/mycat/bin/mycat start //启动 Mycat 服务
# netstat -ntpl
#查看开启端口,这里我们输入命令看到开放8066端口和9066端口,则表示mycat开启成功,这里会给予截图,帮助大家理解
8:验证数据库集群服务读写分离功能
#现在 mycat 虚拟机上使用 yum 命令安装 Mariadb-client 服务
# yum install -y MariaDB-client #注意,可能会安装失败
#若安装失败使用以下方法:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash //添加仓库
# yum clean all //清除缓存
# yum repolist all //验证数据
# yum install -y MariaDB-client //再次安装就会成功
9:通过 Mycat 服务查看数据库
# mysql -h127.0.0.1 -P8066 -uroot -p000000 //连接数据库
MySQL [(none)]> use USERDB #使用数据库
MySQL [(none)]> show databases; #这里我们就可以看到有一个表
+----------+
| DATABASE |
+----------+
| USERDB |
+----------+
1 row in set (0.002 sec)
MySQL > select * from company; #使用sql查找字段,我们可以看到我们原先创建的字段 facebook
+----+----------+------+
| id | name | addr |
+----+----------+------+
|1 | facebook | usa|
+----+----------+------+
1 row in set (0.003 sec)
10:通过 Mycat 服务添加数据表
MySQL > insert into company values(2,"鸡你太美","usr"); //这里我们添加数据
Query OK, 1 row affected, 1 warning (0.012 sec)
MySQL > select * from company; //查询数据库字段,可以看到 “鸡你太美”,已经添加成功了,只不过中文显示乱码而已。
+----+----------+------+
| id | name | addr |
+----+----------+------+
|1 | facebook | usa|
|2 | ???? | usr|
+----+----------+------+
2 rows in set (0.002 sec)
11:验证 Mycat 服务对数据库读写操作的分离
# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;' //成功会显示如下图
hiabbyy 发表于 2020-8-2 19:21
留个邮箱可以吗 发一份给我
已发送 注意查收 豫A00001 发表于 2020-8-1 12:48
我这有另个版本的
留个邮箱可以吗 发一份给我869987579@qq.com 有pdf吗 或Word hiabbyy 发表于 2020-8-1 12:30
有pdf吗 或Word
我这有另个版本的 你们Linux都是装在U盘里的吗? 不然一台电脑不方便的样子 豫A00001 发表于 2020-8-3 09:38
已发送 注意查收
谢谢 收到了 豫A00001 发表于 2020-8-1 12:48
我这有另个版本的
谢谢老铁,649939036@qq.com,麻烦给我发一份 gdp123gd 发表于 2020-8-3 16:48
谢谢老铁,,麻烦给我发一份
已发送注意查收 豫A00001 发表于 2020-8-3 18:56
已发送注意查收
收到,感谢
页:
[1]
2