Linux下搭建Mysql主从复制

Linux下搭建Mysql主从复制

首先需要安装两个以上的Mysql服务,一个作为master主节点服务,其余当作子节点。

主库配置

  1. 在主库修改my.cn

    vi /etc/my.cnf
    
    #拷贝下边内容到配置文件 >>>
    
    #开启log-bin二进制日志
    log-bin=mysql-bin
    
    #配置唯一的服务器ID,一般使用IP最后一位
    server-id=101
    
    #添加,允许从服务器更新二进制日志
    log-slave-updates=true
    
    #需要同步的数据库,如果有多个,复制多份指定数据库名即可(修改为自己需要同步的数据库)
    binlog_do_db=testdb
    
    #不需要同步的数据库,如果有多个,复制多份指定数据库名即可
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-ignore-db=performance_schema
    binlog-ignore-db=sys
    
    #下面不是必须配置
    #主要是为了使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性
    innodb_flush_log_at_trx_commit = 1
    
    #使binlog在每1次binlog写入后与硬盘同步
    sync_binlog = 1
    
    #只保留7天的二进制日志,以防磁盘被日志占满
    expire-logs-days=7
    
    
  2. 重启数据库

    # 重启数据库
    systemctl restart mysqld.service
    
    # 查看运行状态
    systemctl status mysqld 
    
  3. 检验设置是否成功

    # 登录mysql
    mysql -u用户名 -p密码
    

    ​ 登录成功后输入下面命令检查:

    show variables like 'server_id';
    

    ​ 再输入命令:

    show variables like 'log_bin';
    

    在这里插入图片描述

    ​ 再输入命令:

    show variables like '%skip_networking%';
    

    在这里插入图片描述

    ​ 检查完毕,设置成功。

  4. 建立主从复制的账号

    ​ 先登录MySQL之后,执行下面命令:

    GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
    

    ​ 上面SQL的作用是创建一个用户【slave】密码为【123456】并且给【slave】用户授予REPLICATION SLAVE权限,常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。

    ​ #查看master的状态

    show master status\G
    

    在这里插入图片描述

    上面结果中的File和Position的值需要记录一下,待会要用到。

从库配置

  1. 测试连接主从复制用户

    mysql -uslave -p'root@123456' -h192.168.110.101
    

    在这里插入图片描述

  2. 配置从库my.cnf

    vi /etc/my.cnf
    
    #然后在【mysqld】节点下面新增下面内容:
    
    #配置唯一的服务器ID,一般使用IP最后一位
    server-id=100
    

    ​ 然后重启数据库,并查看刚配置的是否生效:

    systemctl restart mysqld
    
    mysql -uroot -pAaBb123456
    
    show variables like 'server_id';
    
    show variables like 'log_bin';
    

    在这里插入图片描述
    在这里插入图片描述

  3. 配置复制参数

    ​ 登录MySQL后运行下面语句,注意 MASTER_LOG_FILE 和 MASTER_LOG_POS 的值要与Master的一致。

    CHANGE MASTER TO MASTER_HOST='192.168.110.101',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000537',MASTER_LOG_POS=1444;
    

    ​ 如果执行失败,就执行:reset slave; 我这里执行成功了,就可以直接执行下面语句了:

    start slave;
    
  4. 查看从库状态

    ​ 执行以下命令查看从库状态:

    show slave status\G
    

    在这里插入图片描述

    ** 注意红框内的属性**

    ​ Slave_IO_Running: Yes # 负责与主机的io通信

    ​ Slave_SQL_Running: Yes # 负责自己的slave mysql进程

    ​ 若出错,则清理掉之前的配置,执行以下命令:

    stop slave;
    
    reset slave all;
    
  5. 测试

    ​ 使用连接工具连接上主库和从库后,在主库上面新建一个【testdb】数据库,然后从库直接刷新,就可以看到这个数据库了,同样的,你在主库上新建什么表,添加什么数据,刷新从库后,会发现,数据都在了,说明测试成功了,现在主从复制功能就实现了。
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42901201

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值