操作环境:Windows 10 专业版 64位
MySQL版本:安装企业中主流版本MySQL 5.7,并且采用5.7.24目前最新版本(截止2018/12/7官方更新)
一、设计内容
数据库高可用架构的实现(通过多台服务器协同合作来解决单点故障)
二、需求分析
1、问题描述
随着数据库的数据量日益增大,人们对数据的安全性越来越重视,单机的处理能力已经无法满足需求,此项目就是为了满足数据库的高可用和高并发。
2、基本要求
- 掌握数据库基本SQL语句
- 熟悉常用对象的创建和使用:索引、约束、视图、用户、权限
- 熟练搭建数据库集群架构
三、设计拓扑图
四、详细设计
1、软件包解压
解压数据库软件安装包
2、配置环境变量
右键单击我的电脑->属性->高级系统设置(高级)->环境变量
选择“系统变量”中的Path
在变量值中添加变量值:D:\mysql\bin(红色部分改为自己的解压路径)
注意是在原有变量值后面加上这个变量,用;隔开,不能删除原来的变量值,win10请忽视,直接新建就好。
如下图显示的:
3、准备配置文件
因为我们是2主2从共4套库,所以要准备4个配置文件。
如下是4个配置文件名称以及文件中的内容
4、初始化所有数据库
以管理员身份运行cmd,这一点很重要,进入到mysql的解压目录bin下。
我的数据库在集群搭建的项目中是安装在D:\mysql中
D:\mysql\bin>mysqld –defaults-file=D:\mysql\my3306.ini –initialize-insecure
D:\mysql\bin>mysqld –defaults-file=D:\mysql\my3307.ini –initialize-insecure
D:\mysql\bin>mysqld –defaults-file=D:\mysql\my3308.ini –initialize-insecure
D:\mysql\bin>mysqld –defaults-file=D:\mysql\my3309.ini –initialize-insecure
5、启动所有数据库
先把它们都添加到服务中,分别运行
D:\mysql\bin>mysqld install mysql3306 –defaults-file=D:\mysql\my3306.ini
D:\mysql\bin>mysqld install mysql3307 –defaults-file=D:\mysql\my3307.ini
D:\mysql\bin>mysqld install mysql3308 –defaults-file=D:\mysql\my3308.ini
D:\mysql\bin>mysqld install mysql3309 –defaults-file=D:\mysql\my3309.ini
运行后分别出现Service successfully installed.即将安装成功。
启动数据库
D:\mysql \bin>net start my3306
D:\mysql \bin>net start my3307
D:\mysql \bin>net start my3308
D:\mysql \bin>net start my3309
6、主库1查看binlog位置
选3306为主库1数据库
mysql> show master status;
7、主库1创建用户
D:\mysql \bin>mysql -uroot -P3306
mysql> create user slave@localhost identified by ‘mysql‘;
mysql> grant replication slave on *.* to slave@localhost;
8、主库2操作
选3307端口的为主库2数据库
D:\mysql \bin>mysql -uroot -P3307
mysql> change master to master_host=’localhost‘,master_user=’slave‘,master_password=’mysql‘,master_
port=3306,master_log_file=’mysql-bin.000002‘,master_log_pos=780;
mysql> start slave;
9、从库1操作
我们选3308端口的为从库1,操作和主库2一样
D:\mysql \bin>mysql -uroot -P3308
mysql> change master to master_host=’localhost‘,master_user=’slave‘,master_password=’mysql‘,master_
port=3306,master_log_file=’mysql-bin.000002‘,master_log_pos=780;
mysql> start slave;
10、从库2操作
我们选3309端口的为从库2,操作也和主库2一样
D:\mysql \bin>mysql -uroot -P3309
mysql> change master to master_host=’localhost‘,master_user=’slave‘,master_password=’mysql‘,master_
port=3306,master_log_file=’mysql-bin.000002‘,master_log_pos=780;
mysql> start slave;
11、主库2操作双主
现在我们让主库2(port=3307)也做为主,查看它自己的binlog位置
D:\mysql \bin>mysql -uroot -P3307
mysql> show master status;
12、主库1操作
D:\mysql \bin>mysql -uroot -P3306
mysql> change master to master_host=’localhost‘,master_user=’slave‘,master_password=’mysql‘,master_
port=3307,master_log_file=’mysql-bin.000002‘,master_log_pos=617;
Query OK, 0 rows affected, 2 warnings (0.72 sec)
mysql> start slave;
五、功能测试
1、预测结果
在主库1上执行交易,会同步到主库2,从库1和从库2上
在主库2上执行交易,也会同步到主库1,从库1和从库2上
2、验证测试结果
测试前四个数据库中数据的情况
现在在主库1上执行 create database db123,然后查看其它3个是否在同步
现在在主库2上执行 create database db222,然后也查看其它3个是否在同步
mysql> create database db222;
Query OK, 1 row affected (0.14 sec)
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
暂无评论内容