Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >主从复制(双主复制)

主从复制(双主复制)

作者头像
MonroeCode
发布于 2021-12-28 04:31:23
发布于 2021-12-28 04:31:23
70400
代码可运行
举报
文章被收录于专栏:Java技术分享Java技术分享
运行总次数:0
代码可运行

MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作)

双主复制可以实现数据库服务器的热备,结合Keepalived实现动态切换,实现了双主对外的统一接口以及自动检查、失败切换机制。联合使用,可以实现MySQL数据库的高可用方案。(在本文仅做双主复制的部署)

环境:CentOS 6.5 MASTER1:192.168.81.11 MASTER2:192.168.81.12

分别修改Master1和Master2 的配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# vim /usr/local/mysql/my.cnf

MASTER1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[mysqld]
log-bin=mysql-bin                   #打开二进制日志
server-id=1                         #服务器id(不能相同)
expire-logs-days=100                #自动清理100天前的日志
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=1

MASTER2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[mysqld]
log-bin=mysql-bin
server-id=2
expire-logs-days=100
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=2
character-set-server=utf8

重新启动数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# service mysql restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL.. SUCCESS!

进入数据库配置双主同步

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# mysql -u root -p
Enter password: 

MASTER1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> grant replication slave on *.* to slave@'192.168.81.12' identified by 'ibelieveicanfly';
Query OK, 0 rows affected (0.05 sec)

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

MASTER2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> grant replication slave on *.* to slave@'192.168.81.11' identified by 'ibelieveicanfly';
Query OK, 0 rows affected (0.05 sec)

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

MASTER1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to
    -> master_host='192.168.81.12',
    -> master_user='slave',
    -> master_password='ibelieveicanfly',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=336;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

MASTER2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> change master to
    -> master_host='192.168.81.11',
    -> master_user='slave',
    -> master_password='ibelieveicanfly',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=336;
Query OK, 0 rows affected, 2 warnings (0.07 sec)

mysql> start slave;
Query OK, 0 rows affected (0.05 sec)

查看是否同步成功(出现双yes即为成功)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> show slave status\G;
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JVM 对象分配过程
逃逸分析(Escape Analysis)简单来讲就是,Java Hotspot 虚拟机可以分析新创建对象的使用范围,并决定是否在 Java 堆上分配内存的一项技术。
斯武丶风晴
2020/05/09
1.1K0
JVM 对象分配过程
对象并不一定都是在堆上分配内存的
关于JVM的内存结构及内存分配方式,不是本文的重点,这里只做简单回顾。以下是我们知道的一些常识:
爱撸猫的杰
2019/03/28
7300
jvm之逃逸分析解读
在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。这样就无需在堆上分配内存,也无须进行垃圾回收了。这也是最常见的堆外存储技术。 
一个风轻云淡
2023/10/15
2480
8.JVM内存分配机制超详细解析
之前研究过类的加载过程。具体详情可查看文章:https://www.cnblogs.com/ITPower/p/15356099.html
用户7798898
2021/10/15
1.6K0
java栈内存初始化,阿里面试官:小伙子,你给我说一下JVM对象创建与内存分配机制吧…
虚拟机遇到一条new指令(new关键字、对象的克隆、对象的序列化等)时,会先去检查这个指令的参数在常量池中定位到一个类的符号引用,并且这个符号引用代表的类是否应被加载过,如果没有那么就去加载该类
全栈程序员站长
2022/08/28
3480
java栈内存初始化,阿里面试官:小伙子,你给我说一下JVM对象创建与内存分配机制吧…
深入分析JVM逃逸分析对性能的影响
逃逸分析(Escape Analysis) 逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。 方法逃逸的几种方式如下: public class EscapeTest { public static Object obj; public void globalVariableEscape() { // 给全局变量赋值,发生逃逸
java404
2018/05/18
1.4K0
JVM简介—1.Java内存区域
Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区域,这些区域各有各的用途以及各自的创建和销毁时间也不一样。有的区域会随着虚拟机的进程启动而存在,有的区域则依赖用户线程的启动和结束而进而跟着建立和销毁。
东阳马生架构
2025/03/10
830
JVM堆
堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。
麋鹿大哥
2020/08/19
4170
Java 对象都是在堆上分配内存吗?
来源:LittleMagic jianshu.com/p/8377e09971b8
用户1516716
2019/12/10
1.2K0
Java 对象都是在堆上分配内存吗?
Java的对象一定是在堆上分配的嘛?谁这么说就直接用“逃逸分析”反驳他!
之前在和朋友聊天的时候,他突然问我什么是“逃逸分析”。说实话当时我还真不太能完整的讲出什么是逃逸分析。这玩意虽然我看八股的时候经常遇见,但之前还真没专项学习过。因此我们今天来完整的介绍一下什么是逃逸分析。
程序员牛肉
2025/01/22
1070
Java的对象一定是在堆上分配的嘛?谁这么说就直接用“逃逸分析”反驳他!
JVM之堆
一个进程对应一个jvm实例,同时包含多个线程,这些线==程共享方法区和堆==,每个==线程独有程序计数器、本地方法栈和虚拟机栈==。
程序员阿杜
2021/06/29
9330
面试官:Java中实例对象存储在哪?
低级语言是计算机认识的语言、高级语言是程序员认识的语言。如何从高级语言转换成低级语言呢?这个过程其实就是编译。
Java宝典
2021/03/16
6880
虚拟机--逃逸分析
如果对象发生逃逸,那会分配到堆中。(因为对象发生了逃逸,就代表这个对象可以被外部访问,换句话说,就是可以共享,能共享数据的,无非就是堆或方法区,这里就是堆。)
终码一生
2022/04/14
4500
再清楚不过了,JVM逃逸分析,你一定得知道
提到JVM,相信大家一定知道JVM是什么?但是,提到逃逸分析,相信大多数人都可能一脸懵逼,逃逸分析到底是什么呢?接下来给大家分享一下。
Java程序猿阿谷
2020/12/16
2.5K0
再清楚不过了,JVM逃逸分析,你一定得知道
JVM之堆
约定:新生区 <–> 新生代 <–> 年轻代 、 养老区 <–> 老年区 <–> 老年代、 永久区 <–> 永久代
Java微观世界
2025/01/20
1680
JVM之堆
JVM本地方法栈&堆
上一节我们介绍了程序计数器和Java虚拟机栈,今天我们一起了解一下关于本地方法栈和Java堆的相关知识。
shysh95
2020/07/16
6410
JVM本地方法栈&堆
JVM-彻底搞懂 逃逸分析&标量替换
通过上图的对象分配流程,我们可以知道逃逸分析是发生在第一步判断对象是否可以在栈上分配的时候, 在栈上分配的目的是为了减少将对象分配到堆上的概率,节约堆内存,减少GC压力。
小小工匠
2021/08/17
2.1K0
5. java 对象是如何创建的?new背后到底做了什么
虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。
源码之路
2021/03/02
8800
5. java 对象是如何创建的?new背后到底做了什么
【性能优化】面试官:Java中的对象和数组都是在堆上分配的吗?
https://github.com/sunshinelyz/mykit-delay
冰河
2020/10/29
2.4K0
【性能优化】面试官:Java中的对象和数组都是在堆上分配的吗?
Java对象一定分配在堆上吗?
Java中创建的对象一般会分配到堆上,当堆空间不足时,就会触发GC进行垃圾回收,但是GC次数太多会影响程序的性能。
阿珍
2024/11/04
2620
Java对象一定分配在堆上吗?
相关推荐
JVM 对象分配过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验