search
HomeDatabaseMysql TutorialMysql主从复制搭建_MySQL
Mysql主从复制搭建_MySQLMay 27, 2016 pm 01:45 PM
mysqlmaster-slave replication

环境简介

主服务器:CentOS6.5下mysql5.6.30

安装请参考这里网址:http://blog.csdn.net/hsd2012/article/details/51232612

从服务器:win7下5.6.17

原理简介及优缺点

MySQL从3.23版本开始提供复制功能,复制主要是指将主服务器的DDL和DML操作,通过二进制日志(binLog日志),传到服务的服务器上,然后在从服务器上对这些日志从新执行,从而实现从服务器与主服务器的数据同步。MySQL支持一台主服务器同时向多台从服务器进行复制,从服务器同时也可以作为其他服务器的主服务器,实现链状的复制。

优点

如果主服务器出现问题,可以快速切换到从服务器提供服务。 可以在从服务器上执行查询,降低主服务器的压力 可以在从服务器上执行备份,以避免备份期间影响主服务器的性能

局限

由于MySQL实现的是异步复制,所以主从服务器之间的数据存在一定差异,对实时性要求高的数据仍然需要从主服务器上获得。

前期准备

1.在linux下创建账号

在win的命令提示符中输入ipconfig,查看ip

 

这里写图片描述

 

因为我的win下ip为192.168.153.1,所以,我创建将Host设置为192.168.153.%,关于原因,可参考这里

 

这里写图片描述

 

2.赋予权限

 

这里写图片描述

 

REPLICATION SLAVE权限针对所有的数据库,只能通过. ,而不能shool.*,因为REPLICATION SLAVE是复制binlog日志。

 

这里写图片描述

 

3.将主服务器中的数据,复制到从服务器,确保两者搭建主从之前,数据一致。关于这,之前写过一篇文章专门介绍,可以参考这里

配置

主服务器配置

1.开启binlog日志,并设置server_id

 

这里写图片描述

 

从服务器配置

1.配置server_id

设置:server-id=2

 

这里写图片描述

 

2.指定主服务器配置格式如下

change master to

master_host=’master_host_name’, //从服务器的主机

master_user=’replication_user_name’,//执行复制用户名

master_password=’replication_password’,//执行复制用户密码

master_log_file=’recorded_log_file_name’,//二进制日志文件名

master_log_pos=’recorded_log_postion’;//复制开始位置

根据我的配置信息

bin-log信息

 

这里写图片描述

 

复制用户信息

 

这里写图片描述

 

我执行的配置代码如下:

change master to

master_host=’192.168.153.140’,

master_user=’lidequan’,

master_password=’lidequan’,

master_log_file=’bin-log.000003’,

master_log_pos=120;

 

这里写图片描述

 

查看从服务器是否已连接主服务器

执行start slave;

 

这里写图片描述

 

执行show processlist;

 

这里写图片描述

 

修改主服务器数据,查看同步效果

在这里修改主服务器数据,主要是执行插入,更新操作。

操作之前,数据信息如下

 

这里写图片描述

 

执行插入操作

insert into `class` (`name`) values ('三年二班'),('三年五班'),('三年七班');

 

这里写图片描述

 

此时从服务器中也有数据了

 

这里写图片描述

 

执行更新操作

update class set `name`='三年三班' where id=3;

观察下图,发现数据确实发生了变化

 

这里写图片描述

 

删除操作

观察下图,数据也是同步的

 

这里写图片描述

 

数据表定义操作

1.添加一个student表

CREATE TABLE student(

`id` INT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT'学生编号',

`name` CHAR(10) NOT NULL DEFAULT '' COMMENT'学生名',

`class_id` INT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT'班级编号',

PRIMARY KEY(`id`)

) ENGINE=MYISAM DEFAULT CHARSET=utf8;

 

这里写图片描述

 

2.往student表中添加一个字段

ALTER TABLE student ADD COLUMN age TINYINT(2) UNSIGNED NOT NULL DEFAULT 0 COMMENT'学生年龄';

 

这里写图片描述

 

指定负责的数据库或者表

可以通过replicate-do-db、replicate-do-table、replicate-ignore-db、replicate-ignore-table或者replicate-wild-do-table来指定主从数据库复制到从数据库的数据库或者表。

关于数据复制的一些重要参数

在上面搭建主从服务器的时候,使用了MASTER_HOST,MASTER_PORT,MASTER_USER,MASTER_PASSWORD,MASTER_LOG_FILE,MASTER_LOG_POS这些参数都要在从服务器上配置,下面再来说几个常用的启动选项,如log_slave_updates、read_only、master_verify_checksum

log_slave_updates

log_slave_updates这个参数用来配置从服务器上的更新操作是否写入二进制日志,默认是不打开的。

首先我们来看一下刚刚win下mysql的binlog日志内容

 

这里写图片描述

 

可以发现,刚刚我们执行了增、删、改等操作,它并没有记录。

我们可以看到log_slave_updates是没有启动的

 

这里写图片描述

 

且该属性是只读属性,不可以动态的设置,只能在配置文件中设置,如下图设置将会报错

 

这里写图片描述

 

read_only

read-only选项:对所有的非临时表进行只读控制。但是有两种特殊情况

1. 对replication threads例外,以保证slave能够正常的进行replication。

2. 对于拥有super权限的用户,可以ignore这个选项。

 

这里写图片描述

 

当以没有拥有super权限的用户登录时候,会提示如下:

 

这里写图片描述

 

这样就确保了从数据只负责读数据操作,而拒绝写数据的操作。

补充:

SUPER 权限 :

1. 可以有change master to, kill其他用户的线程的权限。

2. Purge binary logs 来删除binary log, set global来动态设置变量的权限。

3. 执行mysqladmin debug命令,开启或者关闭log,在read-only打开时执行update/insert操作。

4. 执行start slave, stop slave.

5. 当连接数已经达到max_connections的最大值时,也可以连接到server。

master_verify_checksum

由于软硬件或者网络传输出错,导致主服务器上运行的sql语句与从服务器上运行的sql语句不一致,很难找到问题原因,mysql的开发人员在 5.6 Milestone Development Release版本中加入了 replication event checksum(主从复制事件校验)功能。master_verify_checksum主要用于复制事件校验。当一个event被写入binary log(二进制日志)的时候,checksum也同时写入binary log,然后在event通过网络传输到从服务器(slave)之后,再在从服务器中对其进行验证并写入从服务器的relay log。由于每一步都记录了event和checksum,所以我们可以很快地找出问题所在。

管理与维护

查看从服务器状态

使用show slave stauts;

 

这里写图片描述

 

在查看这些信息中,比较重要的是”slave_io_runing”和”slave_sql_runing”这两个进程

slave_io_runing :此进程负责从服务器从主服务器上读取Binlog日志,并写入从服务器上的中继日志中。

Slave_SQL_Runing:此进程负责读取并执行中继日志中的binlog日子。

只要期中有一个进程的状态时no,则表示复制进程停止。

总结

主从配置

一、主服务器上配置

1.创建用户,并赋予REPLICATION SLAVE权限

2.开启binlog日志,并设置server_id

二、从服务器配置

1.指定server_id

2.指定主服务器配置

备注:

1.win下mysql开启与关闭(前提是需要配置path路径)

 

这里写图片描述

 

2.server-id做什么用的

mysql的同步的数据中是包含server-id的,用于标识该语句最初是从哪个server写入的,所以server-id一定要有的,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。 每一个同步中的slave在master上都对应一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id 相同,则后一个连接成功时,前一个将被踢掉。 在mysql做主从同步时,要保证一条数据不会陷入死循环,这里就是靠server-id来实现的。

 以上就是Mysql主从复制搭建_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.