该文使用mysql5.5 centos6.5 64位

一、主从复制的作用

1、如果主服务器出现问题,可以快速切换到从服务器。

2、对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降低主服务器的访问压力。将数据的读写进行分离从而达到负载的效果。

3、可以在从服务器进行数据备份操作,以避免备份期间对主服务器的影响。

主从复制原理:

原理解析:master服务器开启binlog日志,slave服务器通过master服务器授予的用户将master服务器产生的binlog日志读到本地并转为relaylog日志,然后执行relaylog日志。

二、搭建主从复制环境

master:192.168.6.224

slave:192.168.6.222

1、在主服务器中为从服务器设置授权用户

在主服务器中为从服务器192.168.6.222创建一个用户名为user2的用户,密码是123

mysql> grant all on *.* to user2@192.168.6.222 identified by "123";

参数解释:

grant:mysql授权关键字

*.* :所有库所有表

查看用户授权是否成功:

mysql> show grants for user2@192.168.6.222;

测试在slave服务器上使用user2能否登陆master服务器上的mysql

[root@localhost tmp]# mysql -uuser2 -p123 test -h192.168.6.224;

2、开启主服务器的bin-log日志并开设置server-id的值。

  修改主服务器的my.cnf配置文件:

[mysqld]
#开启mysql的bin-log日志
log-bin=mysql-bin
#主服务器该值设置为1
server-id = 1

3、重置bin-log日志:mysql> reset master;

查看最新的bin-log日志状态看是否在起始位置: mysql> show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |              |                  |
+------------------+----------+--------------+------------------+

4、备份主数据库数据

  a、备份数据

  b、更新bin-log日志

  在这里我们使用mysqldump方式备份数据并使用 -l -F 参数直接在备份数据的时候设置读锁并更新bin-log日志

  mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

5、将主服务器备份的数据发送到slave服务器

  [root@localhost tmp]# scp mysql_back/test.sql 192.168.6.222:/tmp/mysql_back/

6、重置slave服务器上的bin-log日志并在slave服务器中使用备份的数据

  mysql> rester master;

  [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql;

7、配置slave服务器中my.cnf参数

  a、#配置从服务器server-id =2 (如果有多台从服务器则都有一个唯一的server-id)
    server-id = 2

  b、#开启bin-log日志
    log-bin=mysql-bin

  c、#配置需要同步的主机、用户名、密码、端口号

#配置需要同步的主机
master-host = 192.168.6.224
# The username the slave will use for authentication when connecting
# to the master - required
master-user = user2
#
# The password the slave will authenticate with when connecting to
# the master - required
master-password = 123
#
# The port the master is listening on.
# optional - defaults to 3306
master-port = 3306

  d、重启mysql让配置文件生效

  [root@localhost tmp]# service mysqld restart

  如果改方式无法重启mysql服务器可以使用下面的方式

mysql> change master to master_host="192.168.6.224",
master_user="user2",
master_password="123",
master_port=3306,
master_log_file="mysql-bin.000002",master_log_pos=107;
mysql> slave start;

8、查看slave状态

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.6.224
Master_User: user2
Master_Port: 3306
Connect_Retry: 60 //每隔60秒去master服务器同步一次bin-log日志
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 107
Relay_Log_File: localhost-relay-bin.000002 //slave服务器日志
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes //这两行参数为yes表示主从配置成功

Master_Log_File:代表主机上用于主备同步的日志文件名,

Read_Master_Log_Pos:代表上一次成功同步到的日志文件中的位置。

如果这两项与先前在主服务器上看到的File及Position的值不相符,则无法正确进行同步。

三、测试

1、在master服务器添加数据并查看bin-log日志状态

mysql> insert into t1 values(13);
Query OK, 1 row affected (0.02 sec) mysql> insert into t1 values(14);
Query OK, 1 row affected (0.01 sec) mysql> insert into t1 values(15);
Query OK, 1 row affected (0.01 sec) mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 656 | | |
+------------------+----------+--------------+------------------+

2、查看slave同步状态

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.6.224
Master_User: user2
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 656
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 802
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

在这里可以看到主服务器的Postion与从服务器的Read_Master_Log_Pos值相等且Slave_IO_Running,Slave_SQL_Running值都是 Yes 。这样mysql的主从配置成功。

四、主从复制常用命令

1、start slave #启动复制线程

2、stop slave #停止复制线程

3、show slave status #查看从数据库状态

4、show master logs;#查主数据库有哪些bin-log日志

5、change master to #动态改变到主服务器的配置

6、show processlist;#查看从数据库的运行进程

  

  

    

 

mysql学习之主从复制的更多相关文章

  1. mysql学习(3)-linux下mysql主从复制

    前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...

  2. 我的MYSQL学习心得(十七) 复制

    我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  3. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  4. Linux - centos7 下 MySQL(mariadb) 和 主从复制

    目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...

  5. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  6. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  9. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. 《PHP实用问题解决案例》系列分享专栏

    <PHP实用问题解决案例>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201725.html 文章 PHP汉字拼音转换和公历农历 ...

  2. HBase简介(梳理知识)

    一. 简介 hbase是bigtable的开源山寨版本.是建立的hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它介于nosql和RDBMS之间,仅能通过主键(row key ...

  3. linux 网络编程 1---(基本概念)

    1.TCP和UDP协议 共同点:同为传输层协议 不同点: TCP:有连接,可靠 UPD 无连接,不保证可靠 TCP(即传输控制协议): 是一种面向连接的传输层协议,它是能提供高可靠性通信(即,数据无误 ...

  4. linux下使用汇编语言编写hello world!程序

    最近公司需要完成安全方面的测试,随之带来需要更深入地学习攻击方法和漏洞分析的技术,总感觉有点像黑客:),不过不能只知道一些安全测试工具的方法和工具的使用,更需要基础功夫,首先从大学学过的汇编语言(呵呵 ...

  5. mfc通过MapWinGIS控件读取shp文件(通过#import实现)

    在MFC工程中想使用MapWinGIS组件,有多种方法可以实现, 第一种方法,#Import来实现 1.首先注册MapWinGIS ActiveX组件, 2.新建一个单文档工程:MapGis,为控件添 ...

  6. quartz 核心概念

    一.quartz 核心概念 1.scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就 ...

  7. 游戏人工智能 读书笔记 (四) AI算法简介——Ad-Hoc 行为编程

    本文内容包含以下章节: Chapter 2 AI Methods Chapter 2.1 General Notes 本书英文版: Artificial Intelligence and Games ...

  8. Android Preference 设置偏好全攻略

    Android 设置是每个App必不可小的东西,看似很简单,但是初学不熟悉的很花时间去研究,特别样式兼容方面,以及有自定义设置的需求,下面是对用法做一个总结 Preference结构 界面结构看下图 ...

  9. Windows运行机理——窗口句柄和消息

    Windows运行机理这系列文章都是来至于<零基础学Qt4编程>——吴迪,个人觉得写得很好,所以进行了搬运和个人加工 现在我们将消息与句柄联系起来.假如有一个窗口,且拥有该窗口的一个句柄( ...

  10. 树莓派 Raspberry Pi 与 micro:bit起手式

    本文将学习如何在Raspberry Pi上安装MicroPython编辑器mu,并将MicroPython中编写的程序从您的Raspberry Pi推送到micro:bit. 您需要: 硬件, 带有S ...