一主一从(或二从)部署:

参考博客:

https://www.cnblogs.com/lelehellow/p/9633315.html

正好借着3台机器,可以做一个 1主 2从的分配

192.168.101.12 centos7-02 # 主库
192.168.101.12 centos7-03 # 从库1
192.168.101.12 centos7-04 # 从库2

3台机器都已经安装好RPM版的8.0.27

主库需要做的事情是

1、开启Binlog日志

1.5、设置服务ID

2、分配从库的监听账号

3、拿到binlog文件名

首先找到配置文件:

[root@centos7-03 ~]# find / -name my.cnf
/etc/my.cnf

配置这两个参数项:

[mysqld]

# 开启二进制日志
log-bin=mysql-bin # 设置server-id
server-id=1

保存后重启mysqld服务,生效配置

systemctl restart mysqld

然后登陆上主库,分配从库的账号及其权限

-- 创建两个从库的监听账号
CREATE USER 'SLAVE-01'@'centos7-03' IDENTIFIED BY '123456';
CREATE USER 'SLAVE-02'@'centos7-04' IDENTIFIED BY '123456'; -- 分配分配【从库副本权限】给监听账号
GRANT REPLICATION SLAVE ON *.* TO 'SLAVE-01'@'centos7-03';
GRANT REPLICATION SLAVE ON *.* TO 'SLAVE-02'@'centos7-04'; -- 刷新权限
FLUSH PRIVILEGES;

获取主库的bin日志文件

SHOW MASTER STATUS;

展示信息:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 156 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.02 sec)

然后从库要和主库一样设置服务ID,为了区分MySQL

# centos7-03 机器 设置
vim /etc/my.cnf
server-id=2 # centos7-04 机器 设置
vim /etc/my.cnf
server-id=3 # 然后都重启服务
systemctl restart mysqld

登陆上从库的MySQL,执行绑定SQL:

-- centos7-03的mysql执行
CHANGE MASTER TO
   -- 主库连接信息
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='centos7-02', -- 主库地址
MASTER_USER='SLAVE-01', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码    -- 主库的 SHOW MASTER STATUS 展示的信息
MASTER_LOG_FILE='mysql-bin.000001', -- 主库的日志文件名称
MASTER_LOG_POS=156; -- 主库的日志文件最后位置6 -- centos7-04的mysql执行
CHANGE MASTER TO
   -- 主库连接信息
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='centos7-02', -- 主库地址
MASTER_USER='SLAVE-02', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码    -- 主库的 SHOW MASTER STATUS 展示的信息
MASTER_LOG_FILE='mysql-bin.000001', -- 主库的日志文件名称
MASTER_LOG_POS=156; -- 主库的日志文件最后位置6

然后开启从库同步:

START SLAVE;

关闭从库同步:

STOP SLAVE;

查看从库同步状态:

SHOW SLAVE STATUS;
注意两个参数 Slave_IO_Running & Slave_SQL_Running
值都为Yes的时候,才算主从配置成功
mysql> SHOW SLAVE STATUS;
+----------------------+-------------+-------------+-------------+---------------+------------------+---------------------+-----------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+-------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+------------------------+-----------------------+-------------------+
| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id | Master_UUID | Master_Info_File | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State | Master_Retry_Count | Master_Bind | Last_IO_Error_Timestamp | Last_SQL_Error_Timestamp | Master_SSL_Crl | Master_SSL_Crlpath | Retrieved_Gtid_Set | Executed_Gtid_Set | Auto_Position | Replicate_Rewrite_DB | Channel_Name | Master_TLS_Version | Master_public_key_path | Get_master_public_key | Network_Namespace |
+----------------------+-------------+-------------+-------------+---------------+------------------+---------------------+-----------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+-------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+------------------------+-----------------------+-------------------+
| Connecting to source | centos7-02 | SLAVE-02 | 3306 | 60 | mysql-bin.000001 | 156 | centos7-04-relay-bin.000001 | 4 | mysql-bin.000001 | Connecting | Yes | | | | | | | 0 | | 0 | 156 | 156 | None | | 0 | No | | | | | | NULL | No | 2061 | error connecting to master 'SLAVE-02@centos7-02:3306' - retry-time: 60 retries: 31 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. | 0 | | | 0 | | mysql.slave_master_info | 0 | NULL | Replica has read all relay log; waiting for more updates | 86400 | | 220201 18:09:21 | | | | | | 0 | | | | | 0 | |
+----------------------+-------------+-------------+-------------+---------------+------------------+---------------------+-----------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+-------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+------------------------+-----------------------+-------------------+
1 row in set (0.04 sec)

报错原因在 【Last_IO_Error】

error connecting to master 'SLAVE-02@centos7-02:3306' - retry-time: 60 retries: 31 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

连接要求密码配有加密插件

回到主库更改账号的密码插件项:

ALTER USER 'SLAVE-01'@'centos7-03' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'SLAVE-02'@'centos7-04' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
UNLOCK TABLES;

停止从库绑定:

STOP SLAVE;

重置从库

RESET SLAVE;

再检查主库binlog的pos值

SHOW MASTER STATUS;

然后重新配置SLAVE,再启动即可

双主双从的结构设计:

1、双主双从的设计是基于上面一主一从的演变

SLAVE -> MASTER 这是一主一从的结构

同样MASTER也可以变成SLAVE,双方相互监听,这就成了交织

A 挂B,B也挂A

2、双主双从就是在AB交织的架构下各自再挂一个从机

2022年06月13日更新:

多主一从的实现

在从库需要新增两项配置,以支持多Channel监听:

-- 从库在my.cnf添加两项配置,以支持多CHANNEL绑定
master_info_repository=table
relay_log_info_repository=table

否则在下面设置监听主库SQL时,执行报错

设置监听的主库时,需要设定自定义CHANNEL属性

-- 从库配置监听的主库时需要自定义CHANNEL属性
CHANGE MASTER TO
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='192.168.118.133', -- 主库地址(真实环境自行修改)
MASTER_USER='SLAVE-01', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码
MASTER_LOG_FILE='mysql-bin.000002', -- 主库的日志文件名称(就是上面截图当前日志文件名称)
MASTER_LOG_POS=3225 -- 主库的日志文件最后位置(就是上面截图当前位置)
FOR CHANNEL '133-CHANNEL'; CHANGE MASTER TO
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='192.168.118.135', -- 主库地址(真实环境自行修改)
MASTER_USER='SLAVE-01', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码
MASTER_LOG_FILE='mysql-bin.000002', -- 主库的日志文件名称(就是上面截图当前日志文件名称)
MASTER_LOG_POS=154 -- 主库的日志文件最后位置(就是上面截图当前位置)
FOR CHANNEL '135-CHANNEL';

  

开启和关闭SLAVE状态都需要指定对应CHANNEL

-- 开启同步时指定CHANNEL
START SLAVE FOR CHANNEL '133-CHANNEL';
START SLAVE FOR CHANNEL '135-CHANNEL';
-- 关闭时同理
STOP SLAVE FOR CHANNEL '133-CHANNEL';
STOP SLAVE FOR CHANNEL '135-CHANNEL';

  

检查监听状态:

-- 展示同步状态
SHOW SLAVE STATUS

2022年06月14日更新:

GTID方式来部署MySQL集群,所有的MASTER和SLAVE库都需要配置以下参数(my.ini & my.cnf):

# 开启GTID模式
gtid_mode=on # 强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on # 从库从主库复制数据时可以写入到binlog日志,可作为其他从库的主库支持
log-slave-updates=1 # 日志格式:行
binlog_format=row # slave复制进程不随mysql启动而启动
skip_slave_start=1

  

和之前的区别在于,不需要指定BINLOG日志最新位置

有MASTER_AUTO_POSITION=1可以自动同步

CHANGE MASTER TO
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='192.168.118.133', -- 主库地址(真实环境自行修改)
MASTER_USER='SLAVE-01', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码
MASTER_AUTO_POSITION=1
FOR CHANNEL '133-CHANNEL'; CHANGE MASTER TO
MASTER_PORT= 3306, -- 主库端口
MASTER_HOST='192.168.118.135', -- 主库地址(真实环境自行修改)
MASTER_USER='SLAVE-01', -- 主库提供的同步账号
MASTER_PASSWORD='123456', -- 主库提供的同步账号密码
MASTER_AUTO_POSITION=1
FOR CHANNEL '135-CHANNEL';

检查GTID开启状态:

SHOW VARIABLES LIKE '%gtid%';
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | OFF |
+----------------------------------+-----------+

  

解决同步失败的方案:

清空所有库的数据以及binlog,初始化到清空状态

RESET MASTER -- 清除日志

  

【MySQL】主从配置的更多相关文章

  1. mysql主从配置

    引言: 双11,阿里云服务器打折,于是我忍不住又买了一台服务器,于是咱也是有两台服务器的爷们了,既然有了两台服务器,那么肯定要好好利用一下吧,那么就来玩玩mysql的主从配置吧. 准备 两台数据库服务 ...

  2. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  3. CentOS 7下的 Mysql 主从配置

    最近在玩mysql主从配置,在此记录一下 一.前言 1.安装两个虚拟机(CentOS 7).iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为 ...

  4. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

  5. mysql主从配置(清晰的思路)

    mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本 ...

  6. mysql 主从 配置和同步管理

    首先呢,需要有两个mysql服务器.如果做测试的话可以在同一台机器上装两个mysql服务程序,注意要两个运行程序的端口不能一样.我用的是一个是默认的3306,从服务器用的是3307端口. 在主服务创建 ...

  7. Mysql笔记之 -- 小试MYSQL主从配置

    mysql主从配置: 硬件: 两台服务器 1.Ubuntu 12.04.4 LTS (GNU/Linux 3.2.0-60-generic-pae i686)  2.Ubuntu 12.04.4 LT ...

  8. MySql主从配置实践及其优势浅谈

    MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...

  9. windows环境下mysql主从配置

    mysql主从配置. 相关理论知识可以百度一下,这里就不多说了,直接说如何配置. 一.环境介绍及说明 主库所在的操作系统:win7 主库的版本:mysql-5.6.24-winx64.zip 主库的i ...

  10. 黄聪:mysql主从配置(清晰的思路)

    mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本 ...

随机推荐

  1. uniapp 小程序分享功能

    上个月在做小程序的项目时,甲方需要给小程序添加个分享的功能,查看uniapp官方文档后,发现uniapp有自带的小程序分享功能(https://uniapp.dcloud.io/api/plugins ...

  2. Qt添加资源文件

    参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=27 以添加图片为例进行说明: 1)点击工程名,选择"添加新文件": 2)选择 ...

  3. [SWPUCTF 2021 新生赛]gift_F12

    首先我们打开环境会发现花里胡哨的,而题目中有提示:F12,所以我们直接F12查看源码 然后ctrl+f信息检索flag.直接找到flag提交 但要注意提交格式为NSSCTF{}

  4. windows 命令行调整分辨率

    windows 命令行调整分辨率 下载:qres_v1.1 https://abcker.lanzouq.com/i1uzA1a5uo8j 解压出来,如:D:\Soft\QRes,不要使用中文名目录. ...

  5. 以沙箱的方式运行容器:安全容器gvisor

    目录 一.系统环境 二.前言 三.安全容器隔离技术简介 四.Gvisor简介 五.容器runtime简介 六.docker容器缺陷 七.配置docker使用gVisor作为runtime 7.1 安装 ...

  6. python 发起PUT请求,报"Method not Allowed" 和 取返回的报文的内容

    发起请求的时候,默认使用的POST请求方式,导致发起请求,返回[405 Method not Allowed ],检查此更新接口的请求方式为PUT,更改请求方式为PUT PUT接口返回的内容,不能通过 ...

  7. 在Linux驱动中使用gpio子系统

    reference: https://blog.csdn.net/shiyongyue/article/details/75103446 http://blog.rongpmcu.com/gpiozi ...

  8. k8s livenessprobe和readinessprobe详解

    一.为什么需要容器探针 如何保持Pod健康 只要将pod调度到某个节点,Kubelet就会运行pod的容器,如果该pod的容器有一个或者所有的都终止运行(容器的主进程崩溃),Kubelet将重启容器, ...

  9. 🚀 Karpor - 让 AI 全面赋能 Kubernetes!

    什么是 Karpor? 一言以蔽之,Karpor 是一个现代化的 Kubernetes 可视化工具,核心特性聚焦在  搜索. 洞察. AI ,目标是更方便快捷地连接平台和多集群,并用 AI 赋能 Ku ...

  10. 手把手带你使用JWT实现单点登录

    JWT(英文全名:JSON Web Token)是目前最流行的跨域身份验证解决方案之一,今天我们一起来揭开它神秘的面纱! 一.故事起源 说起 JWT,我们先来谈一谈基于传统session认证的方案以及 ...