【mysql】MySql主从复制,从原理到实践!

MySQL Replication主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

复制的基本原理

在这里插入图片描述
复制过程分为三步:

  1. master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件
  2. slave将master的binary log events拷贝到它的中继日志(relay log)
  3. slave重做 中继日志中的时间,将改变应用到自己的数据库中,mysql复制是异步且串行化的

原理
slave会从master读取binlog来进行数据同步

基本原则

  • 每个slave只有一个master
  • 每个slave只能有一个唯一的服务器ID
  • 每个master可以有多个slave

一主一从

mysql的版本最好一致,并且以后台服务运行

主从都配置在【mysqld】的节点下面,都是小写

主机、从机修改my.cnf配置文件

测试环境:
主节点:192.168.25.146
从节点:192.168.25.147
mysql版本:mysql-5.5.58
linux:centos7

1.配置主机

查询最开始二进制日志没有开启

show variables like 'log_bin';

在这里插入图片描述

vi /etc/my.cnf

在【mysqld】添加

log-bin=/data/mysqldb/log/mysql-bin.log
binlog_format = ROW
expire_logs_days=15
server_id = 2

重启mysql

/etc/init.d/mysql restart

然后再查询就发现开启了
在这里插入图片描述
查看主机日志

mysql> show master logs;

在这里插入图片描述
查看serverid

mysql> show global variables like '%server%';

在这里插入图片描述
主机给从机分配权限。最后的123456是数据库密码,@后面是允许连接的从机

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

在这里插入图片描述
查看主机状态

mysql> show master status;

在这里插入图片描述

2.配置从机

修改 /etc/my.cnf

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

启动mysql

mysql -uroot -p123456

重新配置主从

reset master;

复制主机的命令(全部复制执行),一定都是全英文符号,我就是吃这个亏了

CHANGE MASTER TO MASTER_HOST='192.168.25.146',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;

开始主从
start slave;

#查看从服务器状态
show slave status\G;

成功
在这里插入图片描述

报错

1.ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

修改 /etc/my.cnf

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

2.报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 需要修改初始化密码

mysql>  alter user 'root'@'localhost' identified by '123456';

3.Slave_IO_Running: No,Slave_SQL_Running: Yes

解决办法:
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

start slave user=‘root’ password=‘123456’;

3.ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',MASTER_USER=‘slave’,MASTER_PASSWORD=‘123456’,MASTER_LOG_FILE=‘mysql-bin.00’ at line 1

全英文符号,这个“,”是中文的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

渐暖°

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

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

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

打赏作者

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

抵扣说明:

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

余额充值