ubuntu

Ubuntu MySQL主从如何切换

小樊
67
2025-06-17 03:56:49
栏目: 云计算

在Ubuntu上,MySQL主从切换通常是为了实现高可用性和负载均衡。以下是进行MySQL主从切换的步骤:

1. 准备工作

2. 停止从服务器复制

在从服务器上执行以下命令停止复制进程:

STOP SLAVE;

3. 获取主服务器的二进制日志位置

在主服务器上执行以下命令获取当前的二进制日志文件名和位置:

SHOW MASTER STATUS;

记下FilePosition的值。

4. 将从服务器提升为主服务器

在从服务器上执行以下步骤:

a. 锁定所有表

FLUSH TABLES WITH READ LOCK;

b. 记录当前二进制日志位置

SHOW MASTER STATUS;

记下新的FilePosition的值。

c. 导出数据库

使用mysqldump导出从服务器上的所有数据库:

mysqldump -u root -p --all-databases --master-data=2 --single-transaction > full_backup.sql

这会生成一个包含CHANGE MASTER TO语句的SQL文件,用于在新主服务器上设置复制。

d. 解锁表

UNLOCK TABLES;

e. 修改配置文件

编辑从服务器的MySQL配置文件(例如/etc/mysql/my.cnf),将server-id设置为一个唯一的值,并注释掉或删除原有的复制相关配置。

f. 重启MySQL服务

sudo systemctl restart mysql

g. 导入数据库

将之前导出的备份文件导入到新主服务器上:

mysql -u root -p < full_backup.sql

h. 配置新主服务器

在新主服务器上,编辑MySQL配置文件,确保server-id是唯一的,并且没有启用复制。然后重启MySQL服务。

5. 配置旧主服务器为从服务器

在旧主服务器上执行以下步骤:

a. 修改配置文件

编辑旧主服务器的MySQL配置文件,设置server-id为一个唯一的值,并添加以下复制配置:

[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name  # 替换为你的数据库名

b. 重启MySQL服务

sudo systemctl restart mysql

c. 设置新主服务器

在旧主服务器上执行以下SQL命令,指向新的主服务器:

CHANGE MASTER TO
MASTER_HOST='new_master_ip',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='new_master_log_file',
MASTER_LOG_POS=new_master_log_pos;

new_master_ipreplication_userreplication_passwordnew_master_log_filenew_master_log_pos替换为实际的值。

d. 启动复制

START SLAVE;

6. 验证切换

在两台服务器上分别执行以下命令,验证复制是否正常工作:

SHOW SLAVE STATUS\G

检查Slave_IO_RunningSlave_SQL_Running字段是否都为Yes

注意事项

通过以上步骤,你应该能够成功地在Ubuntu上实现MySQL的主从切换。

0
看了该问题的人还看了