昊鼎王五:如何十分钟内在CentOS7上快速搭建集群mysql双主+keepavlied实现漂移、高可用服务之2:构建主主(互为主从)同步关系

#昊鼎王五:如何十分钟内在CentOS7上快速搭建集群mysql双主+keepavlied实现漂移、高可用服务之2:构建主主(互为主从)同步关系

在上一篇文章《昊鼎王五:如何十分钟内在CentOS7上快速搭建集群mysql双主+keepavlied实现漂移、高可用服务之1:快速编译安装mysql》(https://blog.csdn.net/haoding205/article/details/81410199)我们中已经实现了MYSQL的安装,而且已经能用root用户登录了。本节主要讲“如何构建MYSQL主主同步关系”

为了让脉络清晰,阅读方便,本篇的重点内容是:“2:构建主主(互为主从)同步关系”。
这里写图片描述
#mysql主主(互为主从)复制

#一、前言:数据库复制 replication 的实现原理
q.1:主服务器凡运行语句,都产生一个二进制日志 binlog
q.2:从服务器不断读取主服务器的 binlog
q.3:从服务器将读取到的binlog转换为自身可执行的 relaylog,
q.4:从服务器执行relaylog

#二、实现步骤 :
s.1:首先确保主服务器打开二进制日志功能 .
s.2:从服务器也需要开启二进制日志和 relay日志功能.
s.3:在主服务器建立一个从服务器的账号 ,并授予复制的权限.
s.4:在从服务器指定对应的主服务器 ,开启从服务.

#三、具体实施:
假设:
node1机器:192.168.1.203
node2机器:192.168.1.204

##1. 准备工作
1.1 确保防火墙没有阻挡双方之间的通信,保证3306端口互通 。
1.2 同步两台服务器的时间
1.3 同步两台服务器之间的数据,如果是未上线的服务器,可以省略此步

##2、配置文件/etc/my.cnf核心设置:

server-id = 1     #给服务器起一个唯一的id,node2这台设置2,不能重复
binlog-ignore-db = mysql,information_schema #忽略写入binlog日志的库
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 1 #初始字段ID为1
slave-skip-errors = all #忽略所有复制产生的错误
log-slave-updates #很重要,从前一台机器上同步过来的数据才能同步到下一台机器
auto_increment_increment和auto_increment_offset用于主服务器-主服务器(master-to-master)复制,控制自增列
AUTO_INCREMENT的行为,用于MASTER-MASTER之间的复制,防止出现重复值

vim /etc/my.cnf --文末可以下载
cat /etc/my.cnf
这里写图片描述

##3. 在node1服务器上创建复制账号,给到node2服务器使用,并做最小授权。
root@haoding hd205]# mysql -uroot -p

mysql> grant replication slave on *.* to replication@'192.168.1.204' identified by 'password';
mysql> flush privileges;
mysql> commit;

配置用户完成。

##4. 记录下node1服务器当前的二进制日志的文件名和位置(作用:给到下一步使用)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 2566 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

##5. 在Node2服务器上通过语句指定要复制的主服务器

mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.203',
-> MASTER_USER='replication',
-> MASTER_PASSWORD='password',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000007',
-> MASTER_LOG_POS=2566;     #(注意, 可以一主多从 ,不可一从多主)

##6. 在Node2上启动从服务器功能,并查看状态
mysql> start slave;
mysql> show slave status\G
这里写图片描述
重点查看上图中,

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

这两项显示都是YES才为正常
如果出现no或者connecting,就要查看错误日志,根据错误原因来排除故障

##7.构建node2作为主,node1作为从
从上述步骤我们能得到:第2~6步就完成了“node1主—node2从”同步关系。
顺着这个思路,将node1与node2角色调换,执行一遍上述的命令,就能生成“node2主—node1从”的同步关系。

##8.测试主主同步
###8.1.node1同步到node2
在node1上面执行:

mysql> create database test1 default character set `utf8` collate `utf8_unicode_ci`;
Query OK, 1 row affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.00 sec)

到node2上面去查看:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.00 sec)

###8.2.node2同步到node1
在node2上面执行:

mysql> create database test2 default character set `utf8` collate `utf8_unicode_ci`;
Query OK, 1 row affected (0.05 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
| test2              |
+--------------------+
6 rows in set (0.00 sec)

到node1上面去查看:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
| test2              |
+--------------------+
6 rows in set (0.00 sec)

OK了,主主同步验证成功。下一讲,我们会将keepalived加进来,实现mysql+keepalived主主高可用、自动漂移架构。https://blog.csdn.net/haoding205/article/details/81508423

文中所提到的/etc/my.cnf配置文件可以在如下网盘中下载获取:
这里写图片描述
网盘下载地址:
链接:https://pan.baidu.com/s/1vSEYgemMNK3vGroRJKZ4-w
这里写图片描述

还有其他问题的可以在评论区留言或者如下联系方式扫码向我提问。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值