mysql51:192.168.4.51 主
mysql52:192.168.4.52 从
mysql50:192.168.4.50 客户机
 
1.MySQL一主一从
 
1.1 51,52 安装mysql,设置密码123456
51:
[mysqld]
log-bin=master51
server_id=51
binlog_format="mixed"
52:
[mysqld]
log-bin=mysql52
server_id=52
binlog_format="mixed"
 
1.2 主库授权
需要的权限为REPLICATION SLAVE,允许其从Slave服务器访问:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicater'@'192.168.4.%' IDENTIFIED BY '123qqq...A';
 
检查Master服务器的同步状态
在已经初始化现有库的情况下,查看MASTER状态,记录下当前的日志文件名、偏移的位置(下面SLAVE发起复制时需要用到):
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: master51.000001
         Position: 453
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
 
1.3 从库配置(52)
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.4.51',
    -> MASTER_USER='replicater',
    -> MASTER_PASSWORD='123qqq...A',
    -> MASTER_LOG_FILE='master51.000001',
    -> MASTER_LOG_POS=453;
mysql> START SLAVE;   //启动复制
mysql> SHOW SLAVE STATUS\G
...
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
...
注意:一旦启用SLAVE复制,当需要修改MASTER信息时,应先执行STOP SLAVE停止复制,然后重新修改、启动复制。
主从配置好后,Master写的数据可以同步到Slave上,Slave的数据不能同步到Master上。
 
在Master服务器上可查看Slave主机的信息
mysql> SHOW SLAVE HOSTS;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|        52 |      | 3306 |        51 | cecb01aa-2f8f-11e9-bab2-5254002b03e1 |
+-----------+------+------+-----------+--------------------------------------+
 
2.配置主从从同步结构
配置主机192.168.4.51为主数据库服务器
配置主机192.168.4.52为51主机的从库服务器
配置主机192.168.4.53为52主机的从库服务器
客户端连接主数据库服务器51主机创建的数据,连接52和53主机时,也可以访问到库、表、记录。
 
2.1 配置主机192.168.4.53为52主机的从库服务器
2.1.1 在服务器192.168.4.52上对user53用户进行授权
mysql> grant replication slave on *.* to user53@"192.168.4.53" identified  by "123qqq...A";
]# vim /etc/my.cnf
...
log_slave_updates   //允许级联复制
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql52.000001
         Position: 154
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
 
2.1.2 配置从服务器192.168.4.53
验证登陆
]# mysql -h192.168.4.52 -uuser53 -p123qqq...A
正常登陆:
]# mysql -uroot -p123456
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.4.52',
    -> MASTER_USER='user53',
    -> MASTER_PASSWORD='123qqq...A',
    -> MASTER_LOG_FILE='mysql52.000001',
    -> MASTER_LOG_POS=154;
 
************************
修改密码验证:
[mysqld]
validate_password_policy=0
validate_password_length=6
************************
 
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
...
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
...
如果出问题
mysql>STOP SLAVE;
mysql>RESET SLAVE;
mysql>START SLAVE;
或者
mysql> change master to
可以单独修改某一句
 
2.1.3 检测:
51写的数据会同步到52,53
52写的数据会同步到53
53写的数据只会再本地
 
3.配置半同步复制模式
开启案例1 主库192.168.4.51 半同步复制模式
开启案例1 从库192.168.4.52 半同步复制模式
开启案例1 从库192.168.4.53 半同步复制模式
查看半同步复制模式是否开启
 
3.1 查看是否允许动态加载模块
mysql> show variables like 'have_dynamic_loading';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
 
3.1 命令行加载插件,用户需有SUPER权限
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
从库上面操作:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看系统库下的表,模块是否安装成功:
mysql> SELECT PLUGIN_NAME,PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
 
启用半同步复制,在安装完插件后,半同步复制默认是关闭的
主库上面执行:
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
从库上面执行:
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
查看半同步复制模式是否启用:
mysql> show variables like "rpl_semi_sync_%_enabled";
 
永久启用半同步复制
主库配置
]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
从库配置
]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
在高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制
master51 ~]# vim /etc/my.cnf
[mysqld]
plugin-load \
="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
 
查看:
mysql> show variables like "rpl_semi_sync_%_enabled";
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON    |
| rpl_semi_sync_slave_enabled  | ON    |
+------------------------------+-------+

三十四.MySQL主从同步 、主从同步模式的更多相关文章

  1. Python学习日记(三十四) Mysql数据库篇 二

    外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...

  2. FreeSql (三十四)CodeFirst 迁移说明

    FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能. 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也 ...

  3. Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. “全栈2019”Java第三十四章:可变参数列表

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. spring boot 常见三十四问

    Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...

  7. COJ966 WZJ的数据结构(负三十四)

    WZJ的数据结构(负三十四) 难度级别:C: 运行时间限制:20000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给一棵n个节点的树,请对于形如"u  ...

  8. NeHe OpenGL教程 第三十四课:地形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

    JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...

随机推荐

  1. The Preliminary Contest for ICPC Asia Xuzhou 2019 E XKC's basketball team [单调栈上二分]

    也许更好的阅读体验 \(\mathcal{Description}\) 给n个数,与一个数m,求\(a_i\)右边最后一个至少比\(a_i\)大\(m\)的数与这个数之间有多少个数 \(2\leq n ...

  2. VMWare linux虚拟机(centos没有GUI)联网(NAT模式)

    使用yum list命令查看是否能连上网. 不能联网,需要对centos进行网络配置.但在此之前,需要: 1. 虚拟机网络连接方式设置成NAT. 2. window系统下的两个服务VMwareDHCP ...

  3. C#进阶系列——WebApi接口返回值类型详解

    阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...

  4. shell 学习笔记8-case条件语句

    一.case语句简介 1.什么是case条件语句 case条件语句就相当于多分支的if/elif/else条件语句,但是比这样的语句更规范更好看,经常被用在失效系统服务启动脚本等企业应用中 程序将ca ...

  5. VBA子程序(十六)

    子程序(Sub Procedures,也叫子过程)与函数类似,但有一些差异. 子过程不需要有返回一个值,而函数可能会或可能不会有返回一个值. 子程序可以不用call关键字来调用. 子程序总是包含在Su ...

  6. Python 使用gevent实现多任务

    import gevent import time # 如果需要默认的 time.sleep(0.5) 需要打补丁 from gevent import monkey monkey.patch_all ...

  7. mysql日期模糊查找的方法

    Mysql模糊查询有以下三种方法: 1.Convert转成日期时间型,在用Like查询.select * from table1 where convert(date,DATETIME) like ' ...

  8. Android NDK 学习之在C中抛出异常

    本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse-> ...

  9. iOS testflight 使用说明

    一.告知开发者苹果手机的账户邮箱 1.通过任何形式告知即可 2.下载testflight 二.开发者发送激活邮件到测试者的账户邮箱 1.进入邮箱查看邮件点击 Accept invitation 进行下 ...

  10. Spring之AOP原理、代码、使用详解(XML配置方式)

    Spring 的两大核心,一是IOC,另一个是AOP,本博客从原理.AOP代码以及AOP使用三个方向来讲AOP.先给出一张AOP相关的结构图,可以放大查看. 一.Spring AOP 接口设计 1.P ...