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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部署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架构没有什么好处,他往往给我们产生一种实现了负载均衡的错觉

以上是关于部署MySQL主主双向主从复制 M-M的主要内容,如果未能解决你的问题,请参考以下文章

6-MYSQL主从同步(DBA)配置

MySQL 主主复制

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

安全最重要!MySQL配置主从复制,主主复制

十四mysql主从同步结构模式

MySQL的读写分离---主从复制主主复制