• mariadb10.8 主主同步 相互复制


    1. 配置说明

    • 操作系统:CentOS7

    • CPU指令集:x86_64

    • host1 主机:

      • 2 core 2G 40G
      • IP:192.168.0.98
    • host2 主机:

      • 2 core 2G 40G
      • IP:192.168.0.166

    2. 数据库安装

    MariaDB官方下载文档 https://mariadb.org/download

    选择 CentOS 的 x86_64架构的 10.8 版本,源选择阿里云,如下:
    在这里插入图片描述

    创建repo

    vi /etc/yum.repos.d/MariaDB.repo
    
    • 1

    贴入一下内容

    # MariaDB 10.8 CentOS repository list - created 2022-11-17 02:48 UTC
    # https://mariadb.org/download/
    [mariadb]
    name = MariaDB
    baseurl = https://mirrors.aliyun.com/mariadb/yum/10.8/centos7-amd64
    gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装数据库

    sudo yum install -y MariaDB-server MariaDB-client
    
    • 1

    在这里插入图片描述

    3. 启动并初始化

    启动数据库

    systemctl start mariadb
    
    • 1

    初始化数据库

    mariadb-secure-installation
    
    • 1

    根据提示操作即可
    在这里插入图片描述

    4. 数据库 主主同步配置

    配说明见官方文档 mariadb . Setting Up Replication

    • 若你的数据库中已经存在数据请在同步前将主库的数据通过 导出 mariadb-dump 并在另一台主机上导入,见 6 数据库手动同步。

    • 若您已经存在主机,那么请先配置从机

    4.1 主机2 同步配置

    编辑 /etc/my.cnf配置文件加入以下内容

    [mariadb]
    log-bin
    server_id=2
    log-basename=master2
    binlog-format=mixed
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    这里配置 server_id 为2,日志命名为master2这个名字可以是主机名也可自定义,该名字是biglog的文件的命名前缀。

    重启数据库

    systemctl restart mariadb
    
    • 1

    登录 host2的数据库,检查当前数据库主机状态,可以看到master2的biglog和位置。

    show master status;
    
    • 1

    在这里插入图片描述
    创建专用于数据库同步的用户replication_user,并授权SLAVE

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'bigs3cret';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    
    • 1
    • 2

    停止从机同步

    STOP SLAVE;
    
    • 1

    在这里插入图片描述

    4.2 主机1 同步配置

    编辑 /etc/my.cnf配置文件加入以下内容

    [mariadb]
    log-bin
    server_id=1
    log-basename=master1
    binlog-format=mixed
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    这里配置 server_id 为1,日志命名为master1这个名字可以是主机名也可自定义,该名字是biglog的文件的命名前缀。

    重启数据库

    systemctl restart mariadb
    
    • 1

    登录 host1的数据库,检查当前数据库主机状态,可以看到master1的biglog和位置。

    show master status;
    
    • 1

    在这里插入图片描述

    登录 host1的数据库,创建专用于数据库同步的用户replication_user,并授权SLAVE

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'bigs3cret';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    
    • 1
    • 2

    停止从机同步

    STOP SLAVE;
    
    • 1

    在这里插入图片描述

    4.3 主机2 同步配置

    host2从host1同步的数据,配置host1的IP和同步用户。

    注意:当前处于Host2,需要配置Host1的IP和用户

    CHANGE MASTER TO
      MASTER_HOST='192.168.0.98',
      MASTER_USER='replication_user',
      MASTER_PASSWORD='bigs3cret',
      MASTER_PORT=3306,
      MASTER_CONNECT_RETRY=10;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启用SLAVE复制

    start slave;
    
    • 1

    在这里插入图片描述

    查看复制情况

    show slave status \G
    
    • 1

    在这里插入图片描述

    到这里 主机2 从 主机1 的复制已经完成,接下来以同样的方式配置 主机1。

    4.4 主机1 同步配置

    host1从host2同步的数据,配置host2的IP和同步用户。

    注意:当前处于Host1,需要配置Host2的IP和用户

    CHANGE MASTER TO
      MASTER_HOST='192.168.0.166',
      MASTER_USER='replication_user',
      MASTER_PASSWORD='bigs3cret',
      MASTER_PORT=3306,
      MASTER_CONNECT_RETRY=10;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启用SLAVE复制

    start slave;
    
    • 1

    在这里插入图片描述

    查看复制情况

    show slave status \G
    
    • 1

    在这里插入图片描述

    到这里 主机1 从 主机2 的复制已经完成,两个数据库已经可以相互复制。

    若同步状态异常请参考 [3] 修改该问题。

    5. 验证

    登录 host2 的数据库创建数据库

    create database tmp_166;
    show databases;
    
    • 1
    • 2

    在这里插入图片描述

    登录 host1 数据库可以看到数据库已经同步过来了。

    在这里插入图片描述

    6. [可选]数据库手动同步

    注:该步骤为可选步骤请根据情况选择是否操作!!

    数据库在同步前已经存在一些数据库以及用户的情况下,可以使用mariadb-dump实现数据库导出,然后手动导入,实现初始化的数据库同步,注意该操作需要在数据库同步配置操作前进行

    首先到已经存在的数据库上运行

    mariadb-dump -u root -p --all-databases > db.sql
    
    • 1

    在输入完登录口令后,将会把所有数据库都导出成SQL保存在 db.sql文件中,当然你也可以选择仅导出部分数据库,但是这样的话你需要在另外一个mariadb上创建同样的数据库,详见 官方文档 mariadb-dump/mysqldump

    接下来我们到另一台需要同步的主机上执行导入命令:

    mariadb -u root -p < db.sql     
    
    • 1

    参考文献

    [1]. mariadb . Setting Up Replication . https://mariadb.com/kb/en/setting-up-replication/#replicating-from-mysql-master-to-mariadb-slave
    [2]. mariadb . mariadb-dump/mysqldump . https://mariadb.com/kb/en/mariadb-dumpmysqldump/
    [3]. 博客园 . MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法 . 神奇二进制 . 2018.11 . https://www.cnblogs.com/l-hh/p/9922548.html

  • 相关阅读:
    各种位置编码
    【Python | 入门】 五分钟速通语法
    现货黄金如何拜师学艺?
    appium+jenkins实例构建
    django4使用富文本编辑器ckeditor浏览器显示html标签的问题
    手游帧率不稳定的原因是什么?
    Docker:本地目录挂载
    调试九法准则
    K线形态识别_镊子线
    HyperLynx(二十)DDR(三)DIMM、DD2、DDR3、DDR4和DDR5介绍
  • 原文地址:https://blog.csdn.net/q1009020096/article/details/127899701