mysql主从复制(主-从-从)

文章目录

  • 一、前期环境准备
  • 二、主库配置
    • 1.设置server-id值并开启binlog参数
    • 2.建立同步账户并给上权限
    • 3.查看主库状态
    • 4.锁表设置只读
    • 5.备份数据库数据
  • 三、从库配置
    • 1.设置server-id值并开启binlog参数
    • 2.还原从主库备份数据
    • 3.设定从主库同步
    • 4.启动从库同步开关
  • 四.测试
    • 1.在主库上创建数据库
    • 2.在主库上删除数据库
  • 总结


一、前期环境准备

前期需要准备三台主机
在这里插入图片描述

二、主库配置

1.设置server-id值并开启binlog参数

vim /etc/my.cnf 去这个配置文件下,
[mysqld]
log_bin=mysql-bin
server_id = 11

server_id 要与从库不一样
改完配置文件后需要重启数据库

systemctl restart mysqld

2.建立同步账户并给上权限

grant replication slave on *.* to 'rep'@'192.168.45.%' identified by 'redhat';

查看账户的权限

show grants for 'rep'@'192.168.45.%';

3.查看主库状态

show master status;

mysql主从复制(主-从-从)_第1张图片
可以看见当前日志名和偏移量

4.锁表设置只读

为后面备份准备,注意生产环境要提前申请停机时间;

flush tables with read lock;

如果超过设置时间不操作会自动解锁

 show variables like '%timeout%';

mysql主从复制(主-从-从)_第2张图片测试锁表后是否可以创建数据库

5.备份数据库数据

我这里使用mydb3数据库
mysql主从复制(主-从-从)_第3张图片备份该数据库

mysqldump -uroot -predhat  -B mydb3 > my.sql

然后将该数据库传给两个从库

scp my.sql 192.168.45.142:/opt/

去两个从库查看是否有该文件
在这里插入图片描述
最后进行解锁

unlock tables;

三、从库配置

1.设置server-id值并开启binlog参数

在这里插入图片描述
注意server_id不能一样,这里将它设置成12
设置完配置文件之后需要重启mysql

2.还原从主库备份数据

mysql -uroot -p < /opt/my.sql

两个从库都做一样的配置
然后去查看还原的数据库

mysql主从复制(主-从-从)_第4张图片

3.设定从主库同步

在从库的mysql上

change master to
   -> master_host='192.168.45.140',
   -> master_port=3306,
   -> master_user='rep',
   -> master_password='redhat',
   -> master_log_file='mysql-bin-000011',
   -> master_log_pos=439;

show master status;
#去查看日志名

4.启动从库同步开关

mysql> start slave;
#检查状态:
mysql> show slave status\G

这里要注意的时,因为我使用的时克隆机器,因此三台机器的uuid都是一样的,会出现报错,因此需要去修改uuid
如果您的三台主机不是克隆的可一忽略这个问题

#去这个配置文件下进行修改
vim /var/lib/mysql/auto.cnf 

[auto]
server-uuid=816b68b8-1ad6-11ee-9ffb-000c29f9526b

改完配置文件记得重启数据库

然后去查看从库状态
mysql主从复制(主-从-从)_第5张图片
当Slave_IO_Running和Slave_SQL_Running参数都为yes时,说明配置成功

四.测试

1.在主库上创建数据库

然后去从库上查看

mysql主从复制(主-从-从)_第6张图片

2.在主库上删除数据库

mysql主从复制(主-从-从)_第7张图片
测试成功,主从复制没有问题。

总结

在大家进行主从复制的时候,如果遇到Slave_IO_Running和Slave_SQL_Running参数有no时,大致有一下几种情况
1.server-id可能一样
2.server-uuid可能一样
3.主库的密码不一样
所有大家在进行配置时,一定要细心,防止出错。

你可能感兴趣的:(mysql,数据库)