2024年07月22日 MySQL怎么复制库 极客笔记
数据库复制是指在一个数据库实例上创建一个与现有数据库实例相同的副本。MySQL复制是MySQL数据库管理系统的一个重要功能,可以实现数据备份、灾难恢复和读写分离等应用。
MySQL复制基于主从架构,包括一个主数据库和一个或多个从数据库。主数据库负责处理所有写操作,写入数据库中的数据将被复制到一个或多个从数据库。从数据库只允许读操作,它们的数据由主数据库复制而来。
MySQL复制的基本原理如下:
1. 主数据库将写操作写入二进制日志(binary log)中。
2. 从数据库连接到主数据库,获取主数据库上的二进制日志,并将其重放到从数据库上。
3. 从数据库在重放完二进制日志后执行写操作,实现数据同步。
通过这种方式,主数据库的数据能够实时同步到从数据库上,从而实现数据库的复制。
下面将介绍如何在MySQL数据库中复制一个库,包括以下步骤:
在主数据库上进行以下配置:
my.cnf
配置文件中添加如下配置:log-bin=master-bin
server-id=1
这样配置后,主数据库将生成一个名为master-bin
的二进制日志文件,并为主数据库分配ID为1。
sudo systemctl restart mysql
在从数据库上进行以下配置:
my.cnf
配置文件中添加如下配置:server-id=2
确保从数据库的server-id不同于主数据库。
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
File
和Position
的值:SHOW MASTER STATUS;
在从数据库中执行以下命令,启动复制:
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='master-bin', -- 主数据库上的File值
MASTER_LOG_POS=position; -- 主数据库上的Position值
START SLAVE;
其中,master_host
为主数据库的IP地址或主机名,password
为复制用户的密码,position
为主数据库的Position值。
在从数据库上执行以下命令,查看复制状态:
SHOW SLAVE STATUS\G;
查看Slave_IO_Running
和Slave_SQL_Running
字段的值是否为Yes
,如果是,则说明复制已成功。
通过以上步骤,我们可以在MySQL数据库中复制一个库。复制库可以实现数据备份、灾难恢复和读写分离等应用,在实际应用中具有重要的作用。当数据量较大或对数据一致性要求比较高时,数据库复制是一个不可或缺的功能。
本文链接:http://so.lmcjl.com/news/8938/