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

​双主多从架构原理介绍

IP端口账号密码服务名
10.1.1.23306root/syncabc123!数据库A
10.1.1.33306root/syncabc123!数据库B
10.1.1.43306root/syncabc123!数据库C

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

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

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

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

d08f35028afe126beb787c4483640fcc.png

#创建目录 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


未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sourcetree mac 免登录_「vscode remote ssh 免登录」mac

如果你只知道传统的ssh操作,或者sftp/ftp上传下载操作,那可能有点太low了。强烈推荐你使用 vscode remote ssh。举个栗子来形象比喻一下:钥匙开门 和 指纹开门 的区别。已经用 vscode remote ssh 功能有很久了,这种体验真的太棒了…

python中汉字与变量不可同时出现_Python语言应用培训课(选择练习)

第一部分1、多选题:Python在金融中的运用包括( )选项:A:绩效分析B:风险分析C:程序化交易D:量化分析答案: 【绩效分析;风险分析;程序化交易;量化分析】第二部分1、判断题:python语言支持中文字符作为变量名称,但具有语法意义的符号…

鸿蒙首饰用什么合成,天下HD鸿蒙炼炉是什么?鸿蒙炼炉讲解

在玩天下HD的时候各位又是否知道鸿蒙炼炉是什么呢?其实鸿蒙炼炉是游戏之中一个很重要的系统,而对于这个系统本次小编就给各位带来了鸿蒙炼炉讲解。或许各位都有用到天下HD的鸿蒙炼炉系统,但是各位又是否了解鸿蒙炼炉系统是怎么样的呢&#xf…

如何区分网线是几类的_小移课堂 | 网线这样选,网速才能嗖嗖的!

在家宅到长蘑菇的日子里最亲近的,除了家人,就是WiFi想必大家碰上网速不好的时候都会很抓狂为什么家里的网络明明签约的是千兆可网速一直上不去?网线,是卡住网速的关键因素!问网线不是通用的吗?还要用专门的网线吗&…

navicat premium 链接postgresql 无法加载表_PostgreSQL 每周新闻 2020311

PostgreSQL 每周新闻 2020-3-11英文原文地址:https://postgresweekly.com/issues/346Postgres子事务和性能本文展示了过度使用子事务对性能的影响,以及如何诊断在您的数据库里是否有这样的问题。Laurenz AlbePostgreSQL匿名器0.6:假名化和改进…

python无法打开_如何解决Windows命令行无法运行python文件?

我在使用windows的命令行运行python文件,但是每次出现的都是这种情况我设置了Path,D:Python,后来又设置了个PythonPath,添加了Lib和DLLS的路径,但是没用。 我觉得还是设置环境变量的问题,请问大家有什么办法…

iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法

第一次在windows7下配置IIS,虽然有丰富的xp下配置IIS的经验,但还是会遇到不少的问题。特别是对入门者来说,搞清一些东西还是挺费时间的。其实win7下的IIS7配置过程是非常简单的。下面让seo博客来详细的介绍一下win7下配置IIS7环境运行ASP网站…

ajax post提交数据_详解Ajax异步加载

前言:作为资深球迷,提起Ajax,第一反应想到的是阿贾克斯,那个曾培养出伊布,范德法特,苏亚雷斯,亨特拉尔等一众球星的荷甲著名球队。很显然,我们今天说的Ajax,跟足球没有任…

win10改计算机用户名,win10系统修改本地账号用户名的操作方法

很多小伙伴都遇到过对win10系统修改本地账号用户名进行设置的困惑吧,一些朋友看过网上对win10系统修改本地账号用户名设置的零散处理方法,并没有完完全全明白win10系统修改本地账号用户名的操作方法非常简单,只需要1、首先打开Win10控制面板&…

假设以带头结点的循环链表表示队列_关于反转链表,看这一篇就够了!

本期例题:LeetCode 206 - Reverse Linked List[1](Easy)反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL反转链表这道题是我在阿里的面试中遇到的题目。它本身也是单链表…

1650显卡学计算机,适合老电脑升级?GTX1650显卡开箱,性价比依然不高!

原标题:适合老电脑升级?GTX1650显卡开箱,性价比依然不高!新一代的NV显卡高端版本基本上全部和大家见面,例如RTX2080ti、RTX2070等等。而中端的RTX2060和GTX1660ti也陆续被玩家接受,剩下入门级的显卡英伟达取…

iphone怎样关闭副屏_iPhone手机关掉这3个设置,不仅省电,而且手机还不会卡

现在很多人无论是吃饭睡觉上厕所手机都会形影不离,然而手机玩久了电量就会刷刷的往下掉,不仅如此长时间下去手机还会出现卡顿的情况。如何才能令手机不卡顿并且最大限度上省电呢?为大家分享几个技巧,关掉这3个设置,手机…

武汉计算机985211大学有哪些,武汉985211大学有哪些 武汉985211大学有什么

想必大家都听过去武大看樱花这句话吧!湖北最出名的大学可能就是武汉大学了,但是武汉大学不仅仅以其优秀的师资闻名,也以校园里美丽的樱花闻名。想要了解武汉985211大学有哪些,就来看看这些文章吧!武汉的985大学有武汉大学和华中科技大学。211…

vmci.sys版本不正确_这样安装 Python 库才是最正确的哦

优质文章,第一时间送达!分享一篇之前的文章,里面的这个Python知识点,可能很多人都还不清楚。平常我都是直接执行 pip install安装的第三方库,很多教程也是这么介绍的,一直以来我都认为这是标准的、正确的安…

概率计算机在线,高斯正态分布(概率)计算公式与在线计算器_三贝计算网_23bei.com...

输入平均值(M)、标准偏差(S)、数值(X1)、(选填)数值(X2)等已知量,点击计算按钮,可快速求出概率P(XX1)、概率P(XX2)、概率P(X1到X2)等结果。正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution)&…

mybatis 连接池_应用框架之Mybatis数据源和连接池

本文将从以下几个方面介绍Mybatis的数据源和连接池:MyBatis数据源DataSource分类数据源DataSource的创建过程DataSource什么时候创建Connection对象MyBatis数据源DataSource分类MyBatis数据源实现是在以下四个包中:MyBatis把数据源DataSource分为三种&am…

python默认安装地址_python多版本下设置python3为默认的方法

python3设置为多版本为默认的方法 如何在双python下设置python3为默认 在C:\Program下举例 第一步安装好python2和python3后设置好环境变量 第二步去掉python2根目录下的python.exe文件,还有Scripts文件夹下的pip.exe文件 第二步复制python3根目录下的python3.exe文…

惠普图形计算机游戏,惠普发布Victus by HP 16 - 一款适合PC游戏新人的游戏笔记本...

除了更新了其Omen系列的笔记本电脑,惠普今天还宣布了一个新的游戏笔记本电脑品牌,名为Victus by HP 16。看起来,Victus是为那些刚进入PC游戏世界的人准备的,他们可能不一定想买一台顶级的游戏笔记本作为他们的第一次尝试。虽然这表…

php 获取某一年最后一天_vivo年货节最后一天!多款机型大促,错过让你后悔再等一年!...

即将进入春节回乡高峰期,然而在这个时候许多小伙伴都会先购入春节必备用品。除了一些日用品外,手机也许是新年最佳的换机时间。最近,国产手机品牌vivo就开启了年货节活动,不过今天是最后一天了。vivo旗下众多商品都拥有不小的优惠…

计算机操作记录怎么删除,win7系统如何清除电脑使用记录

‍‍电脑被使用过后或大或少都会留下使用痕迹,就比如浏览器的历史记录,通过这个就可以看出电脑的主人喜欢访问的网站。有位win7 64位旗舰版用户向小编反馈,电脑要暂时借给朋友一段时间,要怎么消除自己的使用记录呢?下面…