MySQL主从复制搭建

1. 环境

1.1 操作系统

CentOS7最小化安装

# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"

# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

1.2 主从节点

本例中共涉及到两台服务器

  1. 10.10.2.231:主机名node1,作为主节点
  2. 10.10.2.232:主机名node2,作为从节点

1.3 MySQL版本

# mysql -pRoot@123 -e "select version()\G;"
version(): 8.0.26

# rpm -qa |grep mysql
mysql-community-client-plugins-8.0.26-1.el7.x86_64
mysql-community-client-8.0.26-1.el7.x86_64
mysql-community-server-8.0.26-1.el7.x86_64
mysql-community-common-8.0.26-1.el7.x86_64
mysql-community-libs-8.0.26-1.el7.x86_64
mysql-community-libs-compat-8.0.26-1.el7.x86_64

2. 安装MySQL

可参考另一个博文:CentOS7用yum安装MySQL8注意:后续root密码我们将使用Root@123。

3. 配置主从复制

3.1 配置server_id

3.1.1 配置主节点的server_id=1

  1. 修改/etc/my.cnf,在[mysqld]节点下添加server_id=1

    # vi /etc/my.cnf
    [mysqld]
    (省略部分内容...)
    server_id=1

  2. 重启MySQL服务器:service mysqld restart

  3. 确认修改结果:

    # mysql -pRoot@123 -e "show variables like 'server_id\G'"
    ********************** 1. row **********************
    Variable_name: server_id
    Value: 1

3.1.2 配置从节点的server_id=2

参照主节点配置

3.2 主节点开启Binary Log

3.2.1 查看Binary Log状态

# mysql -pRoot@123 -e "show variables like 'log_bin'\G"
********************** 1. row **********************
Variable_name: log_bin
Value: ON

3.2.2 开启Binary Log

  • MySQL8.0之后版本Binary Log默认开启

  • MySQL8.0之前版本,修改/etc/my.cnf,在[mysqld]节点下添加log-bin=mysql-bin,开启Binary Log。修改完成后重启MySQL服务:service mysqld restart

    # vi /etc/my.cnf
    [mysqld]
    (省略部分内容...)
    log-bin=mysql-bin

3.3 主节点创建MySQL用户

登录主节点MySQL mysql -h10.10.2.231 -pRoot@123执行:

mysql> CREATE USER 'reply'@'%' IDENTIFIED BY 'Reply@123' PASSWORD EXPIRE NEVER;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'reply'@'%';
mysql> FLUSH PRIVILEGES;

3.3 获取主节点二进制日志坐标

登录主节点MySQL mysql -h10.10.2.231 -pRoot@123执行:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS\G;
********************** 1. row **********************
File: binlog.000003
Position: 1540

注意:记录FilePosition的值,后面会用到,并且不要退出当前MySQL连接,保证所有库表的锁定状态。

3.4 从节点设置主从复制

登录从节点MySQL mysql -h10.10.2.232 -pRoot@123执行:

mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.10.2.231',SOURCE_USER='reply',SOURCE_PASSWORD='Reply@123',SOURCE_LOG_FILE='binlog.000003',SOURCE_LOG_POS=1540;

mysql> START SLAVE;

执行完成后可通过SHOW SLAVE STATUS;确认从节点的同步状态:

mysql> SHOW SLAVE STATUS;
********************** 1. row **********************
(省略部分内容...)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(省略部分内容...)

最后还要记得之前尚未关闭的主节点的MySQL连接,把它关闭掉

4. 验证主从复制效果

在主节点中创建数据库:mysql -h10.10.2.231 -pRoot@123 -e 'create database test;'

在从节点中确认新创建的数据库已经同步到从节点:mysql -h10.10.2.232 -pRoot@123 -e 'show databases;'

posted @ 2021-11-11 17:42  柚子苹果果  阅读(105)  评论(0编辑  收藏  举报