部署MySQL主主双向主从复制 M-M

通过MySQL主主:进行MySQL双向同步数据库HA的配置

配置node-1
它有两种身份:
身份1: node-1的主。 身份2: node-2的从。

安装MySQL 5.7版本
上传mysql-5.7.tar.gz到Linux主机上,并解压:
注:mysql-5.7.tar.gz 中包括了安装mysql5.7主要的软件包。 这样部署起来更方便
下载并解压安装
[[email protected] ~]# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

[[email protected] ~]# tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
[[email protected] ~]# yum -y ×××tall ./mysql*.rpm
启动mysql 服务
[[email protected] ~]# systemctl start mysqld
在MySQL的配置文件/etc/my.cnf 中关闭密码强度审计插件,并重启MySQl服务。
[[email protected] ~]# vim /etc/my.cnf

#修改MySQL的配置文件,在[myqld]标签处末行添加以下项:
validate-password=OFF #不使用密码强度审计插件
重启mysql 服务
[[email protected] ~]# systemctl restart mysqld
获取临时密码
[[email protected] ~]# grep ‘password‘ /var/log/mysqld.log
2019-06-14T06:14:33.154120Z 1 [Note] A temporary password is generated for [email protected]: fhcJfqoV>3fN

使用临时密码登陆
#使用临时密码登录MySQl,注意临时密码要引号

[[email protected] ~]# mysql -u root -p‘fhcJfqoV>3fN‘
修改root 密码
mysql> set password for [email protected] = password(‘123456‘);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
修改node-1主配置文件

[[email protected] ~]# vim /etc/my.cnf
server-id = 1
log-bin=mysql-bin-master
binlog-do-db=HA
binlog-ignore-db=mysql #避免同步MySQL用户 相关配置

重启服务

[[email protected] ~]# systemctl restart mysqld
登陆mysql
[[email protected] ~]# mysql -u root -p123456
mysql> show master status;

授权
mysql> grant replication slave on . to [email protected]‘192.168.150.%‘ identified by ‘123456‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)

#########################################################################################################################
注意:如果不符合密码要求修改如下(5.7版本)
方法一:
mysql> set global validate_password_policy=0; #定义复杂度
mysql> set global validate_password_length=1; #定义长度 默认是8
mysql> grant replication slave on . to [email protected]‘192.168.150.%‘ identified by ‘123456‘;
mysql> flush privileges; #记得刷新授权表

方法二:
关闭密码强度审计,在my.cnf添加validate-password=off
mysql> grant replication slave on . to [email protected]‘192.168.150.%‘ identified by ‘123456‘;
mysql> flush privileges; #记得刷新授权表

#########################################################################################################################

配置node-2服务器
安装MySQL 5.7版本
[[email protected] ~]# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

[[email protected] ~]# tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

[[email protected] ~]# yum -y ×××tall ./mysql*.rpm

启动mysql
[[email protected] ~]# systemctl start mysqld

在MySQL的配置文件/etc/my.cnf 中关闭密码强度审计插件,并重启MySQl服务

[[email protected] ~]# vim /etc/my.cnf
validate-password=OFF #不使用密码强度审计插件
重启mysql
[[email protected] ~]# systemctl restart mysqld

获取临时密码

[[email protected] ~]# grep ‘password‘ /var/log/mysqld.log
2019-06-14T06:31:48.683960Z 1 [Note] A temporary password is generated for [email protected]: w/Sf8qeZw%)K

#使用临时密码登录MySQl,注意临时密码要引号

[[email protected] ~]# mysql -u root -p‘w/Sf8qeZw%)K‘

修改root密码
mysql> set password for [email protected] = password(‘123456‘);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

编辑MySQL从服务配置文件

[[email protected] ~]# vim /etc/my.cnf
server-id = 2
log-bin=mysql-bin-slave
binlog-do-db=HA
binlog-ignore-db=mysql

[[email protected] ~]# systemctl restart mysqld
先测试一下从帐号登陆是否正常
[[email protected] ~]# mysql -u slave -p123456 -h 192.168.150.140
出现以下界面表示从服务器登陆到192.168.150.140 主服务器上成功

##########################################################################################################################
然后作主授权给从node-1
[[email protected] ~]# mysql -uroot -p123456

mysql> grant replication slave on . to [email protected]‘192.168.150.140‘ identified by ‘123456‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)

#########################################################################################################################

注意:如果不符合密码要求修改如下(5.7版本)
方法一:
mysql> set global validate_password_policy=0; #定义复杂度
mysql> set global validate_password_length=1; #定义长度 默认是8
mysql> grant replication slave on . to [email protected]‘192.168.1.%‘ identified by ‘123456‘;
mysql> flush privileges; #记得刷新授权表

方法二:
关闭密码强度审计,在my.cnf添加validate-password=off
mysql> grant replication slave on . to [email protected]‘192.168.1.63‘ identified by ‘123456‘;
mysql> flush privileges; #记得刷新授权表
#########################################################################################################################
以下配置在node-2 上做授权和配置

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host=‘192.168.150.140‘,master_user=‘slave‘,master_password=‘123456‘;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G

再回来配置node-1

先测试一下从帐号登陆是否正常?
[[email protected] ~]# mysql -u slave -p123456 -h 192.168.150.141

出现以下界面表示为成功

![]

配置node-1 数据库
mysql> change master to master_host=‘192.168.150.141‘,master_user=‘slave‘,master_password=‘123456‘;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
在node-1上查看状态

mysql> show slave status\G

在node-1插入数据在node-2上查看

mysql> create database HA;
Query OK, 1 row affected (0.00 sec)

mysql> use HA;
Database changed
mysql> create table T1(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)

mysql> ×××ert into T1 values(1,‘hello‘);
Query OK, 1 row affected (0.02 sec)

node-2 查看数据
mysql> select * from HA.T1;

在node-2上插入数据,node-1上查看

mysql> select * from HA.T1;


注意:这种M-M架构没有什么好处,他往往给我们产生一种实现了负载均衡的错觉

原文地址:https://blog.51cto.com/xia1314520ting/2409060

时间: 2024-10-23 13:53:45

部署MySQL主主双向主从复制 M-M的相关文章

CentOS 7 部署MySQL 5.7(主从复制,传统方式及GTID)

记录?(^?^*) 1.二进制文件和位置的复制:2.基于全局事物标识符(GTID)两种方式的主从复制:(测试环境为CentOS 7.3) 一.基于二进制日志文件(传统方式) (1).工作原理: 1.Master把数据库操作记录到Binary log,并发送给Slave的I/O线程: 2.Slave的I/O线程把接收到Binary log存储到本地的Relay log: 3.Slave的SQL线程从Relay log读取信息并在本地更新: (2).具体配置 主数据库(Master,192.168.

部署mysql集群基础环境

设置slave2为master1从:部署集群基础环境 1.1 问题 本案例要求为MySQL集群准备基础环境,完成以下任务操作: 数据库授权 部署MySQL双主多从结构 配置本机hosts解析记录 1.2 方案 使用4台RHEL 6虚拟机,如图-1所示.其中192.168.4.10.192.168.4.11作为MySQL双主服务器,192.168.4.12.192.168.4.13作为主服务器的从服务器. 图-1 1.3 步骤 实现此案例需要按照如下步骤进行. 步骤一:准备环境 [[email p

MySQL 主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起

MySQL 5.7.17主从复制实战(一主多从)

MySQL 5.7.17主从复制实战(一主多从) 主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制. 复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容: 2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程.返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master

MySQL高可用MHA部署 (一主二从)

MHA介绍: MHA是一套MySQL故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性.MHA部署简单,也需要额外的服务器开销,运行MHA时对数据服务器性能几乎没有影响,也不需要对现有架构做调整. 同时MHA还支持主库在线切换,能够安全地将现在的主库切到新的主库,只会对写操作有0.5~2s的阻塞,对读没有影响. MHA有以下功能,对有高可用,数据一致性,主库不停机维

MySQL双主+keeplived安装部署说明

MySQL双主+keeplived安装部署说明 一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 8306 172.16.210.183 2 mysql mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz my2 172.16.210.181 8306 3 keeplived keepalived-1.2.7.tar.g

Docker实现MySQL主从复制(主主复制同理)

因为最近在学习MySQL,看到很多地方有"分库分表","读写分离"的字眼,就想尝试一下吧! 首先,因为本人经济能力有限,买不起那么多服务器,所以就借用Docker来搭建虚拟机来作为两台服务器. 一.准备主从服务器 1.创建主服务器 $docker run -it --name=mysql_master ubuntu:14.04 /bin/bash 2.创建从服务器 $docker run -it --name=mysql_slave ubuntu:14.04 /bi

MySQL 主从复制、主主复制、半同步复制

MySQL 复制 =============================================================================== 概述: =============================================================================== MySQL Replication:   1.主从复制的目的和架构 ★Master/Slave(主/从) Master: write/read Slave

MySQL数据的主从复制、半同步复制和主主复制详解

一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环