当前位置:   article > 正文

Mysql------集群搭建:_mysql集群搭建

mysql集群搭建

当业务繁多的时候,会不断的给单个mysql数据库进行读写操作,为了能让数据库减轻压力,我们会实现读写分裂,而读写分离的基础是基于主从复制。主数据库做写的操作,而从数据库做读的操作。

Mysql是默认支持主从复制的,不需要其他技术。

一、安装Mysql:

(1)在window上面安装:

1-1、材料准备

直接打开当前连接下载:MySQL :: Begin Your Download

当前MySQl的版本号为8.0,下载完解压之后,我们来看一下目录

这里是没有配置文件的。

所以我们需要手动去创建配置文件。my.ini

里面对应的参数为: 

 此时,现在只是安装前对所需要的材料进行准备,还不是真正的安装。

1-2、安装mysql

在mysql的bin目录下执行mysqld --initialize --console 

该命令主要是对数据库进行一个初始化操作。此时,会显示最原始的账户以及密码:

然后再执行mysqld --install 服务名,这里的服务名可写可不写,默认名称为mysql,只是为了之后在服务上面进行区分那一个数据库而已。此时mysql安装完毕!

1-3、开启mysql服务
开启mysql服务:

net start mysql

关闭mysql服务:

net stop mysql

进入mysql服务的命令模式:

在bin目录下使用mysql -u root -p 然后输入密码就进入mysql服务里面去了。

(2)在Linux上面安装:

(3) 在docker上安装。

3-1、使用docker pull mysql命令,来获取mysql的镜像。

3-2、建立三个文档,复制存储对应的配置文件,以及日志文件和数据库文档

3-3、使用docker来启动mysql容器

首先我们需要知道的是docker的mysql容器内部文件对应的位置:

log日志文件:/var/log/mysql————————日志文件存放点

conf配置文件:/etc/mysql——————————配置文件存放点。

                       /etc/mysql/my.cnf————————主配置文件!

                        /etc/mysql/conf.d ————————配置文件目录,可以更加精细化配置

                        /etc/mysql/mysql.conf.d ————————配置文件目录,可以更加精细化配置

data数据文件:/var/lib/mysql——————数据库的数据表存放点。

所以我们需要把宿主机文档与其挂载在一起,从而获得对应的文档信息。

我们此时来看以下宿主机的文档,此时data的数据为:

这里其实就是docker的mysql容器里面的信息!那为很么conf文件夹是空的咧?因为mysql原本启动的时候也是空的。所以就是空的。我们需要往里面放入配置文件。

 而配置文件应该是放在mysql/conf.d(这里本来也是空的,其实是两个文件配置目录里面的信息结合在一起变为my.cnf),此时我们需要把宿主机的挂载卷放在/etc/mysql/conf.d上面去。

此时只需要修改宿主机里面的hmy.cnf就可以了。 

3-4、安装普通mysql参见问题。
问题一:

docker里面的mysql是开启了,但是宿主机测试连接的时候连接不上。出项下列情况

 原因: 新旧版本mysql加密方式不同导致Navicat无法连接mysql

解决方案:

(1)进入mysql容器内部,查询当前mysql的用户名以及用户密码:

select host,user,plugin,authentication_string from mysql.user;

注意:host为%的话,也就是任意的地址都可以连接到mysql 

(2)此时就需要修改对应的转换类型:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

其实这里是转换root的%的密码的数据类型为字符串类型。

然后就连接得上了。

二、部署主从关系:

首先部署好两个mysql容器先,分别是mysql-master(7001),mysql-slave(7002)

(1)、配置文件

分别修改对应的配置文件(宿主机里面的,因为使用了挂载卷。)

 然后docker重启mysql容器。

(2)、主从关系建立

2-1、进入主库,创建给从库连接的用户名信息以及权限:

 GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';

2-2、查看主库的同步情况:

2-3、进入从库,配置连接主库的信息。

2-4 、从库开启读取主库的日志信息,从而同步

2-5、查看以下从库的状态:

我们来看一下那里出项了问题: 

 

因为我们是使用docker,并且我们指定的端口位置是7001.所以我们需要在创建master的时候来把端口号也修改上。

一定要全部写全,不能单独添加,单独添加的话,其他参数会恢复为默认数据。

 再次查看状态:

现在就可以了。

测试是否成功,我们使用navicat来在主表上面进行表格创建,查看以下是否同步!

完成同步! 

三、整合到springboot:

(1)导入依赖

新的技术Sharding-JDBC,这个是使用客户端直连数据库,然后再返回数据给sprinboot。

(2)修改application.yml-----定义主从数据库信息。

也是通过调整配置文件来规定主库是那个,从库是那个:

(3)修改application.yml文件

开启如果项目中存放同名的bean,后定义的bean会覆盖先定义的bean。

        

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/976113
推荐阅读
相关标签
  

闽ICP备14008679号