配置MySQL主从复制

说明

MySQL版本为5.6.26

安装MySQL步骤就省略了。

MySQL主从复制注意点

1、在master端要启用binlog日志。slave端不用启用binlog日志

2、master和slave的server-id要不一样

主从my.cnf配置的区别

不列出server-id了,设置不同即可。主要是[mysqld]区域的 不同

master

log-bin                         =/data/mysql_log/mysql-bin

expire-logs-days                = 14

sync-binlog                     = 1

binlog_format                   = row

slave

relay-log                       =/data/mysql_log/mysql-relay.log

relay-log-index                 =/data/mysql_log/mysql-relay.index

架构图

系统环境

# cat /etc/redhat-release

CentOS release 6.6 (Final)

# uname -rm

2.6.32-504.el6.x86_64 x86_64

在主库上创建数据库并插入数据

mysql> create databasekevin;

Query OK, 1 row affected(0.00 sec)

mysql> use kevin

Database changed

mysql> create tablestudent(

-> id int(4) not null auto_increment,

-> name char(20) not null,

-> primary key(id),

-> key index_name(name)

-> )AUTO_INCREMENT=1;

Query OK, 0 rows affected(0.10 sec)

mysql> insert intostudent values(1,‘Kevin‘),(2,‘Dave‘),(3,‘Danny‘),(4,‘Jenny‘),(5,‘Jerry‘);

Query OK, 5 rows affected(0.02 sec)

Records: 5  Duplicates: 0 Warnings: 0

创建主从复制

在master上操作

建立同步用户

mysql> GRANT REPLICATIONSLAVE ON *.* TO ‘repuser‘@‘192.168.56.%‘ IDENTIFIED BY ‘123456‘;

Query OK, 0 rows affected(0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected(0.00 sec)

mysql> FLUSH LOGS;

Query OK, 0 rows affected(0.00 sec)

mysql> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000001 |      2189 |

| mysql-bin.000002 |       323 |

+------------------+-----------+

2 rows in set (0.00 sec)

mysql> \q

Bye

备份数据库

[[email protected] ~]#innobackupex --user=root --password=123456 /backup/

准备备份

[[email protected] ~]#innobackupex --apply-log /backup/2016-05-18_19-19-38/

在插入一条数据

mysql> use kevin

Database changed

mysql> insert intostudent values(6,‘Lucy‘);

Query OK, 1 row affected(0.14 sec)

mysql> select * fromstudent\G

***************************1. row ***************************

id: 3

name: Danny

***************************2. row ***************************

id: 2

name: Dave

***************************3. row ***************************

id: 4

name: Jenny

***************************4. row ***************************

id: 5

name: Jerry

***************************5. row ***************************

id: 1

name: Kevin

***************************6. row ***************************

id: 6

name: Lucy

6 rows in set (0.00 sec)

mysql> show masterstatus\G

将备份拷贝到从库上

[[email protected] ~]# scp-r /backup/2016-05-18_19-19-38 [email protected]:/backup/

slave上操作

删除原始数据

[[email protected]l-slave01 ~]# cd/data/mysql_data/

[[email protected]_data]# rm -fr *

[[email protected]_data]# cd

恢复数据

[[email protected] ~]#innobackupex --copy-back /backup/2016-05-18_19-19-38/

[[email protected] ~]#chown -R mysql.mysql /data/mysql_data/

启动MySQL

[[email protected] ~]#/etc/init.d/mysqld start

验证数据

[[email protected] ~]#mysql -uroot –p

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| kevin              |

| mysql              |

| performance_schema |

+--------------------+

4 rows in set (0.04 sec)

mysql> use kevin;

Database changed

mysql> select * fromstudent\g

+----+-------+

| id | name  |

+----+-------+

|  3 | Danny |

|  2 | Dave |

|  4 | Jenny |

|  5 | Jerry |

|  1 | Kevin |

+----+-------+

5 rows in set (0.07 sec)

从从库上读主库的binlog

mysql> change master tomaster_host=‘192.168.56.12‘,master_port=3306,master_user=‘repuser‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=2189;

启动slave

mysql> start slave;或者执行START SLAVEIO_Thread;和START SLAVE SQL_Thread;

mysql> select * fromstudent;

+----+-------+

| id | name  |

+----+-------+

|  3 | Danny |

|  2 | Dave |

|  4 | Jenny |

|  5 | Jerry |

|  1 | Kevin |

|  6 | Lucy |

+----+-------+

6 rows in set (0.00 sec)

现在数据完全同步

在slave2上进行与slave1的完全一样的操作即可。

由于个人技术所限有不足之处还请各位指出。可以通过以下两个群找到笔者。

北京linux运维求职招聘群:153677549

Linux运维开发群:298324302

时间: 2024-11-03 20:56:21

配置MySQL主从复制的相关文章

使用docker配置mysql主从复制

MySQL的主从复制之前也没做过,刚百度了下发现并不算难,但同时开两个虚机挺麻烦,于是我就想到了使用docker来配置MySQL主从复制. 环境:docker,centos,MySQL镜像,这里我直接pull了一个镜像 运行一个master容器 docker run -d --name master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql docker ps -a 这里将master容器的3306端口映射给主机的3307端口,-e代表设置环境

配置MySQL主从复制报错Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work

配置MySQL主从复制报错 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this do

docker上配置mysql主从复制

1.在docker上启动2台mysql容器:(这里3306为主,3307为从) docker run -d  -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 --name 镜像id 2.配置主的mysql: 1)进入主容器: docker exec -it 主容器ID  /bin/bash cd etc/mysql/ 2)安装vim命令 apt-get update apt-get install vim 3)编辑my.cnf,在结尾添加:3行(vim m

Mysql学习总结(32)——阿里云centos配置MySQL主从复制

1.安装jdk1.8 首先确定没有安装过jdk 2.yum –y list java*查询系统自带的jdk安装包情况. 3.安装jdk1.8 4. 验证安装结果. 安装mysql 1. rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2. yum -y install mysql-community-server 3.加入开机启动:systemctl enable mysqld 4. 启动mys

MySQL主从复制介绍

1.1 MySQL主从复制原理介绍 MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库(我们称之为Master)复制到另一个MySQL数据库(我们称之为Slave),在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程(SQL线程和IO线程)在Slave端,另外一个线程(I/O线程)在Master端. 要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现.因为整个复制过

mysql主从复制-CHANGE MASTER TO 语法详解

1 简介    配置mysql主从复制时,在从机上需要进行CHANGE MASTER TO操作,以确定需要同步的主机IP,用户名,密码,binlog文件,binlog位置等信息. 2 基本语法与实例    2.1 CHANGE MASTER TO的语法如下: CHANGE MASTER TO option [, option] ...   option:       MASTER_BIND = 'interface_name'      MASTER_HOST = 'host_name'    

数据库---mysql主从复制读写分离

http://m.open-open.com/m/lib/view/1413274853450.html 原理及架构分析 部署前准备 下载好源码包存放位置要与脚本中对应 mysql-5.5.22.tar.gz,cmake-2.8.6.tar.gz,amoeba-mysql-binary-2.2.0.tar.gz,jdk-6u14-linux-x64.bin selinux和iptables不做设置,关闭 系统光盘镜像为本地yum源,配置好yum文件 环境介绍: 主服务器(master):192.

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

前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,同一张表

【转】解决MySQL主从复制不一致的情况

解决MySQL主从复制不一致的情况 十月 09, 2011 ( NO COMMENTS ) 稍微有些规模的网站,基本上都会配置mysql主从复制,一方面用mysql的主从做数据库的读写分离,另一方面mysql本身的单机备份不是很强,一般采用主从架构,在从上进行数据备份. 在MySQL主从复制过程中或多或少出现一些主从不同步的情况,本文将对数据主从不同步的情况进行简单的总结,请注意本文主要从数据库层面上探讨数据库的主从不一致的情况. 1.网络的延迟 由于mysql主从复制是基于binlog的一种异