MySQL主从同步(互为主从)搭建

这里使用到了MySQL的分支MariaDB。 这里用到两台装有MySQL主机ip为192.168.52.5和192.168.52.6,两台服务器互为主从
借鉴了这位大佬的博客添加链接描述

  1. 修改两台服务器的mysql配置文件并重启服务,在[mysqld]下
vim /etc/my.cnf
[mysqld]
## 该mysql服务节点的唯一标识
server_id=5
## 开启bin-log日志
log_bin=mysql-bin
# 开启二进制日志
relay-log=relay-mysql
#开启中继日志
relay-log-index=relay-mysql.index
#设置为只读,这里关闭表示slave可读可写
log_slave_updates=on
#自增字段每次递增2
auto-increment-increment=2
#自增字段从1开始,避免id冲突 集群两台主机的起步要不同
auto-increment-offset=1

拓展 配置文件mysqld字段下添加
replicate-ignore-db=库名 #设定不需要同步的数据库
replicate-wild-ignore-table=库名.表名 #设定不需要同步某个库的某个表
#需要同步的二进制数据库名
binlog-do-db=testdemo
#只保留7天的二进制日志,以防磁盘被日志占满(可选)
expire-logs-days = 7
#如果salve库名称与master库名相同,使用本配置
replicate-do-db = testdemo
#如果master库名[testdemo]与salve库名[testdemo01]不同,使用以下配置[需要做映射]
#replicate-rewrite-db = testdemo -> testdemo01
#如果不是要全部同步[默认全部同步],则指定需要同步的表
#replicate-wild-do-table=testdemo.user
#replicate-wild-do-table=testdemo.demotable

mysql配置文件

重启MySQL服务

# 重启
systemctl restart mysql
# 查看启动状态
systemctl status mysql
  1. 分别在两台服务器创建MySQL同步账号
    因为从库的IO线程需要建立与主库的TCP/IP连接用于将二进制日志复制到从库中继日志中。mysql要赋予一些特殊的权限给复制线程
#登录mysql服务
mysql -uroot -p123456
#主库建立对应的复制用户(仅限于访问主库对应的ip)
grant replication slave,  replication client on *.* to 'userName'@'主库ip' identified by 'password';
# 保存权限
flush privileges;

这里是我配置的

grant replication slave, replication client on . to ‘slave’@‘192.168.52.6’ identified by ‘123456’;
grant replication slave, replication client on . to ‘slave’@‘192.168.52.5’ identified by ‘123456’;

  1. 这里可以清空两台主机的master和slave日志(若之前有开启过同步的,需要先停止同步:stop slave;)在mysql命令行中输入:
reset master;
reset slave;
  1. 查看主库mysql服务bin-log 开启状态,然后在从库执行change master to命令
show master status;

查看bin-log

# 语法 从节点执行
change master to master_host='主库ip', master_user='用于复制的用户名', master_password='密码', master_port=master节点端口, master_log_file='主节点对应的binlog文件', master_log_pos=主节点对应的binlog文件偏移量;

#互为主从
#192.168.52.5上执行
change master to master_host='192.168.52.6', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=328;
#192.168.52.6上执行
change master to master_host='192.168.52.5', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=328;
  1. 启动从节点
# 启动从节点
START SLAVE;
  1. 查看备库状态
SHOW SLAVE STATUS \G;

SHOW SLAVE STATUS \G;

  1. 如果两台Slave_IO_Running和Slave_SQL_Running都是Yes状态,代表互为主从配置成功
  2. 测试,使用客户端连接其中一个mysql服务在表中随便插入一条数据,另外一个mysql服务自动同步
    在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值