mysql主从配置

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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值