复制多主一从

replicaion

原理

复制有三个步骤:(分为三个线程 slave:io线程 sql线程 master:io线程)

1、master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)

2、slave将master的binary log events拷贝到它的中继日志(relay log)

3、slave读取中继日志中的事件,将其重放到slave数据之上

日志解释

从库先通过io线程读取主库的二进制文件(Master_Log_File)和位置(Read_Master_Log_Pos)然后缓存到本地(从库服务器)的中继文件(Relay_Log_File)中并记录已经读取到的位置(Relay_Log_Pos),再通过从库的sql线程去读取中继文件(Relay_Log_File),这个sql线程执行会记录已经执行到了哪个文件(Relay_Master_Log_File)和哪个位置(Exec_Master_Log_Pos)。

配置复制

1、在master创建复制账号  

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@'192.168.0.%' IDENTIFIED BY 'PASSWD';

2、配置master和slave

master
server-id =
log-bin = mysql-bin
expire-logs-days = # 设置二进制日志过期的天数
max_binlog_size = 512M # 二进制日志滚动的阀值 slave
server-id =
expire-logs-days =
max-relay-log-size = 512M
relay-log = mysql-relay-bin
relay_log_recovery = # 修复中继日志
replicate_wild_ignore_table = mysql.% # 过滤哪些主库不复制

3、通知slave连接到master并从master复制数据

CHANGE MASTER TO MASTER_HOST='master',MASTER_USER='repl',MASTER_PASSWORD='passwd',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=; 

4、启动复制,查看状态

slave
  START SLAVE

show slave status\G

在输出信息中查看I/O线程和SQL线程的状态值(YES为正常,NO为错误)

  Slave_IO_Running: Yes

  Slave_SQL_Running: Yes

mysqld_multi

与安装单实例一样,只是要初始化多个数据目录对应相应的实例

mkdir -p /storage/data/mysql{,,}
chown -R mysql:mysql /storage/data/mysql{,,}
scripts/mysql_install_db --user=mysql --datadir=/storage/data/mysql1
scripts/mysql_install_db --user=mysql --datadir=/storage/data/mysql2
scripts/mysql_install_db --user=mysql --datadir=/storage/data/mysql3

添加多实例管理用户

GRANT SHUTDOWN ON *.* TO 'multi'@'localhost' IDENTIFIED BY 'multi'

mysqld_multi

Usage: mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]

my.cnf

[mysqld_multi]
mysqld = /storage/server/mysql/bin/mysqld_safe
mysqladmin = /storage/server/mysql/bin/mysqladmin
user = multi
password = multi
log = /storage/data/mysqld_multi.log [mysqld1]
# mysql1
port =
socket = /tmp/mysql3306.sock
basedir = /storage/server/mysql
datadir = /storage/data/mysql1
character-set-server=utf8
collation-server=utf8_unicode_ci
server-id =
expire-logs-days =
max-relay-log-size = 512M
relay-log = mysql1-relay-bin
relay_log_recovery =
replicate_wild_ignore_table=mysql.% [mysqld2]
# mysql2
port =
socket = /tmp/mysql3307.sock
basedir = /storage/server/mysql
datadir = /storage/data/mysql2
character-set-server=utf8
collation-server=utf8_unicode_ci
server-id =
expire-logs-days =
max-relay-log-size = 512M
relay-log = mysql2-relay-bin
relay_log_recovery =
replicate_wild_ignore_table=mysql.% [mysqld3]
# mysql3
port =
socket = /tmp/mysql3308.sock
basedir = /storage/server/mysql
datadir = /storage/data/mysql3
character-set-server=utf8
collation-server=utf8_unicode_ci
server-id =
expire-logs-days =
max-relay-log-size = 512M
relay-log = mysql3-relay-bin
relay_log_recovery =
replicate_wild_ignore_table=mysql.%

mysql主从常见错误

error 1062

错误原因:主键冲突 出现这种情况就是从库出现插入操作 主库又重新来了一遍 iothread没问题 sqlthread出错

解决方案:从库

mysql> stop slave;
mysql> set global sql_slave_skip_counter=;
mysql> start slave;

MySQL复制配置(多主一从)的更多相关文章

  1. mysql复制(高可用架构方案的基础)

    mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以 ...

  2. 使用 Ansible 管理 MySQL 复制

    Ansible 是一个新兴的 IT 自动化工具.本文将介绍如何通过 Ansible 配置及管理 MySQL 主.从复制环境,实现部署过程自动化,体验 Ansible 简单快速带来的快感. 简介: An ...

  3. mysql 架构篇系列 4 复制架构一主一从搭建(半同步复制)

    一.概述 在mysql 5.5之前,mysql 的复制是异步操作,主库和从库的数据之间存在一定的延时,这样存在一个隐患:当主库上写入一个事务并提交成功,而从库尚未得到主库推送的Binlog日志时,主库 ...

  4. mysql主从配置实现一主一从读写分离

    主从介绍Mysql主从又叫Replication.AB复制.简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步mysql主从是基于binlog,主上需开启bin ...

  5. 【3.1】【mysql基本实验】mysql复制(主从复制/异步复制/半同步复制,一主一从)

    关键词:mysql复制(异步复制),mysql异步复制 核心原理: mysql 复制流程原理 一个事务在 mysql异步复制中的流程与生命周期 一个事务,在传统半同步的复制流程 #mysql主从基本实 ...

  6. MySQL 复制 - 性能与扩展性的基石 2:部署及其配置

    正所谓理论造航母,现实小帆船.单有理论,不动手实践,学到的知识犹如空中楼阁.接下来,我们一起来看下如何一步步进行 MySQL Replication 的配置. 为 MySQL 服务器配置复制非常简单. ...

  7. Mysql Group Replication 简介及单主模式组复制配置【转】

    一 Mysql Group Replication简介    Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务.    高一致性,基于原生复制及p ...

  8. 通过mysqltools全自动安装配置mysql复制环境

    一.从github下载mysqltools工具包 github地址:https://github.com/Neeky/mysqltools 二.环境规划: 主机名 ip mysql中的角色 maste ...

  9. MySQL半同步复制配置

    ansible-playbook -f 3 endpoint/mysql.yml -e "exec=fileConfig" -e "db_action=setAll&qu ...

随机推荐

  1. SQL Server快捷键

    SQL Server快捷键 金刚 SQL Server 快捷键 自己汇总的键盘操作快捷键 F7 切换到对象资源管理器 F5 执行T-Sql语句 F6 跳转到列属性 Alt+Enter 表属性 其实还有 ...

  2. python爬虫—爬取百度百科数据

    爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数 ...

  3. SqlServer数据冗余的问题和解决

    1问题: 1>造成了存储空间的浪费. 2>更新异常.删除异常. 所以一般情况不允许在表中出现数据冗余. 2怎么解决? 把原来表中的数据拆分成多个表来存储. 当把表中的信息拆分成多个表来存储 ...

  4. Linux如何搜索查找文件里面内容

    在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是gr ...

  5. JavaScript 省市级联效果

    JavaScript 省市级联效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  6. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

  7. Java 中的 Filter 过滤器详解

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  8. Windows下FFmpeg各版本库文件下载

    ffmpeg主要是基于linux开发,当然它也支持windows,不过并不支持visual studio系列IDE(因为它使用了大量C99特性,而vs不支持C99). 要想在windows上使用 一可 ...

  9. JavaScript的写类方式(6)

    时间到了2015年6月18日,ES6正式发布了,到了ES6,前面的各种模拟类写法都可以丢掉了,它带来了关键字 class,extends,super. ES6的写类方式 // 定义类 Person c ...

  10. Linux系统有7个运行级别(runlevel)

    Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别 ...