Centos7 mysql主从搭建

准备环境

  1. 准备两台相同的mysql服务器,确保防火墙关闭或二者3306端口打开
    (可以先创建一台虚拟机,部署好mysql后,再复制一份虚拟机)

配置主节点

  1. 创建一个同步用账号,并赋予相应权限
    (为了方便,先设置密码复杂度限制为low)
    用户名:info2soft 密码:info2soft
    在这里插入图片描述
  2. 配置mysql

习惯上在修改配置文件的时候一般不能让数据在写入数据库中,目的是为了在启动的时候主从两个数据库数据一致,故将主数据库表上锁
mysql数据库中执行

mysql> flush tables with read lock;

锁好后,root用户执行

vi /etc/my.cnf

在文本最后插入以下两行内容

server-id=1
log-bin=mysql-bin

重新启动数据库

systemctl restart mysqld

再次进入数据库,检查是否配置成功
在这里插入图片描述
mysql-bin.000001日志文件,等会配置从数据库的时候需要这个名字,154是开始复制的位置(不同的服务器154可不同)

配置从节点

vi /etc/my.cnf

在文本最后插入以下一行内容

server-id=2

配置好后,重新启动数据库

systemctl restart mysqld

再次进入数据库,执行命令
192.168.31.98为主库ip

mysql> CHANGE MASTER TO master_host='192.168.2.98',master_port=3306,master_user="info2soft",master_password="info2soft",master_log_file='mysql-bin.000001',master_log_pos=154;

配置好后,重新启动数据库

systemctl restart mysqld

检查是否配置成功

show slave status\G

在这里插入图片描述
到此配置成功,释放主库的锁

如果是克隆的mysql服务器,此处会不成功,因为两个mysql库的uuid相同
解决方法看最后

unlock tables;

验证测试

主库新建数据库,看备库是否有数据
在这里插入图片描述
主库新建表,插入数据,备库查询
在这里插入图片描述

问题处理

如果是克隆的mysql服务器,此处会不成功,因为两个mysql库的uuid相同
解决问题思路:

  1. 找到mysql配置的这个文件/etc/my.cnf
  2. 在文件中找到mysql错误异常日志文件的路径,我配置的是log-error=/var/log/mysqld.log
  3. 编辑/var/log/mysqld.log文件
  4. 查看具体异常信息
    在这里插入图片描述
    由此看出,是由于两个库uuid相同导致
    通过修改auto.cnf可解决
find -name auto.cnf

在这里插入图片描述
修改此文件的uuid号,随便改一个字符就行,保存,重启数据库即可,再进入数据库查询,正常

参考文章:
基于centos7下的MySQL主从复制(Master-Slave)实践,以及搭建
	https://blog.csdn.net/zhaogangyyxf/article/details/79826550
mysql主从复制之异常解决--- Slave_IO_Running: NO
	https://blog.csdn.net/weixin_40816738/article/details/100054450
Centos7下Mysql设置密码的验证强度等级及密码长度
	https://blog.csdn.net/weixin_44110998/article/details/98106014
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值