简单搭建MySQL主从复制

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

个人认为,90%的公司的数据体量和并发量压根用不上从服务器,结合Redis,一台性能强劲的云MySQL服务器,做好日常备份。足够了。

概念

一个MySQL主(Master)服务器上的数据自动复制到至少一个的MySQL从(Slave)服务器的过程,利用bin log,主服务器上的数据更改会被自动地同步到从服务器,以保持至少两个服务器上数据的一致性。
注意:客户端请求MySQL Server,写主还是写从,读主还是读从,决定权在客户端。

解决了什么问题?

  • 负载均衡:一台机器读写可能扛不住,多个服务器过来帮忙,主负责写,从负责读。
  • 读写分离:起到了数据备份的作用,鸡蛋不要放到一个篮子里。
  • 高可用性:一台服务器宕机,可切换到另一台服务器上,提供继续服务的能力。

缺点

  • 增加运维复杂度。
  • 无法保证主从实时通信,可能出现数据不一致的情况。

主从通信推还是拉?

拉,通过从机上配置主机的IP就能看出来,如果是推,则是主机上配置从机IP。
主服务器主动请求从服务器或推送,这是推。
从服务器主动请求主服务器,这是拉。

配置一主一从

mysql有大量的可选主从的配置,很多不一定能用上,具体可查看MySQL官网:https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.html
最好先ping对方的服务器,能互相ping通,说明可通信。
防火墙开启3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent && systemctl restart firewalld

主服务器配置
#主服务器id
server-id=180
#bin log日志名称
log-bin=mysql-bin
#需要从机复制的数据库名
binlog-do-db=test


从服务器配置
#从服务器id
server-id=181
#设置只读
read-only=1


mysql5.7及以下版本,在主服务器上执行一下MySQL指令
grant replication slave on *.* to '从服务器用户名'@'从服务器IP' identified by '从服务器密码';

mysql8,在主服务器上执行一下MySQL指令
create user '从机用户名'@'%' identified by '从机密码';
grant replication slave on *.* to '从机用户名'@'%';
alter user '从机用户名'@'%' identified with mysql_native_password by '从机密码';
flush privileges;

主机执行
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000032 |      157 | test         |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

在从机执行
change master to master_host='主机IP',master_user='主机创建的从机用户名',master_password='主机创建的从机密码',master_log_file='主机执行show master status的bin log名称',master_log_pos=主机执行show master status的position值;

在从机执行
start slave;

在从机执行:
show slave status;只要发现Slave_IO_Running : Yes和Slave_SQL_Running : Yes;就说明配置完成。
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.3.180
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000032
          Read_Master_Log_Pos: 157
               Relay_Log_File: lnmp-relay-bin.000002
                Relay_Log_Pos: 326
        Relay_Master_Log_File: mysql-bin.000032
             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: 157
              Relay_Log_Space: 535
              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: 180
                  Master_UUID: fbdac062-db17-11ee-9a5f-000c29d1c19b
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica 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: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace: 
1 row in set, 1 warning (0.00 sec)

值得一提的是,在主机的配置上,有一个binlog_format的属性,用于指定二进制日志文件中记录的事件格式文章来源地址https://www.toymoban.com/news/detail-837789.html

  • statement:如执行now()这种函数时,从机会照搬复制主机的数据。
  • row:默认值。 如执行now()这种函数时,从机会获取自身的数据,能够避免由于不确定性造成的错误。但可能生成更大的二进制日志文件,因为它记录了每一行数据的变化。
  • mixed:中庸策略,在某些情况下,它会记录 SQL 语句,而在另一些情况下会记录数据行更改。

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

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

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

相关文章

  • docker创建MySQL镜像,搭建主从复制环境

    学习黑马的MySQL时,在主从复制、分库分表、读写分离等阶段需要多台服务器,于是尝试用docker创建镜像搭建主从复制环境。 本文基于centos7搭建mysql镜像。 参考大佬文章: link 编写mysql_file文件: 由于需要进行编辑操作,所以需要额外下载vim 编写run.sh文件 build MySQL镜像 以特权

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

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

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

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

    2024年02月10日
    浏览(30)
  • k8s搭建mysql集群实现主从复制

    名称 版本 操作系统 IP 备注 K8S集群 1.20.15 Centos7.9 192.168.11.21 192.168.11.22 192.168.11.23 21为k8s-master 22为k8s-node01 23为k8s-node02 MySql 5.7 Centos7.9 一主两从 nfs服务器 Centos7.9 192.168.11.24 共享目录为/nfs 11.24: 11.21/22/23(所有K8S节点): 11.21: 创建rbac 创建sc 启动: 11.21: 此文件定义了两个

    2024年02月15日
    浏览(24)
  • Docker搭建MySQL8.0主从复制(一主一从)

    宿主机使用的版本为 19045 的win10专业版,MySQL使用的是8.0+,Docker容器使用Linux。 略 修改Docker默认安装路径 安装包自己就提供了修改安装路径的功能,CMD中运行: “Docker Desktop Installer.exe” install --installation-dir= --installation-dir=path : changes the default installation location ( C:Program Fil

    2024年01月25日
    浏览(32)
  • 基于 Docker 的 MySQL 主从复制搭建(Mac M1版本)

    系统:Macbook M1 镜像版本:mysql:5.7 如果是要查 slave 连接不上 master 的问题,可以直接跳到文章末尾踩坑处 准备工作 拉取镜像 本地数据卷挂载 因为mysql不挂载的话,重启丢失数据,所以在本地创建三个空的文件夹 conf、data、log 即可 部署mysql_master(主) 运行master容器 不加 -

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

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

    2024年01月20日
    浏览(43)
  • MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项、原理、搭建步骤

    错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中 发生任何严重错误时的相关信息 。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysq

    2024年02月04日
    浏览(51)
  • Redis最新版本搭建主从环境,Redis主从复制环境搭建

    一般网站搭建都会使用Redis做缓存,当单台Redis承受不住压力时,会考虑搭建Redis主从。在没有业务的情况下,一般不会一下子上来就去搭建Redis无中心集群 Redis主从复制环境搭建 ,前面跟部署单台Redis一致,只不过后面 是从Redis的配置上去同步主Redis即可 。 这里找三台虚拟机

    2024年01月21日
    浏览(26)
  • Redis进阶:主从复制、集群搭建

    介绍:主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver机制 , Master以写为主,Slave以读为主 ; 优点: 1) 读写分离 ,减轻主机的压力,性能扩展; 2) 容灾快速恢复 :某个从机宕机,可自动从其他的从机读取数据; 缺点: 复制延时 ,从机越多,复制延时

    2024年02月08日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包