MySQL 双主双从

0、实验拓扑


1、实验环境

4台CentOS-7.5虚拟机

Master-1:192.168.18.103

Master-2:192.168.18.104

slave-1: 192.168.18.107

slave-2: 192.168.18.108

4台虚机的防火墙+selinux均关闭


2、安装MySQL

注:4台mysql服务器均执行相同的操作:

# rpm -qa mariadb

# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

# yum  localinstall  https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

# rm  -rf  /etc/my.cnf

# yum  -y  install mysql-community-server        #安装MySQL

# systemctl  start  mysqld.service                #启动MySQL

# systemctl  enable  mysqld.service              #设置MySQL开机自启动


3、初始化MySQL

4台MySQL都要执行如下操作,本实验4台mysql的root密码都为 Ctsi.2020

1)初始化MySQL

# grep 'temporary' /var/log/mysqld.log                     #获取mysql临时登录密码

#  mysql_secure_installation                    #使用安全配置向导修改MySQL的root用户密码等操作

2)初始化完毕后,尝试登录MySQL

[root@CentOS ~]#

[root@CentOS ~]# mysql -uroot -p'Ctsi.2020'


4、修改MySQL服务器的配置文件

4台MySQL配置略有差异:

1)先配置M1

[root@CentOS ~]#

[root@CentOS ~]# vi  /etc/my.cnf   

2)接着配置M2

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# vi  /etc/my.cnf

3)再配置S1

[root@CentOS-3 ~]#

[root@CentOS-3 ~]# vi  /etc/my.cnf

4)最后配置S2

[root@CentOS-4 ~]#

[root@CentOS-4 ~]# vi  /etc/my.cnf

5)

5)创建binlog日志的存放路径并授权

注:只需要在M1和M2服务器创建就行,S1和S2没必要创建

#  mkdir  /var/lib/mysql/binlog

#  chown mysql:mysql /var/lib/mysql/binlog

6)重启MySQL

修改完配置以后一定要重启MySQL复制,使配置生效

# systemctl restart mysqld

7)查看binlog是否生成

[root@CentOS ~]#

[root@CentOS ~]# ll  /var/lib/mysql/binlog/


4、配置双主双从

1)先配置双主

思路:先配置M1为主,M2为从的环境;在配置M2为主,M1为从的环境


M1为主,M2为从:

[root@CentOS ~]#

[root@CentOS ~]# mysql  -uroot  -p'Ctsi.2020'

mysql>

mysql> show  databases;

mysql>

mysql> grant  replication  slave  on  *.*  to  repluser@192.168.18.104  identified  by 'Mysql.2020';   

#授权repluser账户可以通过从服务器 192.168.18.104 来登录主服务器并复制主服务器的所有库和所有表

mysql> flush privileges;                            #刷新授权表

[root@CentOS ~]#

[root@CentOS ~]# mysqldump -uroot -p'Ctsi.2020' --all-databases --single-transaction > /tmp/mysql_full-1.sql                                                         #从M1导出一个全备

[root@CentOS ~]# ll  /tmp/mysql_full-1.sql 

[root@CentOS ~]#

[root@CentOS ~]# scp  /tmp/mysql_full-1.sql root@192.168.18.104:/tmp/                        #将M1服务器的第一次全备拷贝到从服务器M2

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# mysql  -uroot  -p'Ctsi.2020'  <  /tmp/mysql_full-1.sql               #去M2端将从M1那里拷贝过来的全备文件还原到M2数据库中,从而实现M1与M2两端数据一致

mysql>

mysql> show  master  status;                     #去M1端查看主服务器数据库的状态并记住

说明:这个状态非常重要,后面从机同步的时候要用到,所以要记住

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# mysql  -uroot  -p'Ctsi.2020'                            #登录M2端数据库,设置主从复制

mysql>

mysql> change master to

    -> master_host='192.168.18.103',

    -> master_user='repluser',

    -> master_password='Mysql.2020',

    -> master_log_file='M1-binlog.000001',

    -> master_log_pos=616;

Query OK, 0 rows affected, 2 warnings (0.11 sec)

mysql>

mysql>

mysql> start  slave;                                  #在M2端执行,启动slave同步进程

Query OK, 0 rows affected (0.00 sec)

mysql>

mysql> show slave status\G                         #查看slave状态



M2为主,M1为从:

理解:接下来还应该在原来的M1主节点上创建新的用户

(※理解这点很重要,因为前面刚刚已经设置好了主从配置,所以在M1节点上创建会自动同步至M2上,如果在M2上创建用户,则可能会导致两节点数据不一致情况发生)

mysql>

mysql> grant replication slave on *.* to repluser@192.168.18.103 identified by 'Mysql.2020';

# 授权repluser账户可以通过从服务器 192.168.18.103 来登录主服务器并复制主服务器的所有库和所有表

mysql> flush  privileges;                    #刷新授权表

mysql>

mysql> show  master  status;                           #去M2端查看主数据库服务器的状态

在M1端,设置主从复制

mysql>

mysql> change master to

    -> master_host='192.168.18.104',

    -> master_user='repluser',

    -> master_password='Mysql.2020',

    -> master_log_file='M2-binlog.000001',

    -> master_log_pos=831730;

Query OK, 0 rows affected, 2 warnings (0.03 sec)

mysql> 

mysql>

mysql> start  slave;                       #在M1端启动slave同步进程    

Query OK, 0 rows affected (0.04 sec)

mysql>

mysql> show  slave  status\G            #查看slave的状态


2)配置M1-S1单主单从

[root@CentOS ~]#

[root@CentOS ~]# mysql  -uroot  -p'Ctsi.2020'                #登录M1设置

mysql>

mysql> grant replication slave on *.* to repluser@192.168.18.107 identified by 'Mysql.2020'; 

mysql> flush privileges;

[root@CentOS ~]#

[root@CentOS ~]# mysqldump -uroot -p'Ctsi.2020' --all-databases --single-transaction > /tmp/mysql_full-2.sql                              #M1导出第二个全备文件

[root@CentOS ~]#

[root@CentOS ~]# scp /tmp/mysql_full-2.sql  root@192.168.18.107:/tmp/                 #将第二个全备从M1拷贝到S1

[root@CentOS-3 ~]#

[root@CentOS-3 ~]# mysql -uroot -p'Ctsi.2020'  <  /tmp/mysql_full-2.sql             #去S1端,将从M1拷来的全备文件恢复到S1的数据库中,实现M1与S1数据一致性

mysql>

mysql> show  master  status;                       #查看M1主数据库的状态

在S1端设置主从同步

mysql>

mysql> change master to

    -> master_host='192.168.18.103',

    -> master_user='repluser',

    -> master_password='Mysql.2020',

    -> master_log_file='M1-binlog.000001',

    -> master_log_pos=1540;

Query OK, 0 rows affected, 2 warnings (0.23 sec)

mysql>

mysql>  start  slave;                   #在S1端开启主从同步

Query OK, 0 rows affected (0.17 sec)

mysql>

mysql> show slave status\G                       #查看slave的状态


3)  配置M2-S2单主单从

在M2端操作:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# mysql  -uroot  -p'Ctsi.2020'

mysql>

mysql> grant replication slave on *.* to repluser@192.168.18.108 identified by 'Mysql.2020';    

# 授权repluser账户可以通过从服务器 192.168.18.108 来登录主服务器并复制主服务器的所有库和所有表

mysql> flush  privileges;                      #刷新授权表    

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# mysqldump -uroot -p'Ctsi.2020' --all-databases --single-transaction > /tmp/mysql_full-3.sql                                     #对M2做一个全备并导出

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# scp /tmp/mysql_full-3.sql  root@192.168.18.108:/tmp/                #在M2端将导出的全备文件远程拷贝到S2端

[root@CentOS-4 ~]#

[root@CentOS-4 ~]# mysql -uroot -p'Ctsi.2020'  <  /tmp/mysql_full-3.sql            #去S2端,将从M2端拷来的全备文件恢复到S2数据库中,实现M2和S2两端数据一致

mysql>

mysql> show master status;               #去M2端查看主数据库的状态

在S2端设置主从复制

mysql>

mysql> change master to

    -> master_host='192.168.18.104',

    -> master_user='repluser',

    -> master_password='Mysql.2020',

    -> master_log_file='M2-binlog.000001',

    -> master_log_pos=832654;

Query OK, 0 rows affected, 2 warnings (0.30 sec)

mysql>

mysql> start  slave;                       #启动主从复制

mysql>

mysql> show slave status\G                     #查看slave的状态


5、双主双从验证

在M1上创建一个名为China的数据库,然后分别去 M2、S1、S2 上去查看是否同步过去

M1端执行:

mysql>

mysql> create database china;

Query OK, 1 row affected (0.15 sec)

mysql>

mysql> show databases;

M2端查看:

S1端查看:

S2端查看:


6、实验结论

经测试,MySQL双主双从结构搭建完成,且数据同步正常

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容