mysql主从复制搭建(一主一从)

这篇具有很好参考价值的文章主要介绍了mysql主从复制搭建(一主一从)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

介绍

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具

mysql主从复制搭建(一主一从),mysql数据库高级知识,mysql,adb

MySQL复制过程分为三部:

==> master将改变记录到二进制日志(binary log)

==> slave将master的binary log拷贝到它的中继日志(relay log)

==> slave重做中继日志中的事件,将改变应用到自己的数据库中


一、准备工作

1、提前准备好两台服务器,分别安装Mysql
==> 主库Master 192.168.100.66

==> 从库Slave 192.168.100.67

2、使用克隆弄出另一台服务器的注意事项
博主两台linux服务器都是使用VMware虚拟机搭建的,为了避免重装mysql的麻烦,另外一台linux服务器是克隆出来的,克隆之后必须修改Mac地址,ip,UUID,还有mysql的UUID。

二、配置==>主库Master

1、在/etc/hosts里添加两侧主机的IP和主机名(选做)

192.168.100.66 mysql57
192.168.100.67 mysql57b


2、 先让所有的MYSQL数据库的UUID保持不同(如果你是直接复制的安装好MYSQL的虚拟机,那么每个虚拟机上搭载的MYSQL数据库UUID是一致的)

vi /data/mysql_data/auto.cnf

[auto]
server-uuid=f787ff18-b491-11eb-9910-080027c8eeff
如果大家发现所有的MYSQL的uuid都是一个,那么你就给他改一下
[auto]
server-uuid=f787ff18-b491-11eb-9910-080027c8eefa


3、主节点参数修改Mysql数据库的配置文件/etc/my.cnf

#MASTER-SLAVE
server-id = 1
binlog-do-db=hr
#binlog-do-db=
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#expire_logs_days=7

参数说明:
server-id = 1 主节点的server-id,集群中每一台服务器的server-id都不允许相同
binlog-do-db=hr 你需要复制的库 hr
#binlog-do-db=test
binlog-ignore-db=mysql #不需要复制的库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#expire_logs_days=7 binlog日志过期天数设置


4、重新启动mysql数据库服务
servicer mysqld start


5、创建复制用户(主库)
GRANT ALL PRIVILEGES ON . TO ‘repl’@‘%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
FLUSH PRIVILEGES;


三、配置==>从库Slave

1、从节点参数修改Mysql数据库的配置文件/etc/my.cnf
server-id = 2
read_only = 1
#super_read_only=1
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
master_info_repository=TABLE
relay_log_info_repository=TABLE
#relay_log_recovery=1

参数说明
server-id = 2
从服务器的server-id 不能和主服务器相同

read_only = 1
#super_read_only=1
设置从库只读状态,避免在从库上写操作,但该指令对超级管理员是无效的,mysql5.7增加了一个新的参数super_read_only,该参数使得超级管理员也无法进行写操作。但是super_read_only这个参数大部分都是关闭掉的

relay-log=slave-relay-bin
中转(中继)日志文件前缀名(base name) 也是默认在datadir目录下

relay-log-index=slave-relay-bin.index
中转(中继)日志后缀名,默认host_name-relay-bin.index,在datadir目录下。

master_info_repository=TABLE 把master.info(主从状态,配置信息)记录下来,默认记录到file里面,建议使用表记录

relay_log_info_repository=TABLE
realy_log_info_repository用来决定slave同步的位置信息记录在哪里,同样有两个参数。如果relay_log_info_repository=file,就会创建一个realy-log.info,如果relay_log_info_repository=table,就会创建mysql.slave_relay_info表来记录同步的位置信息。

#relay_log_recovery=1 #从机禁止写
为了让从库是crash safe的必须要设置relay_log_recovery=1,该参数的含义是:当从库发生崩溃或重启时,它会把那些未做完的中继日志删除,并向主库重新获取日志,再次产生中继日志的恢复,建议在从库上开启relay_log_recovery参数,默认是关闭的。当然了你为了从库得到更好的优化效果的话,请把它关掉


2、查看主库状态信息

show master status\G;
show master status;

mysql> show master status;
+-----------------+----------+--------------+-------------------------------------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+-----------------+----------+--------------+-------------------------------------------------+-------------------+
| mysqlbin.000017 |      154 | hr           | mysql,information_schema,performance_schema,sys |                   |
+-----------------+----------+--------------+-------------------------------------------------+-------------------+


3、登录Mysql数据库,配置将连接的主库信息
从库按照主库给出信息进行修改
change master to
master_host=‘192.168.100.66’,
master_port=3306,
master_user=‘repl’,
master_password=‘123456’,
master_log_file=‘mysqlbin.000017’,
master_log_pos=154;

注:里面的信息要写自己主库的信息,账号写自己创建的账号


4、查看从库信息状态
启动从库 进行测试
start slave;
stop slave;
show slave status \G;

show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.66
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysqlbin.000017
          Read_Master_Log_Pos: 154
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 319
        Relay_Master_Log_File: mysqlbin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 154
              Relay_Log_Space: 526
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID: 497bc227-19c5-11ee-a978-080027b1fb7d
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

状态显示yes正常搭建成功

如果你的虚拟机崩溃了恢复后导致无法同步,或者你多次配置从库的主库信息初始化阶段失败的话。

报错信息为:初始化信息失败

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

先执行
reset slave; 清空你之前的配置的从库信息
然后再重启从库
start slave;

重点说明的是:如果你是第一次配置主从复制集群的话,一般不会出现这个问题。

四、测试

主库和从库同步完成文章来源地址https://www.toymoban.com/news/detail-650600.html

至此,主库分离成功实现

到了这里,关于mysql主从复制搭建(一主一从)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL - 读写分离、一主一从、双主双从

    MySQL - 读写分离、一主一从、双主双从

    读写分离 ,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 MyCat实现读写分离的话,主要通过两个组件来实现: ​ readHost、writeHost 读写分离它的前提是基于主从复制 主

    2024年02月07日
    浏览(8)
  • MySQL运维15-一主一从读写分离

    MySQL运维15-一主一从读写分离

    读写分离,是把数据库的读和写分开操作,以应对不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效的减轻单台数据库的压力。 MySQL的主从复制是基于二进制(binlog)实现的 说明1:当主服务器的MySQL执行了DML,DDL语句之后,会将数据的变更写入到

    2024年02月04日
    浏览(11)
  • Mysql主从数据库搭建(一主两从)

    Mysql主从数据库搭建(一主两从)

    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任务 3.5、解决虚拟机克隆导致mysql所有服务器uuid都一样的问题 4、bin-log相关说明 5、主从同步注

    2024年02月11日
    浏览(11)
  • 【数据库集群】之一主一从

    集群架构设计的三个维度:可用性、扩展性、一致性 所谓mysql集群就是把多台数据库集成在一起提供数据库服务。 集群的目的: 负载均衡:解决高并发 高可用HA:服务可用性 远程备灾:数据有效性 对于数据库之上的业务层来说,基于 MySQL 的主从复制集群,单点写入 Master

    2024年02月01日
    浏览(9)
  • mysql 数据库主从复制搭建

    MySQL 主从复制主要用于实现高可用性和备份。在主从复制中,一个 MySQL 实例(称为主节点)将其数据更改复制到至少一个其他 MySQL 实例(称为从节点)上。主要借助于数据库二进制日志binlog进行数据的复制。 主从数据库对应的操作系统、数据库版本要一致。 1、主库配置 设

    2024年02月20日
    浏览(9)
  • 实现↝Mysql数据库主从复制搭建与同步

    实现↝Mysql数据库主从复制搭建与同步

    一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。 如生产环境中,使用redis数据库作为缓存数据库,用户访问业务数据时,先

    2024年02月10日
    浏览(41)
  • Mysql数据库--实现主从复制搭建与同步

    Mysql数据库--实现主从复制搭建与同步

    一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。 如生产环境中,使用redis数据库作为缓存数据库,用户访问业务数据时,先

    2024年02月08日
    浏览(41)
  • 第90讲:MySQL数据库主从复制集群原理概念以及搭建流程

    第90讲:MySQL数据库主从复制集群原理概念以及搭建流程

    1.1.什么是主从复制集群 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主

    2024年01月20日
    浏览(8)
  • 使用docker进行MYSQL主从复制(一主两从)

    使用docker进行MYSQL主从复制(一主两从)

    目录 概述主从介绍 主从作用 主从作用有: 主从形式有:  配置步骤 主要配置 1创建三个进程 2修改配置文件 3主机配置 4从机配置 5将文件修改后,复制到容器里面 6进入主机进行配置 6.1创建用户 6.2给用户授权 6.3刷新权限 7进入从机进行配置 对M1S1 对M2S2  8最后开启主从 9测

    2024年02月16日
    浏览(7)
  • MySQL数据库——主从复制

    MySQL数据库——主从复制

    在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似

    2024年02月11日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包