Mysql主从同步

发布时间 2023-03-29 11:26:45作者: D调灬仔

一、主从复制的重要性

      日常系统业务流量的增长,一台MySQL数据库服务器已经满足不了需求了,会负载过重,容易出现查询效率慢、宕机的情况,导致用户体验差、数据的丢失。这个时候就需要实现数据库的负载均衡和读写分离,来减少单台MySQL数据库服务器的压力。我们可以通过使用MySQL内置的复制功能来搭建MySQL一主一从或一主多从的集群环境。主服务器只负责写,而从服务器只负责读,从而减少单台MySQL数据库服务器的压力。MySQL的复制功能不仅有利于构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。

二、环境介绍

MYSQL:8.0.20

主服务器:腾讯云

从服务器:阿里云

三、初始化环境

#每台服务器上都初始化,关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

四、主数据库配置

Mysql安装:可参考:https://www.cnblogs.com/chj929555796/p/16955282.html

1、安装完成后通过vim命令进入配置

vim /etc/my.cnf
server-id = 1 #数据库服务标识 唯一ID
log-bin=master-bin #主服务器开启二进制日志
binlog_format=MIXED
log-slave-updates=true #允许从服务器更新二进制日志

若不使用root账户,需要进入mysql重新创建同步账户,本文使用了默认的root账户

#mysql8.0以上,先创建账户,然后再给从服务器授权
CREATE USER 'myslave(账户名称)'@'主服务器IP' IDENTIFIED BY '密码';
grant replication slave on *.* to 'myslave(账户名称)'@'从服务器IP';
#mysql8.0以下,创建账户的同时可以授权
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'从服务器IP' IDENTIFIED BY '密码';

然后刷新配置

FLUSH PRIVILEGES;

2、重启mysql服务

service mysql stop;
service mysql start;

3、重启成功后进入mysql(mysql -u root -p)

show master status;

File:master-bin.00000x为文件名称,用于从数据库change时的master_log_file使用

Position:为日志编号,用于从数据库change时的master_log_pos使用

文件名称和日志编号都会因刷新而实时改变,所以确定好以后最好不要去一直刷新,否则会导致从库链接失败。

截止到此,主数据配置完成。

五、从数据库配置

1、安装完成后通过vim命令进入配置

vim /etc/my.cnf

新增配置

server-id = 2 #唯一ID,多台依次累加
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index

2、重启mysql服务

service mysql stop;
service mysql start;

3、重启成功后进入从服务器mysql(mysql -u root -p)

执行和主库链接语句

change master to master_host='主库IP',master_port=3306,master_user='root',master_password='123456',master_log_file='主库File',master_log_pos=主库Position;

 4、执行成功后启动slave

stop slave;#停止

reset slave;#重置,用于change执行出错后,清理slave配置

start slave;#启动

show slave status \G;#查看链接情况

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

以上两个提示为yes代表链接成功。从库配置完成。

六、数据库同步

1、在主库创建数据库,从库会自动同步成功

2、主库添加数据及从库同步展示

主要参考文献:(31条消息) 【Mysql之中间件Mycat实现读写分离】_mysql 读写分离 企业级 服务器配置_墨庾的博客-CSDN博客