​双主多从架构原理介绍

IP 端口 账号 密码 服务名
10.1.1.2 3306 root/sync abc123! 数据库A
10.1.1.3 3306 root/sync abc123! 数据库B
10.1.1.4 3306 root/sync abc123! 数据库C

1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;

2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;

3.两台主库之间做高可用,可以采用MyCAT中间件暴露一个统一的服务给client,同时当2主任意一台宕机时,还能提供服务。宕掉的机器重启恢复之后,数据可以同步得到;

4.所有提供服务的从服务器与masterB进行主从同步(双主多从);

#创建目录 mkdir -p /home/docker-compose/mysql cd /home/docker-compose/mysql/ && mkdir data conf vi docker-compose.yml

version: '3.1'
services:mysql:restart: alwaysimage: mysql:5.7container_name: mysqlports:- 3306:3306environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: abc123!  ##密码command:--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1--max_allowed_packet=128M--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"volumes:- ./data:/var/lib/mysql- ./conf:/etc/mysql/mysql.conf.d

进入目录

cd /home/docker-compose/mysql/conf

编写MySQL配置文件

vi mysqld.cnf

主节点1配置

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket    = /var/run/mysqld/mysqld.sock
datadir    = /var/lib/mysql
default-time-zone='+8:00'
symbolic-links=0
server-id = 40
log-bin = mysql-bin
enforce_gtid_consistency = ON
gtid_mode = ON
auto_increment_increment=1
auto_increment_offset=1
log-slave-updates
sync_binlog=1
max_connections=1000
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_page_size=32K
innodb_log_file_size=148M

主节点2配置

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket    = /var/run/mysqld/mysqld.sock
datadir    = /var/lib/mysql
default-time-zone='+8:00'
symbolic-links=0
server-id = 66
log-bin = mysql-bin
enforce_gtid_consistency = ON
gtid_mode = ON
auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1
max_connections=1000
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_page_size=32K
innodb_log_file_size=148

启动mysql

docker-compose up -d
docker-compose down //直接删除容器
docker-compose stop //不删除容器
docker-compose start //直接启动

进入容器:

docker exec -it mysql /bin/bash
mysql -uroot -pabc123!

设置2个主节点的主从关系

查看10.1.1.2的日志信息:

File: mysql-bin.000005

Position: 1495

mysql> show master status G;
*************************** 1. row ***************************File: mysql-bin.000005Position: 1495Binlog_Do_DB: Binlog_Ignore_DB:
Executed_Gtid_Set: c83eb7e9-2556-11eb-b4ad-0242ac120002:20-21,
d52d0074-2556-11eb-93b5-0242ac120002:1-20
1 row in set (0.00 sec)ERROR:
No query specifiedmysql> 

查看10.1.1.3的日志信息:

File: mysql-bin.000004

Position: 1796

mysql> show master status G;
*************************** 1. row ***************************File: mysql-bin.000004Position: 1796Binlog_Do_DB: Binlog_Ignore_DB:
Executed_Gtid_Set: c83eb7e9-2556-11eb-b4ad-0242ac120002:1-21,
d52d0074-2556-11eb-93b5-0242ac120002:20
1 row in set (0.00 sec)ERROR:
No query specifiedmysql> 

在两个节点执行

create user 'sync'@'%' identified by 'password';
grant replication slave on *.* to sync;##Mysql复制错误error_code: 1045 Access denied for usergrant replication slave on *.* to 'sync'@'%' identified by 'password';flush privileges; //刷新MySQL的系统权限相关表,否则会无法用账号链接

修改master_host与master_log_file与master_log_pos三个值

#节点设置 需要同步的节点(主库节点)

#在10.1.1.2设置

FLUSH TABLES WITH READ LOCK;
change master to master_host='10.1.1.3',master_port=3306,master_user='sync',master_password='password',master_log_file='mysql-bin.000004',master_log_pos=1796;
UNLOCK TABLES;

#在10.1.1.3设置

FLUSH TABLES WITH READ LOCK;
change master to master_host='10.1.1.2',master_port=3306,master_user='sync',master_password='password',master_log_file='mysql-bin.000005',master_log_pos=1495;
UNLOCK TABLES;

开启主从复制 :

start slave;

检查

mysql> show slave status G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 10.1.1.3Master_User: syncMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000004Read_Master_Log_Pos: 1796Relay_Log_File: a389ed970e74-relay-bin.000005Relay_Log_Pos: 822Relay_Master_Log_File: mysql-bin.000004Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 

以下三项为正常

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


未完待续

mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建相关推荐

  1. mysql主备删除备数据,mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建...

    ​双主多从架构原理介绍 IP端口账号密码服务名 10.1.1.23306root/syncabc123!数据库A 10.1.1.33306root/syncabc123!数据库B 10.1.1.433 ...

  2. MySQL - 高可用性:少宕机即高可用?

    MySQL - 高可用性:少宕机即高可用? 原文:MySQL - 高可用性:少宕机即高可用? 我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机 ...

  3. mysql主从复制及主机宕机的解决方法

    mysql主从复制及主机宕机的解决方法 文章目录 mysql主从复制及主机宕机的解决方法 概念 为什么需要主从复制 主从复制原理 主从搭建 删除mysql 开始搭建 Mysql主机宕机的解决方法 本篇 ...

  4. ODPS主备集群双向数据复制导致主备中心网络打爆问题

    简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...

  5. oracle主备机密码文件不同步,oracle主备同步问题

    oracle主备同步 问题描述 ZABBIX近段时间某地区的DB备库同步异常,在后台查询主备是同步的 zabbix监控主备同步的语句为select round((sysdate-controlfile ...

  6. MySQL集群节点宕机,数据库脑裂!如何排障?

    作者介绍 王晶,中国移动DBA,负责"移动云"业务系统的数据库集成架构设计.运维.优化等工作:擅长技术领域MySQL,获Oracle颁发的"MySQL DBA" ...

  7. GitHub 多次宕机的罪魁祸首竟是 MySQL?

    整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 宕机时时有,但近期特别多.这边苹果服务器发生大规模宕机,导致 App Store.Apple Music.Books 等十几项服务中断,另 ...

  8. mysql 小型机_小型机宕机问题 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...

    最近客户主机每隔10天左右就会宕机,配置为P650+DS4300+3582,上面跑着oracle+webshere+tsm.宕机是,连接主机的显示器无反应,可以ping通主机,无法telnet及ftp ...

  9. bond的主备模式_centos 7.0双网卡主备和负载均衡模式配置(bond0)

    网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡.在应用部署中是一种常用的技术,bond共有7中模式,mode 0-6,但是常用的模式有三种: mode=0:平衡 ...

最新文章

  1. oracle celient 作用,WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用.doc
  2. javaSE基础04
  3. 全屏插件fullsizable.js失效???
  4. Redhat下XFS的安装
  5. 管理 Active Directory 所必需的工具或技术
  6. unity2018关联不到vs_原尚股份VS.长久物流,整车物流和零部件物流,谁才是好生意?...
  7. mysql dcn_Mysql varchar(max)
  8. 如何在Java中实现线程池
  9. LeetCode 734. 句子相似性(哈希)
  10. mapreduce程序开发的一些总结
  11. 我与计算机作文450字,打电脑作文450字
  12. java验证码制作思路_Java实现验证码制作之一自己动手
  13. PPC丢失后,手机信息如何保护?(C#)
  14. 让IIS7支持SSI功能(用来支持shtml)的方法
  15. Altium Designer 17 安装方法及步骤
  16. EC6110M/T-Q21A/C/E-EC6108V9/V9C/V9U/V9A/V9E/V9I/V92/V97-V9C悦me/CA全系列包
  17. Steam帐号被盗怎么办
  18. 项目管理软件推荐:项目计划变更管理太方便了
  19. 将网络地图资源加载进Arcgis中
  20. IPFS技术系列之IPFS底层基础

热门文章

  1. 51单片机怎么显示当前时间_单片机初学者必看
  2. 后台接收数组_微信小程序如何与后台api接口进行数据交互(微信报修小程序源码讲解七)...
  3. win10安装net3.5不成功出现 0x8024402c_在移动硬盘中安装win10和macos双系统
  4. ajax修改按钮的html值,表格行的按钮AJAX后,怎么修改表格当前行的值
  5. mysql 跨库复制_Mysql跨数据库(在同一IP地址中)复制表
  6. java is开头版本解决_eclipse指定jdk版本启动,解决Version XXXX of the JVM is not
  7. 【编译原理】编译是怎么一个过程?
  8. oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...
  9. 深度学习之卷积神经网络(7)池化层
  10. html php打开,html格式如何打开