1、转载:https://blog.csdn.net/zfl589778/article/details/51441719/

2、效果:亲测有效,数据写入成功。

3、主机宕机后,如果不是长时间宕机,且可手动重启,直接重启即可,【从】数据库数据会进行写入,无需重新配置my.cnf。【这里的主机宕机方案指的是:主机很长时间无法启动】

4、原理:MySQL从库上有一个IO线程负责从主库取binlog写到本地,另外有一个SQL线程负责执行这些本地值日,实现命令重做

4.1)如果发生宕机,则主和从都需要重复配置mysql-bin-0000X,change master ,。。。语句,然后start slave; show slave status

5、步骤:

一、准备工作

系统:CentOS

软件包:mysql-5.6.22.tar.gz

master服务器:192.168.1.112

slave服务器1:192.168.1.102

slave服务器2:192.168.1.104

二、修改master服务器配置

vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin #必选项,启用二进制日志,值为日志文件名前缀,该日志文件存储位置为mysql数据库目录

server-id=112 #必选项,服务器唯一ID,默认是1,一般取IP最后一段

binlog-do-db=mydb #可选项,需要同步的数据库,如果没有本行,即表示同步所有的数据库

binlog-ignore-db=mysql #可选项,被忽略的数据库

三、修改slave服务器1配置

vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin #可选项,启用二进制日志,可是主库宕机后升级从库为主库时仍然需要设置,所以现在一起启用也可以

server-id=102 #必选项,服务器唯一ID

replicate-do-db=mydb #可选项,需要同步的数据库名,不写本行表示同步所有的数据库

四、重启所有服务器上的mysql服务

建议先手动同步一下主从服务器中要备份的数据库

service mysqld restart #如果mysql没有配置为系统服务,命令为/etc/init.d/mysql restart

五、在master服务器上建立用于同步的账户并授权slave

mysql -u root -p

Enter password:root

mysql>create user 'mymaster'@'%' identified by 'mymaster';

mysql>grant replication slave on *.* to 'mymaster'@'%' identified by 'mymaster';#一般不用root账号,%表示所有从库都可以连,也可以指定从库IP增强安全性

六、登录master服务器的mysql,查看master状态

mysql>show master status;

   +------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | | |
+------------------+----------+--------------+------------------+ 七、配置两台slave服务器 mysql>change master to master_host='192.168.1.112',master_user='mymaster',master_password='mymaster',master_log_file='mysql-bin.000001',master_log_pos=120;#连接master mysql>start slave; #启动slave的复制功能 八、登录slave的mysql,查看从库状态 mysql>show slave status\G; #以下是部分结果 *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event#从库状态,已连上主库 Master_Host: 192.168.1.112#master地址 Master_User: mymaster#master用户 Master_Port: 3306#master端口 Connect_Retry: 60#重试时间,默认是60秒 Master_Log_File: mysql-bin.000001#master的binlog文件名 Read_Master_Log_Pos: 1556#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Slave_IO_Running: Yes#必须为Yes,此线程把master段的日志写到本地 Slave_SQL_Running: Yes#必须为Yes,此线程把写到本地的日志应用于数据库 Replicate_Do_DB:#同步数据库名(如果有) Replicate_Ignore_DB: #忽略数据库名(如果有) Exec_Master_Log_Pos: 1556#执行同步命令的位置 Last_IO_Errno: 0#最近IO出错位置 Last_IO_Error: #最近IO出错信息 Last_SQL_Errno: 0#最近SQL出错位置 Last_SQL_Error: #最近SQL出错信息 Master_Server_Id: 112#master服务器ID Master_Info_File: /data/mysqldb/master.info#master.info文件位置,位于该slave中 1 row in set (0.00 sec) 如果Slave_IO_Running和Slave_SQL_Running均为Yes,则slave配置完成 九、主从服务器测试 在master中创建数据库,创建表,进行增删改操作都会被同步到所有slave中 十、主库宕机解决方案 假设发生了突发事件,master宕机,现在的需求是要将192.168.1.102提升为主库,另外一个为从库 步骤: 1.确保所有的relay log全部更新完毕,在每个从库上执行stop slave io_thread; show processlist;直到看到Has read all relay log,则表 示从库更新都执行完毕了 2.登陆所有从库,查看master.info文件,对比选择pos最大的作为新的主库,这里我们选择192.168.1.102为新的主库 3.登陆192.168.1.102,执行stop slave; 并进入数据库目录,删除master.info和relay-log.info文件, 配置my.cnf文件,开启log-bin,如果有 log-slaves-updates和read-only则要注释掉,执行reset master 4.创建用于同步的用户并授权slave,同第五大步骤 5.登录另外一台从库,执行stop slave停止同步 6.根据第七大步骤连接到新的主库 7.执行start slave; 8.修改新的master数据,测试slave是否同步更新 十一、其他 1.如果修改了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。 2.如果你想使用复制数据文件的方式来备份数据库,只要在从服务器上的mysql命令行先键入stop slave;然后复制数据库文件,复制 好了,再 在mysql命令行键入start slave;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的 mysql无需停止。并且如果在此期间master的数据有改动,在下次start slave时数据也会同步更新过来 3.Slave_IO_State的取值 空 //复制没有启动 Connecting to master//没有连接上master Waiting for master to send event//已经连上 4.双机互备则是两个mysql同时配置为master及slave 5.主服务器上的相关命令: show master status show slave hosts show {master|binary} logs show binlog events purge {master|binary} logs to 'log_name' purge {master|binary} logs before 'date' reset master(老版本flush master) set sql_log_bin={0|1} 6.从服务器上的相关命令 start slave stop slave stop slave io_thread start slave is_thread stop slave sql_thread start slave sql_thread reset slave SET GLOBAL SQL_SLAVE_SKIP_COUNTER load data from master show slave status(SUPER,REPLICATION CLIENT) CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= #动态改变master信息 PURGE MASTER [before 'date'] #删除master端已同步过的日志

【MySQL】MySQL主从库配置和主库宕机解决方案的更多相关文章

  1. CentOS 6.4 系统下的MySQL的主从库配置

    首先了解到一. 二一.(MySQL下创建用户并且赋予权限)root用户创建yong用户的SQL语句 CREATE USER 'yong'@'localhost' IDENTIFIED BY 'yong ...

  2. mysql主从同步,主库宕机解决方案

    链接:https://blog.csdn.net/zfl589778/article/details/51441719

  3. mysql主从库配置读写分离以及备份

    1,什么是读写分离?其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构.一个组从同步集群,通常被称为是一个“分组” ...

  4. MySql数据主从同步配置

    由于需要配置MySQL的主从同步配置,现将配置过程记录下,已被以后不时之需 MySql数据主从同步   1.1. 同步介绍 Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一 ...

  5. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  6. 万答#4,延迟从库加上MASTER_DELAY,主库宕机后如何快速恢复服务

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 当主库宕机后,延迟从库如何才能"取消"主动延迟,以便恢复服务 ...

  7. 【原创】数据库基础之Mysql(2)主从库配置

    一 安装 # wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm# yum -y insta ...

  8. MySQL实现主从库,AB复制配置

    AB复制是一种数据复制技术,是myslq数据库提供的一种高可用.高性能的解决方案. AB复制的模式:一主一从 .一主多从.双主.多主多从 复制的工作原理:要想实现ab复制,那么前提是master上必须 ...

  9. Docker Mysql数据库主从同步配置方法

    一.背景 最近在做内部平台架构上的部署调整,顺便玩了一下数据库的主从同步,特此记录一下操作- 二.具体操作 1.先建立数据存放目录(-/test/mysql_test/) --mysql --mast ...

随机推荐

  1. uva 331 Mapping the Swaps 求交换排序的map 纯DFS

    给出一个序列,每次交换两个数,求有几种交换方法能使序列变成升序. n不大于5,用dfs做. 代码: #include <cstdio> #include <cstring> # ...

  2. 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇(转)

    .net 框架号称永远不会发生内存泄漏,原因是其引入了内存回收的机制.但实际应用中,往往我们分配了对象但没有释放指向该对象的引用,导致对象永远无法释放.最 常见的情况就是给对象添加了事件处理函数,但当 ...

  3. [leetcode]Spiral Matrix II @ Python

    原题地址:https://oj.leetcode.com/problems/spiral-matrix-ii/ 题意: Given an integer n, generate a square ma ...

  4. iOS - 切换图片/clip subview/iCarousel

    源代码:点击打开链接 这个图片展示的时候,我只想让它在蓝色的view上展示..就需要去设置view的一个属性clip subview..把这个属性打勾...view有个clip subview属性,选 ...

  5. win7下使用Taste实现协同过滤算法

    如果要实现Taste算法,必备的条件是: 1) JDK,使用1.6版本.需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量. 2) Maven,使用2 ...

  6. 【图片识别】java 图片文字识别 ocr (转)

    http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...

  7. Spring Boot集成持久化Quartz定时任务管理和界面展示

    本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot. 本工程所用到的技术或工具 ...

  8. Java-JUC(十一):线程8锁

    题目: 判断以下8种情况,输出的内容 题目一:一个Number实例对象number,两个非静态同步方法getOne,getTwo,两个线程打印输出(一个线程调用number.getOne,另外一个线程 ...

  9. 如何给USB移动硬盘格式化分区

    硬盘盒装好后,插在电脑USB接口上,电脑正常识别到移动硬盘后,但因为全新硬盘没有分区,在"我的电脑"里是看不到盘符的.下面以40G移动硬盘分区讲一下硬盘如何分区.1.操作系统最好是 ...

  10. 成为Linux内核高手的四个方法

    首页 最新文章 资讯 程序员 设计 IT技术 创业 在国外 营销 趣文 特别分享 更多 > - Navigation -首页最新文章资讯程序员设计IT技术- Java & Android ...