mySQL服务器主从搭建

70 阅读2分钟

两台服务器,分别作为主库(Master)和从库(Slave),均已安装 MySQL 5.7.33。

· 主从服务器之间网络可以正常通信。

主库(Master)配置

1. 编辑 MySQL 配置文件

打开主库的 MySQL 配置文件,一般是 /etc/my.cnf 或 /etc/mysql/my.cnf,添加或修改以下配置:

[mysqld]
# 服务器唯一 ID,范围 1 - 2^32 - 1
server-id = 1
# 开启二进制日志,用于记录主库的变更
log-bin = mysql-bin
# 选择要复制的数据库,多个数据库用逗号分隔
binlog-do-db = your_database_name
# 忽略复制的数据库# binlog-ignore-db = mysql

修改完成后,重启 MySQL 服务:

sudo systemctl restart mysqld

2. 创建用于主从复制的用户

 

登录到主库的 MySQL 控制台:

mysql -u root -p

在 MySQL 中创建一个用于主从复制的用户,并授予相应的权限:

-- 创建用户,% 表示允许从任意主机连接
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

3. 查看主库状态

  在主库的 MySQL 控制台中执行以下命令,记录下 File 和 Position 的值:

SHOW MASTER STATUS;

 

示例输出:

 
    +------------------+----------+--------------+------------------+-------------------+

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

    +------------------+----------+--------------+------------------+-------------------+

    | mysql-bin.000001 | 154      | your_database_name |                  |                   |

    +------------------+----------+--------------+------------------+-------------------+

从库(Slave)配置

1. 编辑 MySQL 配置文件

打开从库的 MySQL 配置文件,添加或修改以下配置:

[mysqld]
# 服务器唯一 ID,与主库不同
server-id = 2

修改完成后,重启 MySQL 服务:

sudo systemctl restart mysqld

2. 配置从库连接主库

 

登录到从库的 MySQL 控制台:

mysql -u root -p

在从库的 MySQL 中执行以下命令,配置从库连接主库  

CHANGE MASTER TO

MASTER_HOST='master_ip_address',

MASTER_USER='repl_user',

MASTER_PASSWORD='your_password',

MASTER_LOG_FILE='mysql-bin.000001',  -- 替换为主库 SHOW MASTER STATUS 中的 File 值

MASTER_LOG_POS=154;  -- 替换为主库 SHOW MASTER STATUS 中的 Position 值

3. 启动从库复制进程

在从库的 MySQL 控制台中执行以下命令启动从库复制进程:

START SLAVE;

4. 检查从库状态

执行以下命令检查从库的复制状态:

SHOW SLAVE STATUS\G

确保 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,表示从库复制正常工作。

测试主从复制****

 

在主库上创建一个测试数据库和表,并插入一些数据:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO test_table VALUES (1'test');

在从库上检查是否能看到相同的数据库、表和数据:

SHOW DATABASES;
USE test_db;
SELECT * FROM test_table;

如果能看到相同的数据,说明主从复制搭建成功。

注意事项****

· 主从服务器的时间要保持一致,可以使用 NTP 服务进行时间同步。

· 如果主库已经有大量数据,需要先进行数据备份并恢复到从库,再进行主从复制配置。

配置文件修改后要重启 MySQL 服务使配置生效。