mysql主从和mycat读写分离的安装及验证「建议收藏」

mysql主从和mycat读写分离的安装及验证「建议收藏」mysql主从和mycat读写分离的安装及验证

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、背景介绍

最近需要将公司的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
在这里插入图片描述

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;自己整理完之后,又进行了一次安装+验证工作大概半小时以内,并且也思考了如何提升到十分钟以内,以及如何也可以让任何一个同事在十分钟以内做到这个事情,我想这就是迭代的过程吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184078.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在eclipse中没有server(需在选项中设置)

    Eclipse中没有Server选项,需要加载插件。步骤如下:①在软件eclipse下的Help-&gt;InstallNewSoftware-&gt;中,在Workwith中点击Add,如下,加入Name:KeplerLocation:http://download.eclipse.org/releases/kepler②找到选项Web,XML,JavaEEan…

    2022年4月10日
    204
  • vim复制粘贴_vim如何复制粘贴

    vim复制粘贴_vim如何复制粘贴一、打开文件        执行vimtest命令打开test文件        在命令模式下输入setnu,展示文本行号二、按字符复制与粘贴        在命令行模式下输入字符v(小写),便可以进入按字符选择模式,通过h、i、j、k键移动光标选择要进行复制的字符串。        完成选择后按下y键进行复制,将鼠标移动到最后一行,按下p执行粘贴操作就完成了对选择…

    2022年4月19日
    57
  • StretchBlt和StretchDIBits

    StretchBlt和StretchDIBitsStretchBlt:从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩,如果目标设备是窗口DC,则意味着在窗口绘制位图,大致的使用代码如下:1voidDrawImage(HDChdc,HBITMAPhbm,constRECTtarget_rect)2{3HDChdcMemory=::CreateCom…

    2022年6月15日
    40
  • phpstorm2021激活码(JetBrains全家桶)

    (phpstorm2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月20日
    61
  • 基于深度学习的车辆检测系统(MATLAB代码,含GUI界面)

    基于深度学习的车辆检测系统(MATLAB代码,含GUI界面)摘要:当前深度学习在目标检测领域的影响日益显著,本文主要基于深度学习的目标检测算法实现车辆检测,为大家介绍如何利用MATLAB设计一个车辆检测系统的软件,通过自行搭建YOLO网络并利用自定义的数据集进行训练、验证模型,最终实现系统可选取图片或视频进行检测、标注,以及结果的实时显示和保存。其中,GUI界面利用最新的MATLABAPP设计工具开发设计完成,算法部分选择时下实用的YOLOv2/v3网络,通过BDD100K数据集进行训练、测试检测器效果。本文提供项目所有涉及到的程序代码、数据集等文件,完整资源。

    2022年10月15日
    0
  • hashmap面试题简书_三年php面试题

    hashmap面试题简书_三年php面试题这篇文章仅限小编个人的理解,小编不是Java方向的,只是对Java有很高的学习兴趣如果有什么不对的地方还望大佬指点HashMap的底层是数组+链表,(很多人应该都知道了)JDK1.7的是数组+链表(1.7只是一个例子,以前的话也是这样后面就以1.7为例子了)首先是一个数组,然后数组的类型是链表元素是头插法JDK1.8的是数组+链表或者数组+红黑树首先是一个数组,然后数组的类型是链表在链表的元素大于8的时候,会变成红黑树在红黑树的元素小于6的时候会变成链表元素进行尾插HaspM.

    2022年8月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号