下面是Mysql主从复制实际操作案例的完整攻略。
什么是主从复制(master-slave)?
MySQL主从复制是指将一个MySQL主库上的数据同步到一个或多个MySQL从库的过程。在主从复制中,更新发生在主库上,然后主库将更新的数据传输到一个或多个从库上,从而实现主从复制。
主从复制实际操作步骤
1. 配置主库
首先需要在主库(即需要被复制的MySQL服务器)上配置主库参数。请按照以下步骤操作:
- 打开my.cnf文件,并添加以下行:
server-id=1
log-bin=mysql-bin
binlog-do-db=test_db
这些选项将通过二进制日志文件(mysql-bin)来记录主库的更新操作,并指定应该记录哪个数据库中的操作。
-
重启MySQL以确保更改已生效。
-
授予一个新的用户只读权限以执行复制。执行以下命令:
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
其中,slave_user
是从库所需的用户,password
是该用户的密码。
- 在主库中创建一个数据表,例如:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT, name VARCHAR(20));
INSERT INTO test_table (id,name) VALUES (1,'Tom');
2. 配置从库
接下来需要配置从库(即需要接收主库中数据的MySQL服务器)。请按照以下步骤操作:
- 在从库中打开my.cnf文件,并添加以下行:
server-id=2
replicate-do-db=test_db
这些选项将指定应该只复制哪个数据库中的操作。
-
重启MySQL以确保更改已生效。
-
在从库中设置主库和从库之间的连接。
CHANGE MASTER TO
MASTER_HOST='master_host_name', # 主库ip或域名
MASTER_USER='slave_user', # 主库授权的用户名
MASTER_PASSWORD='password', # 主库授权的密码
MASTER_LOG_FILE='mysql-bin.000001', # 主库上二进制日志文件名
MASTER_LOG_POS=98; # 主库上二进制日志位置
这里需要替换掉MASTER_HOST、MASTER_USER和MASTER_PASSWORD为实际的值,MASTER_LOG_FILE和MASTER_LOG_POS是在主库中执行SHOW MASTER STATUS
命令获得的值。这些值是从库连接到主库的关键。
- 启动从库开始复制数据。
START SLAVE;
3. 测试主从复制
现在可以测试主从复制是否正常工作。在主库上执行以下SQL语句:
INSERT INTO test_table (id,name) VALUES (2,'Jerry');
然后在从库上执行以下命令:
SELECT * FROM test_db.test_table;
应该能看到主库中添加的新数据已被正常复制到从库中。
示例说明
下面以两条示例说明主从复制的应用场景。
示例1:读写分离
在实际情况下,当读请求过多时,如果使用单台MySQL服务器处理所有读请求,可能会导致性能瓶颈。为了解决这个问题,可以使用主从复制的方式进行读写分离。
通过将主库用于写操作,从库用于读操作,可以有效地分担主库的压力,提高查询效率。可以将主库配置为仅接受写操作,而从库配置为只接受读操作。这样可以确保从库不会对主库造成影响,从而提高可用性。
示例2:灾备恢复
主从复制还可以用于实现灾备恢复。例如,在主库发生故障时,从库可以接管其余的服务,确保业务的连续性和稳定性。这种恢复方式通常会比备份和恢复数据库更快,因为从库已经包含了大多数或所有的数据,并且可以立即开始提供服务。
在日常运维过程中,一般不会将主库和从库部署在同一台服务器上,以避免服务器故障带来的影响。同时,主库和从库也应该在不同的网络环境中运行,以避免网络崩溃带来的影响。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql主从复制(master-slave)实际操作案例 - Python技术站