MySQL:一主双从数据同步,数据多可靠
在大多数 MySQL 数据库应用场景下,数据库的读取操作通常远远超过了写入操作的数量和频率。因此,我们可以利用 MySQL 内部的主从同步机制,将读写请求分别分配到主库和从库上,来提高数据库的性能和可靠性。
其中,一主双从是典型的主从同步架构,即一个主节点和两个从节点的架构。主节点拥有完全的读写权限,从节点只能读取数据,无法写入数据。主节点将数据同步到从节点,从节点充当主节点的备份,可用于读操作、容灾和数据备份。
下面是实现一主双从数据同步的具体步骤和相关代码:
1. 准备工作
在三台服务器上分别安装 MySQL 数据库,并确定主节点和从节点的 IP 地址。
2. 配置主节点
在主节点上,修改 MySQL 配置文件 my.cnf,增加以下内容:
log-bin=mysql-bin #启用二进制日志,记录所有的更新操作
server-id=1 #主节点的唯一标识
重启 MySQL 服务,使配置文件生效。
3. 配置从节点
在从节点上,修改 MySQL 配置文件 my.cnf,增加以下内容:
server-id=2 #从节点1的唯一标识
relay-log=relay-bin #从节点1接收主节点二进制日志的文件名
log-slave-updates=1 #从节点1执行主节点更新操作
read-only=1 #从节点1只能读取数据
重启 MySQL 服务,使配置文件生效。同样的,对于从节点 2,也要进行类似的配置。
4. 配置主节点用户权限和同步方式
在主节点上,创建用于从节点同步的用户,并为其赋予 REPLICATION SLAVE 权限,以便从节点可以连接主节点并读取二进制日志。
CREATE USER 'slave'@'%' IDENTIFIED BY 'password'; #创建用户并赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES; #刷新权限
接下来,要获取主节点的 MASTER_LOG_FILE 和 MASTER_LOG_POS,以便从节点可以在正确的位置开始读取二进制日志。
可以使用如下 SQL 语句查询:
SHOW MASTER STATUS;
将查询结果复制下来,包括文件名和位置,例如:
mysql-bin.000001 1833
5. 配置从节点连接主节点
在从节点上,连接主节点并开始同步数据。
CHANGE MASTER TO
MASTER_HOST='x.x.x.x', #主节点 IP 地址
MASTER_USER='slave', #同步用户
MASTER_PASSWORD='password', #同步用户密码
MASTER_LOG_FILE='mysql-bin.000001', #主节点的二进制日志文件名,从 "SHOW MASTER STATUS;" 获取
MASTER_LOG_POS=1833; #主节点的二进制日志位置,从 "MASTER_LOG_POS;" 获取
执行以上命令后,即可启动数据同步。
6. 测试
可以通过在主节点上执行 INSERT、UPDATE 和 DELETE 等更新操作,来测试数据是否正确同步到从节点上。
总结:一主双从是一种高可用的 MySQL 数据库架构,可以提高数据库的性能和可靠性。通过以上步骤和代码实现,可以轻松配置一主双从数据同步,并应用于生产环境中。