广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 5.6 主从复制配置
  • 941
分享到

MySQL 5.6 主从复制配置

2024-04-02 19:04:59 941人浏览 安东尼
摘要

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

一、前言:为什么Mysql要做主从复制(读写分离)?
通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。
为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。
而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。

二、mysql主从复制(读写分离)和集群的区别:

1、主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作)。
局限性:
(1)配置好主从复制之后,同一张表,只能对一个服务器写操作。如果在从上执行了写操作,而之后主也操作了这张表,或导致主从不同步;据说可以配置成主主方式,但我还没有研究到。
(2)主数据库服务器宕机,需要手动将业务系统切换到从数据库服务器。无法做到高可用性(除非再通过部署keepalive做成高可用方案)。
2、集群是由N台数据库服务器组成,数据的写入和查询是随机到任意一台数据库服务器的,其他数据库服务器会自动同步数据库的操作。
任何一台数据库宕机,不会对整个集群造成大的影响。
局限性:我经过测试才知道目前mysql集群版本(MySQL Cluster)只能对NDB存储引擎的数据进行集群同步,如果是INNODB或其他的MySQL存储引擎是不行的。这个也导致了我放弃了在业务系统中应用这种方案。

三、回归正题,接下来开始MySQL5.6.12的主从复制教程
1、MySQL5.6开始主从复制有两种方式:基于日志(binlog);基于GTID(全局事务标示符)。
需要注意的是:GTID方式不支持临时表!所以如果你的业务系统要用到临时表的话就不要考虑这种方式了,至少目前最新版本MySQL5.6.12的GTID复制还是不支持临时表的。
所以此篇教程主要是告诉大家如何通过日志(binlog)方式做主从复制!

2、MySQL官方提供的MySQL Replication教程:
Http://dev.mysql.com/doc/refman/5.6/en/replication.html
这个官方教程强烈建议大家阅读(需要一定的英语阅读能力哦!不行就Google翻译后再阅读吧~)。

3、准备工作:
(1)配置MySQL主从复制(读写分离)之前,需要在主从两台服务器先安装好MySQL5.6。
(2)目前最新的MySQL5.6 GA版本是MySQL5.6.12
个人推荐linux(RedHat/Centos 6.4)源码编译安装,具体可以看本站这篇教程:RedHat/CentOS源码编译安装MySQL5.6.12
(3)注意:
(a)如果你需要用于生产环境,安教程安装MySQL时不要急着做mysql启动操作。建议把mysql初始化生成的/usr/local/mysql/mysql.cnf删除,然后把你优化好的mysql配置文件my.cnf放到/etc下。
(b)建议主备两台服务器在同一局域网,主备两台数据库网络需要互通。
(4)我的环境:
主数据库IP:192.168.100.2
从数据库IP:192.168.100.3

4、修改主数据库的的配置文件:

1[mysqld]
2server-id=1
3log-bin=mysqlmaster-bin.log
4sync_binlog=1
5#注意:下面这个参数需要修改为服务器内存的70%左右
6innodb_buffer_pool_size = 512M
7innodb_flush_log_at_trx_commit=1
8sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
9lower_case_table_names=1
10log_bin_trust_function_creators=1

修改之后要重启mysql:

1# /etc/init.d/mysql restart


5、修改从数据库的的配置文件(server-id配置为大于1的数字即可):

1[mysqld]
2server-id=2
3log-bin=mysqlslave-bin.log
4sync_binlog=1
5#注意:下面这个参数需要修改为服务器内存的70%左右
6innodb_buffer_pool_size = 512M
7innodb_flush_log_at_trx_commit=1
8sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
9lower_case_table_names=1
10log_bin_trust_function_creators=1

修改之后要重启mysql:

1# /etc/init.d/mysql restart


6、ssh登录到主数据库:
(1)在主数据库上创建用于主从复制的账户(192.168.100.3换成你的从数据库IP):

1# mysql -uroot -p
2mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.100.3' IDENTIFIED BY 'repl';

(2)主数据库表(禁止再插入数据以获取主数据库的的二进制日志坐标):

1mysql> FLUSH TABLES WITH READ LOCK;

(3)然后克隆一个SSH会话窗口,在这个窗口打开MySQL命令行:

1# mysql -uroot -p
2mysql> SHOW MASTER STATUS;
3+------------------------+----------+--------------+------------------+-------------------+
4| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
5+------------------------+----------+--------------+------------------+-------------------+
6| mysqlmaster-bin.000001 |      332 |              |                  |                   |
7+------------------------+----------+--------------+------------------+-------------------+
81 row in set (0.00 sec)
9mysql> exit;

在这个例子中,二进制日志文件是mysqlmaster-bin.000001,位置是332,记录下这两个值,稍后要用到。
(4)在主数据库上使用mysqldump命令创建一个数据快照:

1#mysqldump -uroot -p -h227.0.0.1 -P3306 --all-databases  --triggers --routines --events >all.sql
2# 接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导出完成。

(5)解锁第(2)步主数据的锁表操作:

1mysql> UNLOCK TABLES;

7、SSH登录到从数据库:
(1)通过FTP、SFTP或其他方式,将上一步备份的主数据库快照all.sql上传到从数据库某个路径,例如我放在了/home/yimiju/目录下;
(2)从导入主的快照:

1# cd /home/yimiju
2# mysql -uroot -p -h227.0.0.1 -P3306 < all.sql
3# 接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导入完成。

(3)给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):

1# mysql -uroot -p
2mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.2',MASTER_USER='repl',MASTER_PASSWord='repl',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=332;
3# 然后启动从数据库的复制线程
4mysql> START slave;
5# 接着查询数据库的slave状态:
6mysql>  SHOW slave STATUS \G
7# 如果下面两个参数都是Yes,则说明主从配置成功!
8Slave_IO_Running: Yes
9Slave_SQL_Running: Yes

(4)接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作


您可能感兴趣的文档:

--结束END--

本文标题: MySQL 5.6 主从复制配置

本文链接: https://www.lsjlt.com/news/37171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 5.6 主从复制配置
    一、前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主...
    99+
    2022-10-18
  • MySQL主从复制配置
    配置主数据库: my.cnf: server-id       = 1 log-bin  重启数据库 登录并查看: ...
    99+
    2022-10-18
  • MySQL配置SSL主从复制
    MySQL5.6 创建SSL文件方法 官方文档:https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-files-using-openssl.html#c...
    99+
    2022-10-18
  • mysql主从复制配置过程
    主库配置 1. 配置mysql vim /etc/my.cn # 在文件中增加以下内容 server-id=1 # 保证server id唯一 log-bin = /var/lib/mysql/mysql-bin...
    99+
    2022-05-23
    mysql 主从复制 mysql 主从复制配置
  • 【MySQL】主从异步复制配置
    简介: Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一个 Slave上。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程...
    99+
    2022-10-18
  • mysql主从复制配置(日志点)
            一些mysql版本并不会开启二进制日志,所以一定要检查是否开启。如果一开始没开启,在以后需要开启,则必须重启数据库服务器,而数据库服务器重启会对业务造成很大影响。所以,尽管二进制日志会对性能...
    99+
    2022-10-18
  • 配置mysql数据库主从复制
        一、    原理说明 复制有以下三个步骤:   (a)主服务器把数据更改记录到二进制日志中。(这叫做二进制日志事件(binary...
    99+
    2022-10-18
  • mysql的主从复制如何配置
    这篇文章给大家分享的是有关mysql的主从复制如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库复制对于系统高可用、高性能的提升扮演者很重要的角色。1 主库配置1.1 ...
    99+
    2022-10-18
  • Linux下MySQL主从复制的配置
    本篇内容主要讲解“Linux下MySQL主从复制的配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下MySQL主从复制的配置”吧! MySQL...
    99+
    2022-10-18
  • mysql中如何配置主从复制
    这篇文章主要介绍了mysql中如何配置主从复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于现在的系统来说,在业务复杂的系统中,数据库往...
    99+
    2022-10-18
  • MySQL配置主从复制的方法
    今天小编给大家分享一下MySQL配置主从复制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、检测通信查看主库(mas...
    99+
    2023-07-02
  • mongodb主从复制配置
    主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 我们用两种方式来实现主从.这里...
    99+
    2022-10-18
  • MySQL 配置主从复制实践分享
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的server-id2. 使用maste...
    99+
    2022-07-14
    MySQL 配置主从复制 MySQL 主从复制
  • MySQL 主从复制的原理和配置
    工作原理图: 主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指...
    99+
    2022-05-26
    MySQL 主从复制 配置
  • MySQL主从复制的配置及原理
    -----------------------------------------------------------mysql 5.5   环境用的数据库可的多实例----------...
    99+
    2022-10-18
  • Windows下怎么配置MySQL主从复制
    这篇文章主要讲解了Windows下怎么配置MySQL主从复制,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多...
    99+
    2022-10-18
  • MySQL的主从复制介绍及配置
    1.MySQL主从复制介绍    MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用...
    99+
    2022-10-18
  • MySQL 配置主从复制实践分享
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的...
    99+
    2022-11-13
  • MySQL设置主从复制
    主从复制: 单向,双向,环形,级联,一主多从 双机复制的5种情形1、异步主从(默认常规)2、双写(前段程序对两个数据库同时写,必须两边都落实,程序才返回成功)3、利用外挂软件实现实时主库Binlog日志抓...
    99+
    2022-10-18
  • Mysql主主复制配置
    在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。配置的时候需要注意:主键重复,server-id不能重复。1.新建数据库...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作