mysql 半同步 主主_MySQL主从,半同步,主主复制

MySQL Replication

我们知道,MySQL数据库的二进制日志记录着每一个明确或者潜在可能导致数据库发生改变的sql语句,因此我们可以基于二进制日志来实现mysql的主从一致。而我们在此提到的mysql的复制的简单过程就是:

首先mysql的主服务器(Master)上有一个叫dump的线程,负责将二进制日志读取进来,发送给slave.

而后mysql的从服务器(Slave)上有个I/O线程 ,负责接收Master传送过来的二进制日志数据,并且将此写入到本地的中继日志中,此时会有一个SQL线程,每次中继日志读取一句sql语句, 并在从Slave上应用,以实现主从服务器的一致。

首先需要提供2台mysql版本一致的mysql服务器,在此选用的mysql-5.5.20,平台为RedHat5.4

一、安装mysql-5.5.20

# groupadd -r mysql

# useradd -g mysql -r -s /sbin/nologin –M mysql

//新建用户以安全方式运行进程

# chown -R mysql:mysql /mydata/data

# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local

//将下载好的mysql软件解压安装

# cd /usr/local/

# ln -sv mysql-5.5.20-linux2.6-i686  mysql

# cd mysql

# chown -R mysql:mysql  .

# scripts/mysql_install_db --user=mysql --datadir=/mydata/mysql

//初始化mysql,此处使用的/mydata/mysql存放mysql的数据,建议将/mydata挂载至一个逻辑卷,方便数据备份

# chown -R root  .

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

#vim /etc/my.cnf

thread_concurrency = 2        //修改此项,我们的cpu为双核的

datadir = /mydata/data        //添加此项,指定数据存放的目录

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig mysqld on

二:为使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,需如下操作

#vim/etc/man.config            //输出mysql的man手册至man命令的查找路径

MANPATH  /usr/local/mysql/man     //添加此行

# ln -sv /usr/local/mysql/include  /usr/include/mysql

//输出mysql的头文件至系统头文件路径/usr/include

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

//输出mysql的库文件给系统库查找路径

# ldconfig            //让系统重新载入系统库

#vim /etc/profile          //修改PATH环境变量,让系统可以直接使用mysql的相关命令

PATH=$PATH:/usr/local/mysql/bin      //添加此行

三:实现主从复制

master ip:192.168.1.10

slave ip:192.168.1.11

On Master :(在主服务器的操作)

#vim /etc/my.cnf    确保证如下选项:

server-id = 1   //主服务器的身份标识

log-bin=mysql-bin  //开启二进制日志

sync_binlog=1       //事务提交立即写入到二进制日志

innodb_flush_logs_at_trx_commit=1 //事务提交之时,立即将二进制日志写入磁盘

#mysql –uroot –p

mysql> grant replication client,replication slave on *.* to cclo@’192.168.1.%’ identified by ‘12345’;

//此处创建一个用户名为cclo,密码为12345的用户,其权限为client和replication

mysql> flush privileges;

mysql> show grants for cclo@’192.168.1.%’; //验证此用户的权限

On Slave:(在从服务器的操作)

#vim /etc/my.cnf

[mysqld]

server-id       = 11    // 数值只要保证和Master不同即可

#log-bin=mysql-bin     //slave的二进制日志一般用不到,暂时关闭

relay-log=relay-bin    //开启中继日志

relay-log-index=relay-bin.index

read_only=1            //此项为阻止普通用户写从服务器

skip_slave_start=1

//mysql服务关闭后,当服务开启时跳过自动启动主从复制(如需自动启动,此项略过)

#service mysqld restart

#mysql –uroot –p

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| MySQL-bin.000003 |      374 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql> change master to master_host='192.168.1.10',master_user='cclo',master_password='12345',master_log_file='mysql-bin.000003',master_log_pos=374;

//指定Master的ip及复制的用户及二进制日志的位置

mysq> start slave;                //启动主从复制

mysql > show slave status;       //查询从服务器的工作属性,确保以下2项

Slave_IO_Runing: Yes

 Slave_SQL_Runing: Yes        //确保此2项为Yes的状态0b1331709591d260c1c78e86d0c51c18.png

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

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

相关文章

java local_java.time.LocalDateTime with()方法

java.time.LocalDateTime with()方法java.time.LocalDateTime.with(TemporalAdjuster adjuster)方法返回此日期时间的调整副本。1 语法public LocalDateTime with(TemporalAdjuster adjuster)2 参数adjuster:要使用的调整器,而不是null。3 返回值一个Loc…

java 数据队列_Java 数据结构 - 队列

Java 数据结构 - 队列我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的。1. 什么是队列和栈一样,队列也是一种操作受限的线性结构。使用队列时,在一端插入元素,而在另一端删除元素。1.1 队列的主要特性队列中的数…

java中死锁_关于java中死锁的总结

关于死锁,估计很多程序员都碰到过,并且有时候这种情况出现之后的问题也不是非常好排查,下面整理的就是自己对死锁的认识,以及通过一个简单的例子来来接死锁的发生,自己是做python开发的,但是对于死锁的理解…

eclipse java的jvm匹配_eclipse设置jvm

Java虚拟机默认分配64M内存,如果你的应用比较大,超出64M内存,Java虚拟机就会抛出outOfMemoryError,并停止运行。不管是什么应用(Web应用、Application等),只需要修改你的机器上的运行Java命令,在javaxxx命令…

java+set+split_阿里资深工程师教你如何优化 Java 代码!

原标题:阿里资深工程师教你如何优化 Java 代码!作者 | 王超责编 | 伍杏玲明代王阳明先生在《传习录》谈为学之道时说:私欲日生,如地上尘,一日不扫,便又有一层。着实用功,便见道无终穷&#xff0…

java返回特定下标元素_java基础--输出数组中指定元素的下标

java基础--输出数组中指定元素的下标java基础--输出数组中指定元素的下标package com.lcn.day05;public class ArrayDemo8 {/*** 输出数组指定元素的下标*/public static void main(String[] args) {//定义一个数组int[] array new int[]{123,456,789,321,654,987};int index …

java钱币换算_Java编写钱币转换为大写程序

import java.text.DecimalFormat;public class ChangeMonney {private static final String[] STR_UNIT {"零", "壹", "贰", "叁", "肆", "伍","陆", "柒", "捌", "玖"…

java mongodb 使用场景_mongodb使用场景一般是什么?mongodb有哪些基本命令?

此前我们已经充分了解过了mongodb的原理及各种概念,你们知道一般在什么场景下才会使用mongodb吗?下面通过文章来了解一下吧。一、mongodb基本命令1)、数据库切换use admin;2)、浏览当前数据库db;3)、浏览全部数据库show dbs;4)、删除数据库use test;db.dropDatabas…

java desktop mailto,mailto在Java?

I am trying to set a hyperlink in my eclipse java project.when someone clicks on a button, it should open up an email client along with the givenemail id. is it possible to implement it with java.awt.Desktop?解决方案Yes it is possible using desktop.mail()…

myVariable是java标识符吗_java 标识符与变量

一、Java 标识符三要素1.标识符由字母、下划线(_)、美元符号($)或者字母组成。2.标识符应以字母、下划线(_)、美元符开头。3.标识符字符大小写敏感,长度无限制。标识符最重要的就是 见名知意并且不能与java关键字重名!二、Java 变量1.java变量是程序中最基本的单元。…

使java代码更干净_java如何使用Lombok更优雅地编码

Lombok简介和其他语言相比,Java经常因为不必要的冗长被批评。Lombok提供了一系列注解用以在后台生成模板代码,将其从你的类中删除,从而有助于保持你的代码整洁。较少的模板意味着更简洁的代码,更易于阅读和维护。在本文中&#xf…

java自动创建月份_使用Java根据月份动态绘制BarGraph

您需要通过每次更改来更新数据集.我添加了一个updateDataset()方法,并在几个关键位置调用了它.private void updateDataset() {dataset.clear();for (int i 1; i < finalday; i) {dataset.setValue(i, "Marks", "" i);}笔记&#xff1a;>不要使用绝…

mysql 5.6.23 源码包安装报错_Ubuntu 14.10下编译安装MySQL 5.6.23

1. 安装环境&#xff1a;Ubuntu Server 14.10MySQL-5.6.23.tar.gz2. 安装必备的工具sudo apt-get install make bison g build-essential libncurses5-dev cmake3. 添加组合用户 设置安装目录权限sudo groupadd mysqlsudo useradd –g mysql mysql –s /bin/false #创建用户mys…

java 阻塞 性能_聊聊并发-Java中的阻塞队列

1. 什么是阻塞队列&#xff1f;阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是&#xff1a;在队列为空时&#xff0c;获取元素的线程会等待队列变为非空。当队列满时&#xff0c;存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景…

java编译器对代码的优化_使用最终局部变量的Java编译器优化

我一直认为final关键字对局部方法变量或参数没有影响。因此,我尝试测试以下代码,但似乎我错了:private static String doStuffFinal() {final String a "A";final String b "B";final int n 2;return a b n;}private static String doStuffNotFinal()…

友盟统计java代码_SFAnalytics 分析友盟统计源码,反编译 SDK,还有部分没有 出来 android 259万源代码下载- www.pudn.com...

文件名称: SFAnalytics下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 8023 KB上传时间: 2016-06-05下载次数: 0提 供 者: 花心大萝卜详细说明&#xff1a;分析友盟统计源码&#xff0c;反编译友盟统计SDK&#xff0c;还有部分没有反编译出来-Analysis their Allies s…

Java导入sql失败_java – 在hibernate中导入import.sql失败

我希望每次应用程序运行时自动删除表并创建一个新表,并自动插入预定义数据.我已经在import.sql中准备数据了.我已经在application.properties中设置了spring.jpa.hibernate.ddl-auto create-drop.但是,为什么我会收到以下错误&#xff1f;我可以手动插入它.2015-11-20 20:53:5…

java mvc数据库 封装_关于SpringMvc参数封装_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

SpringMVCSpring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色&#xff0c;这种分离让它们更容易进行定制。SpringSpring是一个开源框架&#xff0c;Spring是于2003 年兴起的…

Java语言有哪几种访问权限_java基础之java四种访问权限详解

引言Java中的访问权限理解起来不难&#xff0c;但完全掌握却不容易&#xff0c;特别是4种访问权限并不是任何时候都可以使用。下面整理一下&#xff0c;在什么情况下&#xff0c;有哪些访问权限可以允许选择。一、访问权限简介访问权限控制&#xff1a; 指的是本类及本类内部的…

centos 使用java_如何在CentOS 8上安装Java

Java是用于构建不同类型的应用程序和系统的最流行的编程语言之一。Java有两种不同的实现&#xff0c;OpenJDK和Oracle Java&#xff0c;两者之间几乎没有区别&#xff0c;只是Oracle Java具有一些其他的商业功能。 Oracle Java License仅允许该软件的非商业使用&#xff0c;例如…