文档章节

MySQL主从复制配置

IamOkay
 IamOkay
发布于 2015/04/24 17:21
字数 1160
阅读 36
收藏 0
点赞 0
评论 0

配置说明

MySQL的复制可以是整个数据库实例或者是某个库,某个表.主要通过master的binlog-do-db哪些要记录日志 -ignore-db哪些不用记录日志,slave可以通过replicate -do-db. -ignore-db...等复制命令进行同步进行控制.建议一般是通过slave端进行控制,可以更精细化的控制,master建立完整的日志操作。


一、安装MySQL

master:192.168.21.169

slave: 192.168.21.168

版本:MySQL 5.5.22

系统:linux

 

二、创建账户


创建用于Slave复制Master的账户

1.创建slave账户方式一

#进入MySQL控制台
>mysql  -uroot  -p   

#创建用户osyunweiuser,#建立MySQL主从数据库同步用户osyunweidbbak密码123456 
>use mysql;
>insert into user(Host,User,Password)values('localhost','osyunweiuser',password('123456'));  

#授权用户osyunweidbbak只能从192.168.21.%这个网段访问主服务器上面的数据库,并且只具有数据库备份的权限
>grant replication slave  on *.* to 'osyunweidbbak'@'192.168.21.%' identified by '123456';

#刷新系统授权表
>flush privileges;   

2.创建slave账户方式二

#进入MySQL控制台
>mysql  -uroot  -p   

#创建用户osyunweiuser
>create user osyunweidbbak; 

#repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.21.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.21.1-192.168.21.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.21.%' IDENTIFIED BY 'mysql';

三.配置主从的my.cnf

主库:

[mysqld]

server-id=169  #必须唯一
log-bin=mysql-bin
binlog_format=MIXED  

从库:

[mysqld]

server-id=168 #必须唯一
log-bin=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin.index
replicate-ignore-db=mysql #不对master的mysql库进行复制
log_slave_updates=1  #将复制事件写进自己的二进制日志
#replicate-do-db=mytestdb
binlog_format=MIXED

然后重启master库与slave库

 

四、将master数据备份到slave

注意:①如果是刚安装的数据库,可以不需要备份

注意:②该步骤同样适合用于主从不一致时的问题
1、进入数据库,锁定表,只能读取 【防止系统处于运行环境】


#数据库只读锁定命令,防止导出数据库的时候有数据写入
>flush tables with read lock;    

2.退出数据库,进行数据库备份

>mysqldump --single-transaction --master-data=2 --triggers --routines  
--default-character-set='utf8' --flush-logs --all-databases -u root -p > master.sql;

注意:master-data=2 表示注释掉其中master.sql的日志点和日志CHANGE语句

3.进入数据库,解除锁定【防止系统处于运行环境】

#解除锁定
>unlock tables;   

4.拷贝备份SQL到从库 

>scp master.sql root@192.168.21.168:`pwd` #传输到与master相同的目录下
#或者执行如下命令
#scp master.sql root@192.168.21.168:/tmp  #传输到与master /tmp下

导入sql到slave数据库

>mysql -uroot -p < master.sql

 

五、连接master与slave

1.关闭master与slave的防火墙

checkconfig iptables off

2.找到日志点和日志文件

我们已经有了master.sql文件,只需要找到其中的change master一行

注意:网上的一些博客要说,使用如下命令,但是这条语句有个前提“在master备份时候或者是主从库都是刚安装数据库时候”才行,这个时候,数据库只能处于只读状态或者是空的,这样才能保证数据一致。

>show master status \G

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |    1687  |              | mysql            |
+------------------+----------+--------------+------------------+

3.连接master与slave

#连接
> CHANGE MASTER TO
master_Host='192.168.21.169',
master_Port=3306, 
master_User='osyunweiuser',
master_Password='123456', 
master_Log_File='mysql-bin.000004',
master_Log_Pos=1687,
master_Connect_Retry=60;

#启动slave
> START SLAVE;

注意:如果之前本身已经是主从结构,那么可能需要执行如下命令

#停止slave
> STOP SLAVE;

#连接
> CHANGE MASTER TO
master_Host='192.168.21.169',
master_Port=3306, 
master_User='osyunweiuser',
master_Password='123456', 
master_Log_File='mysql-bin.000004',
master_Log_Pos=1687,
master_Connect_Retry=60;

#重置并且启动slave

>RESET SLAVE;
>START SLAVE;

4.检查是否已经成功

>SHOW SLAVE STATUS\G   #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.21.169
                  Master_User: osyunweidbbak
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.00004
          Read_Master_Log_Pos: 1687
               Relay_Log_File: MySQLSlave-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000019
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: mysql
           Replicate_Do_Table:
       Replicate_Ignore_Table:

六、测试

master上

>create database foodsafe;
>create table t1 (id int,name varchar(200),createtime timestamp,key(id));
>insert into t1 values (1,'aa',now());
>insert into t1 values (3,'bb',now());
>select * from t1;

slave上:

use foodsafe;
select * from t1;

观察两边结果是否一致。

参考博客

http://www.cnblogs.com/cchun/p/3712637.html

MySQL数据库的同步配置+MySql读写分离

Mysql主从配置,实现读写分离

http://blog.csdn.net/orangleliu/article/details/46532215

MySQL主从架构配置

慕课网mysql主从复制视频

2种方法解决mysql主从不同步

记录一次mysql从库恢复并开启主从复制的过程

基于mysqldump快速搭建从库

配置MySQL GTID 主从复制

基于mysqldump搭建gtid主从

 

© 著作权归作者所有

共有 人打赏支持
IamOkay
粉丝 187
博文 458
码字总数 369998
作品 0
海淀
程序员
Mysql主从复制以及常见错误问题分析

Mysql主从复制以及常见错误问题分析 一、主从复制简介: 1、mysql主从复制原理: Mysql主从复制的实现,主要依赖于二进制日志来实现,过程主要是根据把主的MySQL 的数据复制到其它主机( Sla...

技术小疯子
01/22
0
0
MySQL的主从复制介绍及配置

1.MySQL主从复制介绍 MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务...

10pcm
06/26
0
0
MySQL5.7.21开启Gtid配置主从复制

mysql5.7.21开启Gtid配置主从复制 一、环境: mysql 主库master:10.0.0.101 172.168.1.101 mysql 从库slave:10.0.0.103 172.168.1.103 mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 二进制......

wjw555
07/09
0
0
MySQL架构的优化

mysql的复制: mysql的二进制日志:记录了所有对MySQL数据库的数据增删查改和对表和数据库的修改 binlog命令行的工具进行查看 二进制日志格式:

Panda_Jerry
2017/11/12
0
0
MYSQL主从复制配置

下载免安装MYSQL版本,这里以5.5.50版本为例,配置一主两从MYSQL服务 2. 解压复制三份,分别命名为 3. 创建my.ini配置文件,配置Master数据库 3. 创建my.ini配置文件,配置Slave 1数据库 4....

我想去看一看大海
2016/07/03
36
0
Mysql主从复制

Mysql主从复制 背景: Mysql可以实现主从复制,在学习了Mysql主从复制后,将一些如何主从复制过程记录下来,供以后复习使用。 准备: 在做Mysql的主从复制前需要做一些准备工作: 1、同步时间...

657188918
2017/11/13
0
0
MySQL 主从复制原理及搭建

一.主从复制的工作过程: 二.MySQL复制类型 基于SQL语句的复制 基于行的复制 混合复制 三.实验环境 OS:CentOS 6.5 x64 master:192.168.0.134 slave:192.168.0.135 三.配置主从复制 1.配置...

HowardSir
06/29
0
0
Mysql数据库AB复制简单实现

Mysql 主 从 复 制 在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,我们可以对mys...

YLSL2014
07/04
0
0
Mysql主从复制和读写分离方案分析

引子 最近在研究Web服务端负载均衡方面的技术,参考网上资料,总体思路可以分为如下几类: 1.应用服务器集群,典型的代表就是Nginx+Tomcat实现负载均衡; 2.数据库集群。 本文主要关注数据库...

蓝狐乐队
2015/03/24
0
1
菜鸟也玩mysql之主从复制篇(上)

在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,我们来学习一下mysql主从复制。 使...

wbf961127
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
2分钟前
0
0
Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
1
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
今天
1
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
今天
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
今天
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部