前言

  MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能。在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名、日志文件名、文件位置等参数。整个过程可分为如下几个步骤:

(1)     主服务器:开启二进制日志功能,设置服务器ID,并重启MySQL服务;

(2)     在所有从服务器上设置服务器ID(唯一);

(3)     在主服务器上为不同的从服务器创建可读取主服务器日志文件的账户,或使用统一账户;

一、系统规划

1、主服务器

操作系统版本: RHEL 6.6 x64

数据库版本: MySQL 5.6

主机IP:192.168.152.129

主机名:master

数据库名称:

ID编号:1

2、从服务器

操作系统版本:RHEL 6.6 x64

数据库版本:MySQL 5.6(必须保证MySQL版本一致)

主机IP:192.168.152.128

主机名:slave

数据库名称:

ID编号:2

注:本文为个人学习之用,使用虚拟机模拟,可作为实施参考。

二、安装准备

1、存储

需要根据实际情况,为源数和目标端数据库分配足够的可用空间

2、网络

需要开通源端和目标端服务器的any-any的网络端口互通性

3、NTP

需要同步源和目标主机时钟同步机制,若为内网环境,推荐配置内网时钟服务器

4、其他

配置静态IP、主机名、IP与主机名绑定、防火墙(开启端口或关闭防火墙)

5、安装MySQL

为主服务器和从服务器安装MySQL,须保证两者版本一致,或者slave端版本高于master版本。

三、主服务器配置

1、准备测试数据

准备测试数据,模拟要同步对象。

mysql> create database hr;

mysql> use hr;

mysql> create table emp(id int primary key,name char(20));

mysql> insert into emp(id,name) values(1,'tom');

2、设置my.cnf参数

(1)拷贝配置文件

# cp /usr/local/mysql/my.cnf /etc/my.cnf

如有必要,应注意备份配置文件,并且在生产活动懂养成备份的意识。

(2)参数设置

以下仅列出几个必要参数:

log-bin=mysql-bin             启用二进制日志
server-id= 服务器ID,可1-之间的任意整数
binlog-ignore-db=information_schema 避免同步的数据库
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
binlog-do-db=hr 二进制需要同步的数据库名

注意:在配置文件中不可使用skip-networking参数,否则从服务器将无法连接主服务器并进行数据同步

(3)重启服务器

# service mysqld restart

3、为slave用户添加同步专用权限

(1)创建复制账户并赋权

mysql> GRANT FILE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';

mysql> FLUSH PRIVILEGES;

(2)添加管理用户

grant all privileges on *.* to admin@'%' identified by 'root';

(3)刷新权限

flush privileges; 

四、从服务器设置

1、设置my.cnf参数

(1)备份配置文件

# cp /usr/local/mysql/my.cnf /etc/my.cnf

(2)修改参数信息

必要参数如下:

log-bin=mysql-bin

server-id=                       #从服务器ID

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=mysql

replicate-do-db=hr                 #同步的数据库名

replicate-ignore-db=mysql        #屏蔽不同步的数据库

log-slave-updates

slave-skip-errors=all

slave-net-timeout=

注:MySQL 5.6之后没有master-user等参数,否则重启报错

(3)重启服务器

# service mysqld restart

五、数据库备份、同步

1、对数据库进行备份

[root@master mysql]# /usr/local/mysql/bin/mysqldump -h localhost -uroot -proot --all-databases --lock-all-tables >/tmp/dbdump.sql
[root@master mysql]# scp /tmp/dbdump.sql root@slave:/tmp/
[root@slave ~]# mysql -u root -p < /tmp/dbdump.sql

注:从服务器不需要创建要同步的数据库,备份脚本会自动创建。

2、配置从服务器连接主服务器同步

(1)、获取主服务器二进制日志信息

[root@master mysql]# mysql -uroot -p

Enter password:
mysql> flush tables with read lock; --只读锁定
mysql> show master status;
mysql> unlock tables; --解除锁定

(2)设置从服务器同步

[root@slave ~]# mysql -u root –p

mysql> stop slaves;

mysql> change master to
-> master_host='192.168.152.129',
-> master_user='slave_cp',
-> master_password='root',
-> master_log_file='mysql-bin.000003',
-> master_log_pos=195; --这里的参数取值参考查询到的master日志信息 mysql> start slave;
mysql> show slave status \G

3、同步验证

在master上添加数据,查看slave端的同步情况。

master节点:

[root@master ~]# mysql -uroot -p
mysql> create database test;
mysql> use test;
mysql> create table users(id int primary key,name char(20));
mysql> insert into users(id,name)values(1,'aa');
mysql> use hr;
mysql> show tables;
mysql> create table bb(id int,name char(20));
mysql> insert into emp(id,name)values(2,'bb');

slave节点:

[root@slave ~]# mysql -uroot -p
mysql> select * from test.users;

错误

1、启动从服务器失败

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

解决:

mysql> reset slave;

mysql> change master to master_host='192.168.152.129',
master_user='slave_cp',master_password='root',master_log_file='mysql-bin.000005',
master_log_pos=610;
mysql> start slave;

参考:https://zhangge.net/5091.html

参考:http://blog.csdn.net/xlgen157387/article/details/51331244/

MySQL主从复制部署的更多相关文章

  1. linux运维、架构之路-MySQL主从复制

    一.MySQL主从复制原理图  MySQL主从复制原理:实现主从复制原理是三个线程完成的,主的I/O线程,备的I/O线程与SQL线程 1.首先主库db01需要开启binlog.授权一个replicat ...

  2. 2.快速部署MySQL主从复制

      1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...

  3. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  4. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  5. 002.MySQL高可用主从复制部署

    一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...

  6. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  7. Linux下MySQL主从复制(Binlog)的部署过程

    什么是 MySQL 的主从复制 Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上 ...

  8. MySQL高可用主从复制部署

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2. ...

  9. centos7下部署mysql主从复制

    首先大致看一下这个图 环境说明: 系统:centos7 IP:master:192.168.7.235 slave:192.168.7.226 mysql版本MySQL-5.7 1.Master 下载 ...

随机推荐

  1. Java 8 新特性---------Stream

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...

  2. PAT甲题题解-1016. Phone Bills (25)-模拟、排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  3. Ubuntu16.04配置TOMCAT8

    基于虚拟机Ubuntu16.04配置Tomcat过程 一.安装JDK 首先要确定好要安装的jdk和tomcat版本能对的上,具体如图所示: 版本选择是Jdk1.8,首先上官网http://www.or ...

  4. Spring源码学习:DefaultAopProxyFactory

    /* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Vers ...

  5. Linux用户和用户组管理

    该内容来摘自于鸟叔的Linux私房菜. Linux的每个用户包含两个ID,一个是用户ID,一个是用户组ID.系统会根据/etc/passwd和/etc/group的设定来决定用户的访问权限.下面对用户 ...

  6. node之文件的下载

    /** * 文件的下载 */ let express = require('express'); let app = express(); app.get('/',(req,res)=>{ re ...

  7. CentOS下搭建Hive

    目录 下载解压hive mysql驱动 配置文件 hive-env.sh hive-site.xml 首次启动hive 使用schemaTool初始化mysql数据库 错误总结 警告汇总 参考:htt ...

  8. 深入解读Quartz的原理

     Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便.   一.核心概念   Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可.   1 ...

  9. poj3468 A Simple Problem with Integers(线段树/树状数组)

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  10. 04.基于IDEA+Spring+Maven搭建测试项目--application-context.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...