MySQL的Master-Slave复制配置步骤

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013235478/article/details/53997500

在之前的文章中有记录MySQL的安装步骤,见 Windows上安装MySQLLinux上安装MySQL。这里记录下MySQL的主从复制环境的配置。

下面的引用是译自MySQL官网对 复制 的描述:

复制允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

MySQL的复制有如下优点:

  • 扩展解决方案 - 在多个Slaves(从节点)中传播负载以提高性能。在此环境中,所有的写和更新在主服务器中进行。然后,读操作可以在一个或多个Slave节点中进行。此模型可以提高写的性能(因为主节点专用于更新),同时,在越来越多的从节点上提高读取速度。
  • 数据安全 - 因为数据复制到了从节点,从节点可以暂停复制进程,才有可能在不影响主节点数据的情况下启动数据备份服务。
  • 分析 - 在主节点上创建实时数据,从而在不影响主节点性能的情况下进行信息分析。
  • 远程数据分布 - 如果分支机构希望使用主数据副本,则可以使用复制功能创建数据的本地副本以供其使用,而无需永久访问主数据。

1.主节点配置

在主节点中,必须开启二进制日志 (binlog) 并设定一个唯一的 Server ID。如果没有这样,需要配置好了后重启MySQL服务。

二进制日志记录了数据的变动情况,从节点 就是通过读取 主节点二进制日志 来进行数据复制的,如果没有启动 二进制日志 ,复制将无法进行。

复制组中的每个服务器必须配置一个唯一的服务器ID,用于标识组中的不同服务器。

在my.cnf中新增如下配置:

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

2.从节点配置

在从节点上,必须指定唯一 Server ID。可以不为从节点开启二进制日志,如果开启了,也可以用于数据备份和恢复。

在my.cnf文件中配置如下:

[mysqld]
server-id = 2

3.创建复制用户

从节点需要有一个主节点上的用户来连接主节点,任何一个有 REPLICATION SLAVE 权限的用户都可以用户复制操作。登录到主节点,执行如下命令:

mysql> CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘repl123’;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;

4.获取主节点BinLog坐标

从节点启动复制时需要获取到主节点binlog记录到的当前位置。

如果想在启动复制之前将主节点上已有的数据同步的从节点中,必须停止主节点上的处理语句,记录binlog日志位置,并备份需要所有数据。如果不停止主节点上的处理语句,会导致主从节点数据的不一致。

1.开启一个主节点上的连接,执行如下命令来阻塞所有的写操作

mysql> FLUSH TABLES WITH READ LOCK;

对于存储引擎为InnoDB的表,该命令也会阻塞 COMMIT 操作。当关闭了这个连接,对应的锁就会被释放。

2.在主节点上打开另外一个连接,执行如下命令来获取当前binlog位置。

mysql> SHOW MASTER STATUS;

结果如下图:
MySQL主从复制配置

5.同步已有数据

1.备份主节点上的已有数据

mysql> mysqldump –all-databases –master-data > /tmp/dbdump.db

2.登录到从节点后执行备份的脚本

mysql> source /tmp/dbdump.db

数据同步完成后可关闭上一步中执行 FLUSH TABLES WITH READ LOCK; 命令的连接来释放锁。

6.启动复制

1.为从节点指定复制主节点

mysql> CHANGE MASTER TO MASTER_HOST=’master_host_name’, MASTER_USER=’repl’, MASTER_PASSWORD=’repl123’, MASTER_LOG_FILE=’recorded_log_file_name’, MASTER_LOG_POS=recorded_log_position;

其中 MASTER_LOG_FILE 和 MASTER_LOG_POS 即第4步中 SHOW MASTER STATUS 查询出的结果

2.启动复制线程

mysql> START SLAVE;

7.查看验证

查看复制状态

mysql> show slave status\G

出现如下结果时表示配置成功

MySQL主从复制配置

猜你喜欢

转载自blog.csdn.net/u013235478/article/details/53997500