吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 456|回复: 15

[其他] Linux学习笔记——构建读写分离的数据库集群

[复制链接]
yangheng48 发表于 2020-8-1 12:05
环境:        节点规划如下:


主机名                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节点修改主机名:
                        [root@localhost ~]# hostnamectl set-hostname mycat
                        [root@localhost ~]# bash
                        [root@MyCat ~]#
                db1-master节点修改主机名:
                        [root@localhost ~]# hostnamectl set-hostname db1
                        [root@localhost ~]# bash
                        [root@db1 ~]#
                db2-slave节点修改主机名:
                        [root@localhost ~]# hostnamectl set-hostname db2
                        [root@localhost ~]# bash
                        [root@db2 ~]#
        二 :编辑 hosts 文件
                #三台集群虚拟机的/etc/hosts 文件配置如下,添加下面三条
                        192.168.200.166         mycat
                        192.168.200.167         db1
                        192.168.200.168         db2
        三:Yum 源配置


# 安装 JDK 环境,在 mycat 节点安装 JDK 环境:
[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
[root@mycat ~]# 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


# 关闭防火墙 (全部节点)
[root@mycat ~]# iptables -F
[root@mycat ~]# iptables -X
[root@mycat ~]# iptables -Z
[root@mycat ~]# iptables-save


2:部署 MariaDB 主从数据库集群服务
#在 db1 和 db2 节点上安装 MariaDB 服务,并开启,加入开机项目  //记得开启,否则后面初始化数据库可能会失败
[root@db1 ~]# yum install -y mariadb mariadb-server
[root@db1 ~]# systemctl start mariadby                  
[root@db1 ~]# systemctl enable mariadb


#初始化 MariaDB 数据库
[root@db1 ~]# mysql_secure_installation
选项如下
        Set root password? [Y/n] y
        New password:
        Re-enter new password:
        Password updated successfully!
        Remove anonymous users? [Y/n] y
        Disallow root login remotely? [Y/n] n
        Remove test database and access to it? [Y/n] y
        Reload privilege tables now? [Y/n] y


3:配置数据库集群主节点 (db1节点)
[root@db1 ~]# vi /etc/my.cnf
        log_bin = mysql-bin                                        //记录操作日志
        binlog_ignore_db = mysql                                //不同步 MySQL 系统数据库
        server_id = 167                                                //这里的 id 直接设置会IP地址最后的数字
[root@db1 ~]# systemctl restart mariadb                //重启服务,这样配置才会生效


4:开放主节点的数据库权限
#在节点 db1 上操作
[root@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
[root@db2 ~]# vi /etc/my.cnf                                 //进入配置文件
server_id = 168        #添加server_id ,注意这里的ID是唯一的,不能和master server id 一样
[root@db2 ~]# 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

mysql读写分离

mysql读写分离



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


        一:在 db1 节点上操作:
                [root@db1 ~]# mysql -uroot -p000000                                        //进入数据库
                MariaDB [(none)]> create database test;                                //创建一个表
                MariaDB [(none)]> use test                                                        //编辑它
                MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));        //创建表字段
                MariaDB [test]> insert into company values(1,"facebook","usa");                //添加字段
                MariaDB [test]> select * from company;        #查询表字段
                +----+----------+------+
                | id | name     | addr |
                +----+----------+------+
                |  1 | facebook | usa  |
                +----+----------+------+
                1 row in set (0.01 sec)       


        二:在 db2 节点上操作:
                [root@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 节点操作
[root@mycat ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/                        //将 Mycat 压缩包解压到 /usr/local/下
[root@mycat local]# chown -R 777 /usr/local/mycat/                                                                                                //给予 mycat 文件所有权限
[root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/>>/etc/profile                                                        //在/etc/profile系统变量文件中添加Mycat服务的系统变量
[root@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>

mycat

mycat




[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml                 //修改 schema.xml 的用户权限


#编辑 Mycat 的访问用户
[root@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>
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start                        //启动 Mycat 服务
[root@mycat ~]# netstat -ntpl                                               
#查看开启端口,这里我们输入命令看到开放8066端口和9066端口,则表示mycat开启成功,这里会给予截图,帮助大家理解
netstat.JPG

8:验证数据库集群服务读写分离功能       
#现在 mycat 虚拟机上使用 yum 命令安装 Mariadb-client 服务
[root@mycat ~]# yum install -y MariaDB-client        #注意,可能会安装失败
#若安装失败使用以下方法:
        curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash        //添加仓库
        [root@mycat ~]# yum clean all                                  //清除缓存
        [root@mycat ~]# yum repolist all                                  //验证数据
        [root@mycat ~]# yum install -y MariaDB-client          //再次安装就会成功


9:通过 Mycat 服务查看数据库
[root@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 [USERDB]> select * from company;        #使用sql查找字段,我们可以看到我们原先创建的字段 facebook
+----+----------+------+
| id | name     | addr |
+----+----------+------+
|  1 | facebook | usa  |
+----+----------+------+
1 row in set (0.003 sec)


10:通过 Mycat 服务添加数据表
MySQL [USERDB]> insert into company values(2,"鸡你太美","usr");                        //这里我们添加数据
Query OK, 1 row affected, 1 warning (0.012 sec)


MySQL [USERDB]> select * from company;                                        //查询数据库字段,可以看到 “鸡你太美”,已经添加成功了,只不过中文显示乱码而已。
+----+----------+------+
| id | name     | addr |
+----+----------+------+
|  1 | facebook | usa  |
|  2 | ????     | usr  |
+----+----------+------+
2 rows in set (0.002 sec)




11:验证 Mycat 服务对数据库读写操作的分离
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'         //成功会显示如下图
读写分离成功.JPG

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

豫A00001 发表于 2020-8-3 09:38
hiabbyy 发表于 2020-8-2 19:21
留个邮箱可以吗 发一份给我

已发送 注意查收
hiabbyy 发表于 2020-8-2 19:21
hiabbyy 发表于 2020-8-1 12:30
豫A00001 发表于 2020-8-1 12:48

我这有另个版本的
山漆海深 发表于 2020-8-1 13:59
你们Linux都是装在U盘里的吗? 不然一台电脑不方便的样子
hiabbyy 发表于 2020-8-3 14:17
豫A00001 发表于 2020-8-3 09:38
已发送 注意查收

谢谢 收到了
gdp123gd 发表于 2020-8-3 16:48
豫A00001 发表于 2020-8-1 12:48
我这有另个版本的

谢谢老铁,649939036@qq.com,麻烦给我发一份
豫A00001 发表于 2020-8-3 18:56
gdp123gd 发表于 2020-8-3 16:48
谢谢老铁,,麻烦给我发一份

已发送  注意查收
gdp123gd 发表于 2020-8-3 23:30
豫A00001 发表于 2020-8-3 18:56
已发送  注意查收

收到,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2020-8-15 15:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表