mysql主从配置

本文详细介绍了MySQL主从复制的工作原理,包括基于语句、行和混合的复制类型。指导如何配置master服务器和slave服务器,包括设置my.cnf文件、创建复制账号、启动同步等,确保数据一致性与高效性。
摘要由CSDN通过智能技术生成

MySQL主从配置

一、 MySQL复制原理以及支持的复制类型

  • 复制原理
    • 当master服务器发生变化时,master会通过自己的I/O线程将操作记录保存到二进制文件中(Binary log)中。
    • slave服务器上的I/O线程通过配置好的master服务器地址、端口、账户、密码,读取master上的二进制文件到自己的中继日志中(Realy log)中,并在master.info文件中记录binglog的文件名和读取到的位置。
    • slave服务器的SQL线程会定时检查中继日志(Realy log)发现有更新就更新到库表中。
  • 支持的复制类型
    • 基于语句复制就是将master上执行过的语句执行一遍,在master配置文件(my.cnf)中配置:binglog_format=‘statement’,缺点是可能会造成主从数据不一致,优点是节省性能和日志记录量。
    • 基于行的复制,将修改的内容复制过去,在master的my.cnf文件中配置:binglog_format=‘row’,缺点是消耗性能和增加日志的记录量。优点是不会造成主从不一致。
    • 混合复制的,根据具体情况采取不同方式进行复制。在master的my.cnf文件中配置:binglog_format=‘mixed’,优缺点折中。

二、配置主从同步

master服务配置以及操作

  • 进入配置文件my.cnf(通常会在/etc/或/etc/mysql/路径下)中配置各项参数,然后重启master服务器,配置:
 #在[mysql]下配置千万不要在[client]下配置不然重启时会报错。
 # binlog存储的位置,如果只写文件名默认也是放在/var/lib/mysql/。
 log-bin=/var/lib/mysql/mysql-bin
 # 日志过期时间
 expire_logs_days=30
 # 服务器id不允许与同体系的其他服务器相同
 server-id=1
 #主从复制方式
 binlog_format=mixed
 #允许被从复制的库,这样就允许test1、test2两个库被从复制
 binlog-do-db=test1
 binlog-do-db=test2
 #限制某个库被从复制
 binlog-ignore-db=mysql
  • 重启mysql服务(在linux中执行)
 #输入如下linux命令
 systemctl restart mysql;
  • 查看master配置是否成功(进入到mysql中执行)
#如果有输出信息则配置成功,如果输出空提示则表示没成功
show master status;
 #配置成功会输出如下信息
     +-------------------------+----------+--------------+------------------+-------------------+
     | File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
     +-------------------------+----------+--------------+------------------+-------------------+
     | mysql-bin-master.000001 |     1515 | mysql_cluter | mysql            |                   |
     +-------------------------+----------+--------------+------------------+-------------------+
  • 创建从数据库服务访问主数据库服务器所需的账号并授权(进入到mysql中执行)
#创建用户数据并授权,该用户是给从库从主库复制时使用的
#grant是授权命令关键字,replication slave 是一个权限,即允许该用户进行从复制操作。
#on是关键字,*.* 表示所有库表,也可以写成databaseName.tableName。
#to是关键字,userName表示用户名,存在该用户就进行授权不存在则会创建。
#@是关键字,ip为slave服务器的ip地址表示允许该地址的服务器对主mysql服务器进行访问,可以使用%统配符代替。
#indentified by 为关键字,"password"表示该mysql用户的密码。
grant replication slave on *.* to userName@"ip" identified by "password"; 

slave服务器配置

  • 进入配置文件my.cnf(通常会在/etc/或/etc/mysql/路径下)中配置各项参数,然后重启slave服务器,配置:
 #slave的配置比较简单配置服务id即可,在同一个主从体系中server-id必须唯一
 server-id=2
  • 重启slave服务(在linux命令行中执行)
systemctl restart mysqld
  • 配置从服务器连接主服务器信息(在mysql中执行)
#ip是主服务器的ip,userName是主服务器用户名,password是用户密码,剩下的都是关键字了,其实还有很多配置项。
change master to master_host='ip',master_user='userName',master_password='password'
  • 启动slave(在mysql中执行)
 #启动
 start slave;
 #查看状态
 show slave status\G
 #输出一堆信息,其中下面两个字段为Yes表示连接主服务器成功
 ....
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 ....
  • 检查数据主从配置是否成功,在主数据库中进行操作,观察从数据库是否进行同步的更新即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL主从复制是一种常用的数据库复制技术,用于实现数据的备份、负载均衡和故障恢复等功能。主从配置中,一个数据库服务器充当主服务器(Master),而其他一个或多个数据库服务器充当从服务器(Slave)。 下面是MySQL主从配置的基本步骤: 1. 在主服务器上配置binlog日志:编辑主服务器的配置文件my.cnf,在[mysqld]部分中添加`log_bin`参数,并设置一个唯一标识符。 2. 重启主服务器:重启MySQL服务以使配置生效。 3. 创建用于复制的账户:在主服务器上创建一个用于复制的账户,并赋予复制权限。 4. 在从服务器上配置复制:编辑从服务器的配置文件my.cnf,在[mysqld]部分中添加`server-id`参数,并设置一个唯一标识符。同时,设置`master_host`为主服务器的IP地址,`master_user`和`master_password`为复制账户的用户名和密码。 5. 启动从服务器:启动从服务器上的MySQL服务。 6. 在从服务器上连接到主服务器:在从服务器上使用`CHANGE MASTER TO`语句连接到主服务器,并指定主服务器的相关信息。 7. 启动从服务器的复制进程:使用`START SLAVE`语句启动从服务器上的复制进程。 8. 检查主从状态:使用`SHOW SLAVE STATUS`命令来查看主从状态,确保复制正常运行。 通过以上步骤,你就可以完成MySQL主从配置。主服务器会将更新操作记录到binlog日志中,然后从服务器从主服务器获取并应用这些日志,实现数据的复制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值