MySQL主从结构搭建

发布时间:2026/10/31 10:56:18
MySQL主从结构搭建 一、前言由于最近有个项目随着业务增长存在并发压力隐患优化迫在眉睫。由于当前系统是单数据库系统原因能优化的地方也尽力优化了但是数据库瓶颈还是严重限制了项目的并发能力。所以就考虑了添加数据库来增大项目并发能力。考虑到读写分离等从而需要进行mysql主从复制。在此介绍如何进行mysql主从搭建。二、提前准备由于需要提前进行搭建测试本地使用了VirtualBox创建了两个虚拟机具体如何创建可以参考《win10搭建VagrantVirtualBox环境》。同时准备两个mysql数据库linux下mysql安装方法可以参考《linux下安装mysql-5.7.23详细步骤》。从而我们环境准备如下IP主从关系server-id192.168.33.11master11192.168.33.12salve12注意:确保主机ip和从机ip在同一网段即在局域网内在从机上执行链接信息命令让从机主动连接主机由于配置文件的信息校验通过主机允许从机访问主机MySQL服务从而实现主从结构。三、主从搭建3.1 步骤一master修改mysql的my.cnf文件在[mysqld]下增加如下内容# 同一局域网要唯一 server-id 11 # 开启二进制日志可以随便取 log-bin mysql-bin #自动清理 7 天前的log文件,可根据需要修改 expire_logs_days 7 # 复制过滤不需要备份的数据库不输出mysql库一般不用,多个库写多行 binlog-ignore-db mysql # 为每个session分配内润在事物过程中用来存储二进制日志的缓存 binlog_cache_size 2M # 主从复制的格式mixdedstatementrow binlog_format mixed log_bin_index master-bin.index注意配置内容必须在[mysqld]的下面。3.2 步骤二slave修改mysql的my.cnf文件在[mysqld]下增加如下内容# 同一局域网要唯一 server-id 12 # 开启二进制日志以备slave作为其他slave的master时使用 log-bin mysql-slave-bin # relay_log配置中继日志 relay_logedu-mysql-relay-bin # 复制过滤不需要备份的数据库不输出 binlog-ignore-db mysql # 为每个session分配内润在事物过程中用来存储二进制日志的缓存 binlog_cache_size 2M # 主从复制的格式mixdedstatementrow binlog_format mixed # 如果需要同步函数或者存储过程 log_bin_trust_function_creatorstrue # 跳过主从复制的所有错误或指定类型的错误以免slave端复制中断如1062主键重复 1032 主从复制数据不一致 slave_skip_errors1062 #加上以下参数可以避免更新不及时SLAVE 重启后导致的主从复制出错 read_only 1 master_info_repository TABLE relay_log_info_repository TABLE relay-log slave-relay-bin #主服务器I/O日志读取、记录及存放 relay-log-index slave-relay-bin.index3.3 步骤三master在master节点重启mysql服务后登陆mysql终端执行如下命令mysql grant replication slave, replication client on *.* to root192.168.33.12 identified by 123456; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql flush privileges; Query OK, 0 rows affected (0.01 sec)注意:创建用户必须放开从库地址访问。查看新增的用户信息select user,host from mysql.user;查看master信息show master status;3.4 步骤四slave在slave节点重启mysql服务后登陆mysql终端设置需要同步的master节点信息同时需要指定同步位置。mysql change master to master_host192.168.33.11, master_userroot, master_password123456, master_port3306, master_log_filemysql-bin.000017, master_log_pos194; Query OK, 0 rows affected, 2 warnings (0.03 sec)注意:具体的配置信息要以步骤三master中配置和查询的结果为依据master_log_filemaster状态结果中Filemaster_log_posmaster状态结果中的Position。开启slave并查看状态mysql start slave; Query OK, 0 rows affected (0.00 sec) mysql show slave status\G;注意: 只有看到Slave_IO_Running、Slave_SQL_Running都为Yes时主从才算搭建完成。四、主从测试4.1 测试数据库同步4.1.1 创建数据库mastermysql show databases; mysql create database testdb default character set utf8 collate utf8_general_ci;4.1.2 查看数据库同步slavemysql show databases;4.2 测试表数据同步4.2.1 建表并插入数据mastermysql use testdb; mysql show tables; mysql create table student ( sno int(11) not null auto_increment comment 学号, sname varchar(50) character set utf8 collate utf8_general_ci not null comment 姓名, ssex varchar(2) character set utf8 collate utf8_general_ci not null comment 性别, primary key (sno) using btree ) engine innodb auto_increment 1 character set utf8 collate utf8_general_ci row_format dynamic; mysql insert into student values (1, KangKang, M); mysql insert into student values (2, Mike, M); mysql insert into student values (3, Jane, F); mysql select * from student;4.2.2 查看数据库同步slavemysqlusetestdb;mysqlshowtables;mysqlselect*fromstudent;

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询