mysql主从和mycat读写分离的安装及验证

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 最近需要将公司的d、t、p环境的mysql集群做梳理工作,所以就促使了自己对于mysql主从以及mycat读写分离的安装做了如下总结

一、背景介绍


最近需要将公司的d、t、p环境的mysql集群做梳理工作,所以就促使了自己对于mysql主从以及mycat读写分离的安装做了如下总结


二、安装mysql数据库(主从机器都需要先这样安装)


1、查看系统中是否自带安装mysql


yum list installed | grep mysql


2、删除系统自带的mysql及其依赖(防止冲突)

yum -y remove mysql-libs.x86_64


3、安装wget命令

yum install wget -y


4、给CentOS添加rpm源,并且选择较新的源

wget dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm


5、安装下载好的rpm文件

yum install mysql-community-release-el7-5.noarch.rpm -y


6、安装成功之后,会在/etc/yum.repos.d/文件夹下增加两个文件

cd /etc/yum.repos.d/


7、mysql-community.repo文件可做适当修改,根据需求来定就好,不修改默认也行


8、使用yum安装mysql

yum install -y mysql-server


9、启动mysql服务

service mysqld start

查看临时登录密码:cat /var/log/mysqld.log | grep password


10、登录mysql(如果使用临时登录密码登录还不上的话:vi /etc/my.cnf 文件中加入一行skip-grant-tables登录的时候就可以不用密码了)

mysql -uroot -p


输入上面查询到的临时登录密码


11.修改密码(在 mysql> 这样的状态下执行如下命令)


alter user user() identified by “XXX你的密码”;


授权:

GRANT ALL PRIVILEGES ON . TO ‘root’@'%'IDENTIFIED BY ‘XXX你的密码’ WITH GRANT OPTION;


修改密码:

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘XXX你的密码’;


查询一下user表查看是否修改成功:

select user,host from user where user=‘root’;


成功之后再次更新一下权限:

flush privileges;


12、开放3306这个端口号

查看想开的端口是否已开:firewall-cmd --query-port=3306/tcp

添加指定需要开放的端口:firewall-cmd --add-port=3306/tcp --permanent

重载入添加的端口:firewall-cmd --reload

查询指定端口是否开启成功:firewall-cmd --query-port=3306/tcp


三、主从机配置


1、主服务器进行如下操作


1.1.修改配置文件,编辑配置文件命令

vim /etc/my.cnf

1.2.增加如下内容(esc wq! 保存文件):


#配置MySQL主从复制
log-bin=mysql-bin
#和从服务要区分开就好
server-id=60252
#设置同步库
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
#mode规则
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#配置federated存储引擎(支持外链表,如果业务没用到也可以不加这个配置)
federated
#忽略表中名称的大小写
lower_case_table_names=1
#配置默认编码为utf8
character_set_server=utf8
init_connect=‘SET NAMES utf8’


1.3.重启主服务器的mysqld服务

service mysqld restart

1.4.登录mysql数据库

mysql -uroot -p

1.5.查看master的状态(执行后,Position 下的值记录下来,用作从机首次拉取文件)

show master status;


2、从服务器进行如下操作


2.1.修改配置文件,编辑配置文件命令

vi /etc/my.cnf


2.2.增加如下内容(esc wq! 保存文件):


#配置MySQL主从复制
log-bin=mysql-bin
server-id=60251
#启用中继日志文件
relay-log=mysql-relay
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
#mode规则
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#配置federated存储引擎(支持外链表,如果业务没用到也可以不加这个配置)
federated
#忽略表中名称的大小写
lower_case_table_names=1
#配置默认编码为utf8
character_set_server=utf8
init_connect=‘SET NAMES utf8’


2.3.重启从服务器并进行相关配置

service mysqld restart


2.4.登录mysql

mysql -uroot -p


2.5.配置从服务器登录主服务器的账号授权

2.5.1.授权操作

grant replication slave on . to ‘root’@‘%’ identified by ‘XXX你的密码’;


2.5.2.刷新权限

flush privileges;


2.6.连接主服务器首次同步(“主服务器ip”、“XXX你的密码”、"步骤1.5.中主机查询出来的值"都需要修改)

change master to master_host=‘主服务器ip’,master_user=‘root’,master_password=‘XXX你的密码’,master_port=3306,master_log_file=‘master-bin.000001’,master_log_pos=步骤1.5.中主机查询出来的值;


2.7.启动slave

start slave;


2.8.slave备用命令

停止slave

stop slave;

#设置slave(用来清除残留文件)

reset slave;


2.9.查看slave的状态(注意这个命令最后没有分号;Slave_IO_Running: Yes Slave_SQL_Running: Yes,显示这两个状态为Yes表示正常)

show slave status\G


四、代理服务器安装和配置mycat读写分离


1.如下地址查找版本号:

http://dl.mycat.org.cn

2.下载mycat的安装包

wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

3.解压

tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz


4.配置文件修改(参考)

conf/schema.xml


<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="库名" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" >
        </schema>
        <dataNode name="dn1" dataHost="mycatip" database="库名" />
        <dataHost name="mycatip" 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="masterip" url="masterip:3306" user="root" password="XXX">
                        <readHost host="slaveip" url="slaveip:3306" user="root" password="XXX" ></readHost>
                </writeHost>
        </dataHost>
</mycat:schema>


conf/server.xml


e5695a8ff1d74249a4dbec901e65d029.png


5.启动mycat

…/bin/mycat start

…/bin/mycat stop


6.查看是否启动成功

ps aux|grep mycat


7.开通mycat的8066端口号

查看想开的端口是否已开:firewall-cmd --query-port=8066/tcp

添加指定需要开放的端口:firewall-cmd --add-port=8066/tcp --permanent

重载入添加的端口:firewall-cmd --reload

查询指定端口是否开启成功:firewall-cmd --query-port=8066/tcp


五、主从复制、读写分离的验证(小编这里使用的navicat进行的链接验证)


1.主服务器执行库、表创建,查看从库是否同步(具体命令不再赘述)


2.主服务器执行数据的增、删、改查看从库是否同步(具体命令不再赘述)


3.主从服务器中执行如下语句,临时打开日志文件以便于查看执行的sql语句

SET GLOBAL general_log=ON;//打开数据库的日志功能

SHOW VARIABLES LIKE ‘log_output’; //这是为了查看log_output是什么输出方式,默认是file

SET GLOBAL log_output=‘TABLE’;//这里我们修改成数据表的输出方式。


4.mycat服务器进行数据的增、删、改、查操作(具体命令不再赘述)


5.主服务器查看是否只有增、删、改语句

SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100


6.从服务器查看是否只有查语句

SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100


六、总结


1.通过将这些命令组成脚本来提高效率

2.通过镜像+文件修改的脚本来提高效率

3.过程中明确操作的每一项的边界,其中涉及到的带分号的命令,和不能带分号的命令,以及它们为什么是这样的思考?

4.验证的边界,以及验证的对应脚本

5.自己的这些操作还需要再明确和梳理每一个配置的意义,以及每一步操作步骤的意义


七、升华


第一次安装借助同事的简易文档,一边梳理一边安装大概历史2h;自己整理完之后,又进行了一次安装+验证工作大概半小时以内,并且也思考了如何提升到十分钟以内,以及如何也可以让任何一个同事在十分钟以内做到这个事情,我想这就是迭代的过程吧

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
22 3
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
16 2
|
9天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
46 2
|
27天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
104 6
|
24天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
57 3
Mysql(4)—数据库索引
|
27天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
62 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
13天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
54 4
|
18天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
22天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
95 4