Hugo博客公告弹窗

数据库主从设置

   
文章摘要
摘要小助理今天溜号啦……😜

1. 主库设置

在主库,假设是A服务器上,开放 3306 端口

sudo ufw allow 3306/tcp

重新加载 UFW 生效

sudo ufw reload

编辑/etc/my.cnf:

[mysqld]
server-id=1
read_only=0
log-bin=mysql-bin


# 指定需要同步的数据库,如果不指定,默认所有数据库
binlog-do-db=db1
binlog-do-db=db2

重启数据库

service mysqld restart

2. 从库设置

假设是B服务器上,编辑my.cnf:

[mysqld]
server-id=2
read_only=1

# 指定需要复制的数据库
replicate-do-db=db1
replicate-do-db=db2

重启数据库

service mysqld restart

3. 主库授权

登录 mysql 命令行

mysql -u root -p

只需要在主库,服务器(A)上创建同步用户:

-- 在主服务器A上执行
CREATE USER 'tongbu'@'从服务器IP' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'tongbu'@'从服务器IP';
FLUSH PRIVILEGES;

4. 配置主从关系

  1. 在主服务器上获取日志位置:
SHOW MASTER STATUS;
  1. 在从服务器上配置:
-- 1. 停止同步
STOP SLAVE;

-- 2. 重置服务器状态
RESET SLAVE;

-- 3. 配置主从关系
CHANGE MASTER TO
    MASTER_HOST='主服务器IP',
    MASTER_USER='tongbu',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.具体数字',
    MASTER_LOG_POS=具体位置;

-- 4. 启动同步
START SLAVE;

4. 验证复制状态

在从服务器上执行:

SHOW SLAVE STATUS\G

检查以下两个参数是否都为Yes:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

一、故障确认

  1. 检查主库状态
# 检查MySQL服务状态
systemctl status mysql
  1. 检查从库同步状态
-- 登录从库
mysql -u root -p

-- 检查同步状态
SHOW SLAVE STATUS\G

-- 确认以下内容:
-- 1. Slave_IO_Running 和 Slave_SQL_Running 的状态
-- 2. Seconds_Behind_Master 是否为 0(确保数据已完全同步)

二、从库提升为主库

  1. 停止从库同步
-- 在从库上执行
STOP SLAVE;
RESET SLAVE ALL;
  1. 修改从库配置文件
[mysqld]
# 删除或注释掉从库相关配置
# replicate-do-db=db1
# replicate-do-db=db2

# 取消只读模式
read_only=0

# 启用二进制日志(如果之前没启用)
log-bin=mysql-bin
  1. 重启MySQL服务
systemctl restart mysql

三、原主库恢复后的处理

如果原主库恢复,可以将其配置为新的从库:

  1. 备份新主库数据
mysqldump -u root -p --all-databases > backup.sql
  1. 将备份文件上传到原主库服务器 在原主库上恢复数据

进入到备份文件所在的目录:

cd /path/to/destination/

执行导入命令:系统会提示输入 root 用户的密码,输入后开始恢复数据

mysql -u root -p < backup.sql
  1. 配置原主库为从库
[mysqld]
server-id=2  # 注意修改server-id
read_only=1
  1. 设置复制关系
-- 在原主库上执行
CHANGE MASTER TO
    MASTER_HOST='新主库IP',
    MASTER_USER='tongbu',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.具体数字',
    MASTER_LOG_POS=具体位置;

START SLAVE;
  • MASTER_HOST:新主库的 IP 地址。
  • MASTER_USERMASTER_PASSWORD:用于复制的账户及其密码。
  • MASTER_LOG_FILEMASTER_LOG_POS:指定从库应该从哪个 binlog 文件及位置开始同步数据,需根据新主库状态设置。

执行 START SLAVE; 后,可以通过以下命令检查复制状态:

SHOW SLAVE STATUS\G;

确认 Slave_IO_RunningSlave_SQL_Running 都为 Yes 表示配置成功。

CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-01-15 13:02
clarity统计