部署 MySQL/Mariadb 主从复制

本文主要介绍 MySQL/Mariadb 主从复制部署过程,主从复制原理请看这里

一、实验环境

  • 作业系统:CentOS 7.7
  • mariadb version:10.5.0
服务器角色IP地址主机名应用程式
Master172.50.1.107nacos-mha-s1mariadb
Slave1172.50.1.108nacos-mha-s2mariadb
Slave2172.50.1.109nacos-mha-s3mariadb

二、部署Maridb

三台服务器都要 部署mariadb

三、主从配置

配置文件路径:/etc/my.cnf.d/server.cnf

  • master节点
[mariadb]
log-bin
server_id=1
log-basename=master
binlog-format=mixed
relay_log_purge=0  # 关闭中继日志

##### 以下配置为开启 master 半同步复制 #####

rpl_semi_sync_master_enabled=ON
rpl_semi_sync_master_timeout=5000

##### 以上配置为开启 master 半同步复制 #####
  • slave1 节点
[mariadb]
log-bin
server_id=2
log-basename=slave1
binlog-format=mixed
relay_log_purge=0  # 关闭中继日志

##### 以下配置为开启 slave 半同步复制 #####

rpl_semi_sync_slave_enabled=ON

##### 以上配置为开启 slave 半同步复制 #####
  • slave2 节点
[mariadb]
log-bin
server_id=3
log-basename=slave2
binlog-format=mixed
relay_log_purge=0  # 关闭中继日志

##### 以下配置为开启 slave 半同步复制 #####

rpl_semi_sync_slave_enabled=ON

##### 以上配置为开启 slave 半同步复制 #####
  • 三台服务器都要重新启动 mariadb 服务
sudo systemctl restart mariadb.service

四、获取 master 节点 binary log(二进制日志)postion

  • 在 master 节点上,通过mysql -u root -p进入 MySQL 终端,记录 File Position 字段的值
MariaDB [(none)]> SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master-bin.000001  |      330 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
  • 继续在 master 节点上创建主从复制专有用户并授权
CREATE USER 'replication'@'%' IDENTIFIED BY 'Admin';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

五、启动 Slave

  • 分别在 Slave 节点上,执行以下语句(为 Slave 指定 Master)
MariaDB [(none)]> CHANGE MASTER TO
MASTER_HOST='172.50.1.107',
MASTER_USER='replication',
MASTER_PASSWORD='Admin123',
MASTER_PORT=3306,
MASTER_LOG_FILE='master-bin.000001',
MASTER_LOG_POS=330,
MASTER_CONNECT_RETRY=10;
  • 在 Slave 节点上 启动 Slave
MariaDB [(none)]> START SLAVE;
  • 在 Slave 节点上 查看 状态 (出现以下 两个 YES 表示成功)
MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
         
              .........省略.........

              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
          
              .........省略.........

1 row in set (0.001 sec)
herui

一枚干着DevOps工作的职业命理师

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据