MySQL 主从同步搭建
介绍
MySQL 主从同步是指通过配置 MySQL 的主服务器和从服务器,将主服务器上的数据实时同步到从服务器上。主从同步可以用于提高数据库的读写性能、备份数据、实现高可用等需求。
在本文中,我们将探讨如何搭建 MySQL 的主从同步,并提供相关的代码示例。
环境准备
在开始之前,我们需要准备以下环境:
- 两台运行 MySQL 的服务器,一台作为主服务器,一台作为从服务器。
- 安装并配置好 MySQL 数据库。
主从同步原理
在 MySQL 的主从同步中,主服务器负责处理客户端的所有读写请求,并将更改的数据记录到二进制日志(binary log)中。从服务器通过连接到主服务器,获取二进制日志中的数据,并将其应用到自己的数据库中,从而实现数据的同步。
主从同步的流程如下图所示:
stateDiagram
[*] --> 主服务器
主服务器 --> 二进制日志
二进制日志 --> 从服务器
从服务器 --> 数据库
配置主服务器
首先,我们需要在主服务器上进行一些配置。
- 打开主服务器的配置文件
my.cnf
,找到[mysqld]
部分,添加以下配置:
# 开启二进制日志
log-bin=mysql-bin
# 设置唯一标识服务器的 ID
server-id=1
-
重启主服务器使配置生效。
-
创建一个用于从服务器复制的用户,并授予相应的权限。在 MySQL 命令行界面中执行以下命令:
CREATE USER 'replication'@'从服务器的 IP' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'从服务器的 IP';
- 获取主服务器的二进制日志的文件名和位置。在 MySQL 命令行界面中执行以下命令:
SHOW MASTER STATUS;
记下结果中的 File
和 Position
,待会儿会在从服务器上用到。
配置从服务器
接下来,我们需要在从服务器上进行一些配置。
- 打开从服务器的配置文件
my.cnf
,找到[mysqld]
部分,添加以下配置:
# 设置唯一标识服务器的 ID
server-id=2
-
重启从服务器使配置生效。
-
在 MySQL 命令行界面中执行以下命令,配置从服务器连接到主服务器:
CHANGE MASTER TO
MASTER_HOST = '主服务器的 IP',
MASTER_USER = 'replication',
MASTER_PASSWORD = '密码',
MASTER_LOG_FILE = '主服务器的二进制日志文件名',
MASTER_LOG_POS = 主服务器的二进制日志位置;
- 开始同步从服务器和主服务器的数据:
START SLAVE;
- 检查从服务器的状态,确保同步正常:
SHOW SLAVE STATUS \G;
如果 Slave_IO_Running
和 Slave_SQL_Running
的值都为 Yes
,则表示同步成功。
代码示例
以下是一个简单的示例,演示如何使用 Python 连接 MySQL 数据库,并查询数据:
import mysql.connector
# 建立与数据库的连接
cnx = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
# 创建游标对象
cursor = cnx.cursor()
# 执行查询语句
query = "SELECT * FROM mytable"
cursor.execute(query)
# 获取结果
result = cursor.fetchall()
for row in result:
print(row)
# 关闭游标和连接
cursor.close()
cnx.close()
总结
通过本文的介绍,我们了解了 MySQL 主从同步的原理和配置步骤,并提供了相关的代码示例。主从同步可以帮助我们提高数据库的读写性能、备份数据和实现高可用性。希望本文能对你理解和应用主从同步有所帮助。
参考文献
- [MySQL Replication](