MySQL主从

MySQL主从

准备环境

  • 主机
主机名IP地址1(外网)IP地址2(内网)系统其他
master192.168.72.130202.207.240.130CentOS7.5.1804MEM:2G ;CPU:2P/2C;DISK:15G
slaver192.168.72.131202.207.240.131CentOS7.5.1804MEM:2G ;CPU:2P/2C;DISK:15G
  • 安装好mysql数据库服务

    参考:https://blog.csdn.net/weixin_51720652/article/details/125998267

  • 配置域名解析

主从复制原理

#####主从复制原理#####
1、在 master上开启 bin-log日志功能,记录更新、插入、删除的语句。
2、必须开启三个线程,主上开启io线程,从上开启io线程和sql线程。
3、slave的io线程去连接master,master通过io线程检查有slave过来的请求,请求日志、 postsion位置。
4、master将这些相应的日志返回给slave,slave自己去下载到本地的realy_log里面, 写入一个master-info日志记录同步的点。
5、slave的sql线程检查到realy-log日志有更新,然后在本地去exec执行。
6、主从同步是属于异步方式。
######################

master服务器配置

  • 修改配置文件/etc/my.cnf

    [mysqld]
    basedir = /application/mysql
    datadir = /application/mysql/data
    socket = /tmp/mysql.sock
    server_id = 1
    log-bin = mysql-bin
    auto_increment_offset = 1
    auto_increment_increment = 2
    log_bin_trust_function_creators = 1
    port = 3306
    log_error = /application/mysql/data/error_mysql.err
    
    [mysql]
    socket = /tmp/mysql.sock
    prompt = wjz [\d]>
    
参数功能
server_id = 1主数据库端ID号(master和slave主机id必须不一样)
log-bin = mysql-bin开启log-bin日志
binlog-ignore-db = mysql不需要复制的数据库名
binlog-do-db = master_slaver需要复制的数据库名,如果多个可重复设置,不设置默认复制所有的数据库
auto_increment_offset = 1该参数一般用在主主同步中,用来错开自增值,防止键值冲突
auto_increment_increment = 2这个参数一般用在主主同步中,用来错开自增值,防止键值冲突
log_bin_trust_function_creators = 1将函数复制到slaver
  • 重启数据库服务

  • 登录mysql数据库,配置slaver服务器的用户名、密码、权限等

    grant replication slave on *.* to 'slaver'@'%' identified by '111111';
    flush privileges;
    
  • 查看master状态

    show master status\G;
    

    在这里插入图片描述

slaver服务器配置

  • 修改配置文件/etc/my.cnf

    [mysqld]
    basedir = /application/mysql
    datadir = /application/mysql/data
    socket = /tmp/mysql.sock
    server_id = 2
    relay_log=relay-log
    read_only=ON
    port = 3306
    log_error = /application/mysql/data/error_mysql.err
    
    [mysql]
    socket = /tmp/mysql.sock
    prompt = wjz [\d]>
    

参数说明:

参数功能
server_id = 2
relay_log=relay-log开启relay_log日志主服务器的bin-log日志会同步到该位置
read_only=ON开启服务器只读
replicate-do-db=master_slaverslaver节点要复制的master节点中的数据库名称
  • 重启数据库服务
  • 设置要复制master的数据库,pos位置
change master to \
master_host='192.168.72.130',master_user='slaver',master_password='111111',\
master_log_file='mysql-bin.000002',master_log_pos=2081;

参数说明:

选项含义
master_host=‘192.168.72.130’master的IP地址
master_user=‘slaver’master设置给slave的登录用户
master_password=‘111111’master设置给slave的登录用户的密码
master_log_file=‘mysql-bin.000002’master的二进制日志文件名称(参考show master status\G;)
master_log_pos=1095master的pos参数值(参考show master status\G;)
  • 登录slave的mysql,开启主从复制,并查看slave状态

    start slave;
    
    show slave status\G;
    

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值