IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> MyCat2双主双从读写分离 -> 正文阅读

[系统运维]MyCat2双主双从读写分离

双主双从+mycat读写分离



思路

主机职责
192.168.100.12master1
192.168.100.11slave1
192.168.100.13master2
192.168.100.10slave2

1,先完成主从复制
在这里插入图片描述
一共四次同步
2.配置mycat完成读写分离


一、环境准备

1.mysql安装(4台都要)

mysql8.0安装:(本次搭建使用8.0)

wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum install mysql80-community-release-el7-7.noarch.rpm  -y
yum install mysql-community-server -y

mysql5.7安装:

 #选择默认安装的版本  默认的是8.0 版本
 #安装 YUM 管理工具包,此包提供了 yum-config-manager 命令工具
yum install mysql80-community-release-el7-7.noarch.rpm  -y
yum install yum-utils -y
yum-config-manager  --disable  mysql80-community
yum-config-manager  --enable  mysql57-community
yum install mysql-community-server -y
yum repolist enabled | grep mysql # 检查安装是否正确

在这里插入图片描述
2.初始化

#启动mysqld 服务端
systemctl start mysqld
#查看是否启动
systemctl status mysqld

初始化 MySQL服务器初始化(从MySQL 5.7开始)
在 MySQL 服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:
MySQL 服务器已初始化。
在数据目录中生成SSL证书和密钥文件。
安装并启用该 validate_password 插件。
将创建一个超级用户
帐户’root’@‘localhost’。并会设置超级用户的密码,将其存储在错误日志文件/var/log/mysqld.log中


grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述

mysql -uroot -p'.1Y!IhLxqyi1'
# 出现以下错误的原因是需要修改初始化密码
1. show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

2. alter user   root@localhost   identified  by  '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

#太过简单的密码会失败,因为不满足密码复杂度的要求

# 修改密码
1. alter user   root@localhost   identified  by  'MySQL@666';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限
2.  FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# 要设置比较简单的密码就需要取消密码复杂度,编辑 /etc/my.cnf配置文件, 在 [mysqld]配置块儿中添加如下内容(企业生成环境不建议使用这种配置)
plugin-load=validate_password.so 
validate-password=OFF

远程连接

远程登录还需要授权远程登录 Mysql默认不允许远程登录,我们需要设置关闭selinux或者防火墙,不关防火墙就开放3306端口;

# 允许本地用户链接
1. grant all privileges on *.* to root@localhost identified by '密码';
 Query OK, 0 rows affected, 1 warning (0.00 sec)
# 允许任意IP连接
2. grant all privileges on *.* to root@'%' identified by '密码';
 Query OK, 0 rows affected, 1 warning (0.00 sec)

添加开放3306端口的iptables规则

iptables -t filter -I INPUT -p tcp --dport 3306 -j ACCEPT

(新增说明)卸载已经安装的MySQL

//rpm包安装方式卸载
查包名:rpm -qa|grep -i mysql
删除命令:rpm -e –nodeps 包名
 
//yum安装方式下载
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
查看mysql的其它依赖:rpm -qa | grep -i mysql
3.卸载原库防止影响换版本
rm -rf /usr/lib/mysql

二、配置主从复制

master1配置

#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema
#设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是 1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1

slave1配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=2             #新增
relay-log=mysql-relay   #新增

master2配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=3
log-bin=mysql-bin
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema
binlog_format=STATEMENT
log-slave-updates
auto-increment-increment=2
auto-increment-offset=2

slave2配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=4             #新增
relay-log=mysql-relay   #新增
**两台master需要分别为两台slave建立从机复制的账户,也应考虑两台master互为主从的情况。**
```perl
#在主机MySQL里执行授权命令
CREATE USER 'slave2'@'%' IDENTIFIED BY '123123';
GRANT REPLICATION SLAVE ON *.* TO 'slave2'@'%'; #此语句必须执行。否则见下面。
ALTER USER 'slave2'@'%' IDENTIFIED WITH mysql_native_password BY '123123';
#查询Master1的状态 记录下两台master的状态。
show master status;
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址', MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
验证主从复制是否生效
1.在master1上创建库和表
2.在master2上插入数据
3.分别在四个库查看是否有数据 有则配置成功没有则配置失败

三,Mycat2 读写分离配置

cd /usr/local/mycat/conf/datasources/
cp prototypeDs.datasource.json master01.datasource.json
{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE", 
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"master01",           #需要修改
        "password":"123456",               
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.100.12:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", #查看连接的是否为你创建的数据库
        "user":"root",
        "weight":0
cp prototypeDs.datasource.json master02.datasource.json
 {
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE", 
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"master02",           #需要修改
        "password":"123456",               
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.100.13:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", #查看连接的是否为你创建的数据库
        "user":"root",
        "weight":0
cp prototypeDs.datasource.json slave01.datasource.json

配置如下

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE", 
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"slave01",           #需要修改
        "password":"123456",               
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.100.11:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", #查看连接的是否为你创建的数据库
        "user":"root",
        "weight":0
}
cp prototypeDs.datasource.json slave02.datasource.json
{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE", 
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"slave02",       #需要修改
        "password":"123456",                
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.100.10:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", #查看连接的是否为你创建的数据库
        "user":"root",
        "weight":0
}
vim /usr/local/mycat/conf/clusters/mycluster.cluster.json #创建一个文件  

[配置如下]

{
        "clusterType":"GARELA_CLUSTER",
	"heartbeat":{
                "heartbeatTimeout":1000,
                "maxRetry":3,
                "minSwitchTimeInterval":300,
                "slaveThreshold":0
        },
        "masters":[
                "master01","master02"    
        ],
        "replicas":["slave01","slave02"],
        "maxCon":2000,
        "name":"mycluster",        
        "readBalanceType":"BALANCE_ALL",
        "switchType":"SWITCH"
}
vim /usr/local/mycat/conf/schemas/mydb1.schema.json
{
	"customTables":{},
	"globalTables":{},
	"normalProcedures":{},
	"normalTables":{},
	"schemaName":"mydb1",
	"shardingTables":{},
	"targetName":"mycluster",
	"views":{}
}

重启mycat2

/usr/local/mycat/bin/mycat start
ss -tunlp #查看是否有端口8066
mysql -uroot -p123456 -h 192.168.100.12 -P8066 #进入mycat数据库
mysql> show databases;
+--------------------+
| `Database`         |
+--------------------+
| information_schema |
| mydb1              |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.01 sec)

mysql> use mydb1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into mytb1 values (2,@@hostname);

查看各库的的数据情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 01:04:54  更:2022-09-21 01:07:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:02:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码