mysql 主从模式配置

准备

  • 两台或多台MySQL服务器。
  • 主服务器和从服务器之间可以相互通信
  • 安装相同版本的MySQL
名称 ip 备注
mysql1 192.168.101.131 master
mysql2 192.168.101.132 slave

主服务器配置

编辑MySQL配置文件(通常是/etc/my.cnf):

[mysqld]
server-id = 1 # 唯一标识MySQL服务器的ID,主服务器和从服务器必须不同。
log-bin = mysql-bin # 启用二进制日志,这是主从复制的基础。

重启MySQL服务:

sudo systemctl restart mysql

创建用于复制的用户:
CREATE USER 'slave'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

锁定表并获取二进制日志坐标:

FLUSH TABLES WITH READ LOCK; 用于锁定所有表以进行读操作,同时阻止对这些表的写操作。用于准备数据库的备份。
SHOW MASTER STATUS; 记下File和Position的值。

+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| xxx           |     xxxx|              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+

备份数据库(可选):
mysqldump -u root -p --all-databases --master-data > all_databases_backup.sql

解锁表:

UNLOCK TABLES;

将备份文件传输到从服务器。
scp /file ip:/path

从服务器配置

编辑MySQL配置文件:

[mysqld]
server-id = 2  # 确保每个从服务器的server-id都是唯一的

重启MySQL服务:
systemctl restart mysql

导入备份文件(可选):
mysql -u root -p < all_databases_backup.sql

配置从服务器以连接到主服务器:

CHANGE MASTER TO
    MASTER_HOST='主服务器IP地址',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='replica_password',
    MASTER_LOG_FILE='xxx',  # 替换为SHOW MASTER STATUS输出的File

    MASTER_LOG_POS=  xxx;  # 替换为SHOW MASTER STATUS输出的Position

启动从服务器线程:

START SLAVE;

检查从服务器状态:

SHOW SLAVE STATUS\G;

确认以下两个字段的值是Yes:

Slave_IO_Running
Slave_SQL_Running

测试

  • 在主服务器上插入一些数据。
  • 在从服务器上查询数据,确保数据已经同步。

你可能感兴趣的:(mysql,数据库)