Linux搭建MySQL一主二从

Linux搭建MySQL一主二从

1、准备3台服务器分别是
机器名称IP角色权限
Mysql_Master192.168.41.128数据库Master读写
Mysql_Slave1192.168.41.129数据库Slave
Mysql_Slave2192.168.41.130数据库Slave
2、Mysql5.7.28安装

安装教程

3、Mysql主从配置
  • Master节点

    使用vi /etc/my.cnf命令修改Master配置文件

    #bin_log配置
    log_bin=mysql-bin
    server-id=1
    sync-binlog=1
    binlog-ignore-db=information_schema
    binlog-ignore-db=mysql
    binlog-ignore-db=performance_schema
    binlog-ignore-db=sys
    #relay_log配置
    relay_log=mysql-relay-bin
    log_slave_updates=1
    relay_log_purge=0
    

    重启Mysql服务

    service mysql restart
    

    主库给从库授权

    登录MySQL,在MySQL命令行执行如下命令(或者在Mysql库执行以下sql):

    grant replication slave on *.* to root@'%' identified by '密码';
    grant all privileges on *.* to root@'%' identified by '密码';
    flush privileges;
    //查看主库状态信息,例如master_log_file='mysql-bin.000004',master_log_pos=1804
    show master status;
    

在这里插入图片描述

  • Slave节点

    修改Slave的MySQL配置文件my.cnf,两台Slave的server-id分别设置为2和3

    #bin_log配置
    log_bin=mysql-bin
    #服务器ID,从库1是2,从库2是3
    server-id=2
    sync-binlog=1
    binlog-ignore-db=information_schema
    binlog-ignore-db=mysql
    binlog-ignore-db=performance_schema
    binlog-ignore-db=sys
    #relay_log配置 
    relay_log=mysql-relay-bin
    log_slave_updates=1
    relay_log_purge=0
    read_only=1
    

    重启服务

    service mysql restart
    

    开启同步

    登录MySQL,在两个Slave节点的MySQL命令行执行同步操作,例如下面命令(注意参数与上面show master status操作显示的参数一致):

    // 指定主库
    change master to 
    master_host='192.168.41.128',master_port=3306,master_user='root',master_password
    ='root',master_log_file='mysql-bin.000004',master_log_pos=1804;
    // 开启同步
    start slave;
    // 查看从库状态,Slave_IO_Running和Slave_SQL_Running都是Yes,表示连接成功,可以进行数据同步
    show slave status
    

在这里插入图片描述

4、配置半同步复制
  • Master节点

    登录MySQL,在MySQL命令行执行下面命令安装插件

    install plugin rpl_semi_sync_master soname 'semisync_master.so';
    show variables like '%semi%';
    

    使用vi /etc/my.cnf,修改MySQL配置文件

    # 自动开启半同步复制
    rpl_semi_sync_master_enabled=ON
    rpl_semi_sync_master_timeout=1000
    

    重启MySQL服务

    service mysql restart
    
  • Slave节点

    两台Slave节点都执行以下步骤。

    登录MySQL,在MySQL命令行执行下面命令安装插件

    install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
    

    使用vi /etc/my.cnf,修改MySQL配置文件

    # 自动开启半同步复制
    rpl_semi_sync_slave_enabled=ON
    

    重启服务

    systemctl restart mysqld
    
  • 测试半同步状态

    首先通过MySQL命令行检查参数的方式,查看半同步是否开启。

    show variables like '%semi%';
    

在这里插入图片描述

可以看到Master日志中已经启动半同步信息,例如:

less -mN less -mN /usr/local/mysql/mysql-5.7.28/data/mariadb.log

在这里插入图片描述

5、测试脚本

建表

create TABLE position (
id int(20),
name varchar(50),
salary varchar(20),
city varchar(50)
) ENGINE=innodb charset=utf8;

插入数据

insert into position values(1, 'Java', 13000, 'shanghai');
insert into position values(2, 'DBA', 20000, 'beijing');

6、搭建过程中的异常
  • 解决问题的思路

    1. 找到mysql配置的这个文件/etc/my.cnf
    2. 在文件中找到mysql错误异常日志文件的路径,我配置的是log-error=/usr/local/mysql/mysql-5.7.28/data/mariadb.log
    3. 查看/usr/local/mysql/mysql-5.7.28/data/mariadb.log文件:
    	 less -mN less -mN /usr/local/mysql/mysql-5.7.28/data/mariadb.log
    4. 查看具体异常信息
    
  • Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

    出现这个异常的原因是:由于uuid相同,而导致触发此异常

    (我是用虚拟机进行搭建的,我只安装了一台linux 又克隆了两台,一主二从 , 关键点就在于我是克隆的,mysql 有个uuid , 然而uuid 是唯一标识的,所以我克隆过来的uuid是一样的,只需要修改一下uuid 就ok了)

    解决方案:

    查询命令找此auto.cnf修改uuid即可:

    find -name auto.cnf
    

    这个文件一般是在配置的data目录下

    /usr/local/mysql/mysql-5.7.28/data
    

    重启MySQL

    service myqld restart
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值