Linux上MySQL主从复制配置

1.我的Linux是centos7 mysql版本是5.7

2.准备两个能正常启动的MySQL的服务器

,我的两个IP分别是128和129,我是把129作为master节点,128作为slave节点

3.防火墙要关闭


systemctl stop firewalld.service,
还要把这个也跟关闭SeLinux权限问题
/usr/sbin/sestatus -v 这个是查看SeLinux是否关闭的,我的已经关闭了所以是这个样子
在这里插入图片描述
如果没有关闭使用这个命令关闭
vi /etc/sysconfig/selinux 然后再用/usr/sbin/sestatus -v查看是否关闭
在这里插入图片描述

4.现在先看master节点的配置

进入my.cnf,这个是MySQL的配置文件
vi /etc/my.cnf 我的是放在这里了
#打开Mysql日志,日志格式为二进制,这个binlog的文件夹是要自己创建的,并且赋予MySQL的权限,使用这个命令chown -R mysql:mysql binlog, msyql-bin是启动MySQL自动创建的
log-bin=/usr/local/software/mysql5.7/mysql/data/binlog/mysql-bin
#[必须]服务器唯一ID,默认是1
server-id=1
#每次执行写入就与硬盘同步
sync-binlog=1
#需要同步的二进制数据库名
binlog-do-db=tuling
binlog-do-db=tuling_master
#只保留7天的二进制日志,以防磁盘被日志占满
expire-logs-days = 7
#不备份的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys

在这里插入图片描述
在这里插入图片描述
以上配置是指定复制那个数据库了,如果不指定按照下面配置
在这里插入图片描述

5.配置完成后重启MySQL服务

service mysql restart
如果报错去看一下日志报的什么错误,具体问题具体解决

6.**进入mysql中创建复制帐号

**
1.在 Master 的数据库中建立一个备份帐户(user = tuling,pwd=root):每个 slave 使用标准的 MySQL 用户名和密码连接 master 。进行复制操作的用户会授予 REPLICATION SLAVE 权限。
#创建用户 mysql> CREATE USER ‘tuling’@‘192.168.%.%’ IDENTIFIED BY ‘root’;
#授权mysql> grant replication slave,replication client on . to tuling@‘192.168.%.%’ identified by ‘root’;
#刷新权限mysql> FLUSH PRIVILEGES;
2.查看主服务器状态
  在 Master 的数据库执行 show master status,查看主服务器二进制日志状态及位置号。
在这里插入图片描述
3.master的就配置好了

7.配置slave

1.对 slave 进行配置,打开中继日志,指定唯一的 servr ID,设置只读权限。在配置文件加入如下值:

server-id=2 //配置server-id,让从服务器有唯一 ID号 relay_log = mysql-relay-bin //打开Mysql中继日志,日志格式为二进制
read_only = 1 //设置只读权限
log_bin = mysql-bin //开启从服务器二进制日志
log_slave_updates = 1 //使得更新的数据写进二进制日志中
#如果salve库名称与master库名相同,使用本配置
replicate-do-db = tuling
#如果master库名[tuling]与salve库名[tuling01]不同,使用以下配置[需要做映射] replicate-rewrite-db = tuling[主库名] -> tuling01[从库名]
#如果不是要全部同步[默认全部同步],则指定需要同步的表
replicate-wild-do-table=tuling01.t_order
replicate-wild-do-table=tuling01.t_order_item

以上配置根据自己需要配置
这是我的配置
在这里插入图片描述
2.配置完之后重启服务
可使用SHOW SLAVE STATUS\G;查看从服务器状态
在这里插入图片描述
只有这两个都变成yes才算成功
我遇到的问题是在重启从节点的时候报了如下错误
在这里插入图片描述
这是因为slave节点配置需要复制到那个数据库了,但是我从库中没有创建这个库导致报这个错误
2. 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.
原因分析:

mysql 5.7的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy  data文件夹后server_uuid是相同的,show variables like '%server_uuid%';

解决方法:

找到data文件夹下的auto.cnf文件,修改里面的uuid值,自己手动改了即可,保证各个db的uuid不一样,重启db即可

8. 测试主从同步

我们在 master 服务器上创建一个数据库,再使用该数据库创建一个表,添加一条记录,来看一看 slave 服务器有没有同步成功。
  首先,我们先来查看一下两个服务器上有什么数据库:
  master:
在这里插入图片描述
slave:
在这里插入图片描述

现在,我是在master的test库中创建一个test的表
我在看slave的test的时候,发现多了一个test的表,表明主从复制成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值