一、前言
MySQL主从复制是MySQL数据库管理中的一种重要技术,它可以使一个MySQL服务器向另外一个MySQL服务器自动复制数据,这个过程可以实现数据备份、数据分发以及高可用性等目的。本文将从以下几个方面详细介绍MySQL主从复制的原理、配置和常见问题解决。
二、主从复制原理
MySQL主从复制基于数据复制的概念,它需要在两个不同的MySQL服务器之间建立一个复制关系。在主从复制中,主服务器负责维护和更新数据,而从服务器则负责被动接受主服务器的数据更改。在配置主从复制时,需要在主服务器上启动一个binlog进程,将所有的数据更改操作都记录到binlog中;而从服务器则需要启动一个IO进程来从主服务器的binlog(二进制日志)中读取数据,并将数据写入到从服务器的中继日志(relay log)中;最后,从服务器需要启动一个SQL进程来读取中继日志,并执行其中的语句,从而达到与主服务器数据一致的目的。
三、主从复制配置
1.配置主服务器master
vim /etc/my.cnf
[mysqld]
server-id=1 #[必须]设置一个唯一的服务器ID
log-bin=mysql-bin #[必须]启用二进制日志
重启mysql
systemctl restart mysqld
可以通过下面的命令查看主库的状态
show master status;
2.配置从服务器slave
[mysqld]
server-id=2 #[必须]设置一个唯一的服务器ID
重启mysql
systemctl restart mysqld
可以通过下面的命令查看从库的状态
show slave status;
3.登录主服务的mysql
执行
GRANT REPLICATION SLAVE ON *.* to 'test'@'%' identified by '123456';
注:上面SQL的作用是创建一个用户test,密码为123456,并且给test用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
4.设置主从关系
在从库中执行下面的命令:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='test', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 22359;
其中MASTER_HOST为主服务器的IP地址,MASTER_USER和MASTER_PASSWORD为连接到主服务器的用户名和密码,MASTER_LOG_FILE为主服务器上的最后一个binlog文件的名称,MASTER_LOG_POS为该文件的位置。
MASTER_LOG_FILE和MASTER_LOG_POS可以通过查看主服务器上的status。
5.启动复制
完成主从关系的配置后,还需要启动复制进程,可以通过如下命令来启动复制:
start slave;
在mysql中执行