一、主从复制的重要性
日常系统业务流量的增长,一台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博客
标签:同步,slave,log,数据库,Mysql,master,mysql,服务器,主从 From: https://www.cnblogs.com/chj929555796/p/17268145.html