文档章节

14-3 17 MySQL主从配置

阿想
 阿想
发布于 2017/08/30 17:50
字数 1008
阅读 7
收藏 0
点赞 0
评论 0

MySQL主从配置

17.1 MySQL主从介绍

概念

  • MySQL主从又叫做Replication、AB复制。
  • 假设A机器作为主Master,B机器作为从Slave。MySQL主从实现A,B数据实时同步
  • 基于binlog,主上需要开启

主从原理

  • A通过log dump线程与B的I/O线程通信,使binlog与relaylog同步,relaylog再通过SQL线程将数据写入B。从而实现AB复制

  • A上写入数据——>数据变动记入binlog——>交给A上logdump线程——>交给B上I/O线程——>数据变动记入relaylog——>通过B上SQL线程——>数据写入B

场景:

  1. B作为备份
  2. B作为可读,减轻A访问压力

17.2 准备工作

  1. 安装MySQL wget tar mv 安装(./scripts/mysql_install_db --user= --datadir=)
  2. 配置my.cnf 配置服务脚本cp(support-file/mysql.server /etc/init.d/mysqld)
  3. 启动服务

MySQL启动异常,查看日志

cd /data/mysql
less 主机名.err

...[ERROR]...Permission denied ... 
...[ERROR]...read-write mode
  • 常见错误:权限问题,可能由于innobackup恢复后变为root

17.3 配置主

A机器作为主,IP为10.1.1.8

  • 主上配置主要有四步
    1. 开启主,加ID
    2. 准备库和同步用户
    3. 锁表,看主信息
    4. 做给B起始数据

第一步,开启主(binlog)

[root@axiang-02 ~]# vi /etc/my.cnf,
[mysqld]下增加
server-id=8
log_bin=axianglinux1
[root@axiang-02 ~]# /etc/init.d/mysqld restart  //重启
[root@axiang-02 ~]# cd /data/mysql
[root@axiang-02 mysql]# ls -lt
总用量 176184
-rw-rw---- 1 mysql mysql       22 8月  30 15:01 axianglinux1.index  binlog索引,主从根本
-rw-rw---- 1 mysql mysql      120 8月  30 15:01 axianglinux1.000001 第一个二进制binlog文件

第二步:准备库和同步用户

参照blog库制作axiang用于测试

[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux blog > /tmp/blog.sql
[root@axiang-02 mysql]# mysql -uroot -paxianglinux -e "create database axiang"
[root@axiang-02 mysql]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql
[root@axiang-02 mysql]# ls -lt
总用量 176184
-rw-rw---- 1 mysql mysql      220 8月  30 15:08 axianglinux1.000001
drwx------ 2 mysql mysql       20 8月  30 15:08 axiang

创建用作同步数据的用户

[root@axiang-02 mysql]# mysql -uroot -paxianglinux
mysql> grant replication slave on *.* to 'repl'@'10.1.1.9' identified by 'axianglinux';

第三步,锁表并查看主信息

mysql> flush tables with read lock;  锁表
mysql> show master status;
+---------------------+----------+--------------+------------------+-------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------+
| axianglinux1.000001 |      425 |              |                  |                   |
+---------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

第四步,做给B起始数据

[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux cms > /tmp/cms.sql
  • 同步axiang blog cms三个库,起始的数据要一致。
  • 可以通过mysqldump生成cms.sql blog.sql。复制给B机器

17.4 配置从

B机器作为从,IP为10.1.1.9

  • 从上配置主要有三步
    1. 加入ID
    2. 复制并同步A的起始数据
    3. 开启从

第一步,加入ID

[root@axiang-03 ~]# vi /etc/my.cnf
[mysqld]下加入
server-id=9  //不需要binlog,id不能与主一样,建议写IP末位

第二步,同步起始数据数据

[root@axiang-03 ~]# scp 10.1.1.8:/tmp/*.sql /tmp/  //远程复制过来
[root@axiang-03 ~]# mysql -uroot -paxianglinux

mysql> create database cms;
mysql> create database axiang;
mysql> create database blog;

[root@axiang-03 ~]# mysql -uroot -paxianglinux blog < /tmp/blog.sql 
[root@axiang-03 ~]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql 
[root@axiang-03 ~]# mysql -uroot -paxianglinux cms < /tmp/cms.sql

第三步开启从

[root@axiang-03 ~]# mysql -uroot -paxianglinux
mysql> stop slave;
mysql> change master to master_host='10.1.1.8', master_user='repl', master_passwoord='axianglinux', master_log_file='axianglinux1.000001', master_log_pos=425;
mysql> start slave;
mysql> show slave status\G
 

  • 还要到主上执行 unlock tables

17.5 测试主从同步

指定主从范围

 主服务器上
 binlog-do-db=      //仅同步指定的库
 binlog-ignore-db= //忽略指定库

主加入指定同步数据库

 从服务器上
 replicate_do_db=
 replicate_ignore_db=
 replicate_do_table=
 replicate_ignore_table=
 replicate_wild_do_table=   //如aming.%, 支持通配符% 
 replicate_wild_ignore_table=
  • 一般使用最后两个replicate,因为前四个replicate匹配模糊,当选择了非监听库后,会忽略之后的操作。可能会导致数据丢失

测试结论

  • 开启主从后,如果起始数据不一致,对库,表,字段的操作。只要逻辑可行,则会保持主从同步的。比如主删除一个从上没有的用户,会导致主从断开。但是主添加新用户,删除两边都有的用户则可以同步
  • 从上只能进行查询操作。修改,添加会导致主从断开,需要按照新主状态show master status从新链接

© 著作权归作者所有

共有 人打赏支持
阿想
粉丝 0
博文 72
码字总数 69742
作品 0
MySQL主从架构

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。它基于binlog,主设备上须开启binlog才能进行主从。 主...

技术小美 ⋅ 2017/11/07 ⋅ 0

MySQL 5.6 一主多从的 半同步复制搭建

MySQL 5.6 一主多从的 半同步复制搭建 半同步简介: 在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新的数据写...

xiaocao13140 ⋅ 05/24 ⋅ 0

MySQL主从复制架构及原理

一、简介 在实际生产中,数据的重要性不言而喻,因此考虑到数据的重要性比如单点故障导致后端数据库奔溃,或者后端数据库访问压力过大等,mysql数据库做主从非常有必要,减轻后端数据库压力,...

日久不生情 ⋅ 2017/11/15 ⋅ 0

rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明。否则将追究法律责任。http://407711169.blog.51cto.com/6616996/1203973 mysql's replication Mysql的 ...

jinmy001 ⋅ 2013/08/08 ⋅ 0

手把手教你入门MySQL零基础入门教程!

目前MySQL已经成为最为流行的开源关系数据库系统,并且一步一步地占领了原有商业数据库的市场。可以看到Google、Facebook、Yahoo、网易、久游等大公司都在使用MySQL数据库,甚至将其作为核心...

一定听你 ⋅ 2017/06/14 ⋅ 0

Zabbix 监控Mysql数据库及主从数据库

Zabbix监控mysql主从数据库在脚步出现用户名和密码是会出现如下报错“Warning: Using a password on the command line interface can be insecure”,报错原因是mysql 5.6版本增加了密码安全...

科技小能手 ⋅ 2017/11/12 ⋅ 0

MySQL-Proxy实现MySQL读写分离提高并发负载

工作拓扑: MySQL Proxy有一项强大功能是实现“读写分离”,基本原理是让主数据库处理写方面事务,让从库处理SELECT查询。 Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,...

技术小阿哥 ⋅ 2017/11/26 ⋅ 0

从库宕机引发的主键冲突

刚刚接到报警短信,从库宕机,马上通知机房重启,在检查MySQL时,发现同步挂了,报主键冲突,询问开发是不是有往里面写数据,回答没有。 这就奇怪了,怎么会无缘无故报错呢?在检查了my.cnf配...

技术小甜 ⋅ 2017/11/16 ⋅ 0

mysql5.7的主从复制+读写分离

Mysql主从复制与读写分离 目录: 1、mysql主从复制工作原理 2、mysql读写分离原理,使用Amoeba中间代理层实现读写分离 3、在vmware中实现mysql主从复制+读写分离 一、Mysql主从复制的工作原理...

咖啡猫Mr ⋅ 2017/05/25 ⋅ 0

mysql 主从复制 && 失败切换

软件环境: mysql软件包:mysql-5.6.17.tar.gz cmake软件包:cmake-2.8.12.2.tar.gz @ wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz 系统版本: 开始安装: ==============......

qq610148679 ⋅ 2014/12/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 22分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 38分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 今天 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部