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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 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;自己整理完之后,又进行了一次安装+验证工作大概半小时以内,并且也思考了如何提升到十分钟以内,以及如何也可以让任何一个同事在十分钟以内做到这个事情,我想这就是迭代的过程吧

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
27天前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
121 4
MySQL源码编译安装
|
27天前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
157 4
MySQL二进制包安装
|
27天前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
254 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
24天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
215 5
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
90 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。

推荐镜像

更多