Linux MariaDB 主从复制

2023-05-16

安装MariaDB

《安装MariaDB教程》

主从复制

搭建主从复制数据库不能先建数据库,有数据库,需要先删除!!!

Master主数据库

《主从复制详细参数列表》
主服务器MariaDB的/etc/my.cnf配置(没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
#编码
character_set_server=utf8

#ssl证书,默认存放在datadir的路径下面,如果更改了datadir的值,则在对应的datadir下面创建ssl文件即可
ssl
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
#服务器ID必选,建议以服务器ip最后一位为id(必选)
server-id=200
#log-bin的名称(可选)
log-bin=mariadb-bin
#进行复制的库。binlog-do-db与binlog-ignore-db为互斥条件,二者存一。(可选)
#binlog-do-db=demo
#不进行主从复制的库(可选)
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#日志格式:MIXED、STATEMENT、ROW(可选)
binlog_format=MIXED
#日志保存天数(可选)
expire_logs_days=30

#从库必选(可选)
relay-log=mariadb-relay
#互为主从必选(可选)
log-slave-updates

#加载密码复杂度审计插件(可选)
plugin-load=simple_password_check.so
#开启密码复杂度(可选)
disconnect_on_expired_password=on
# 密码中至少包含几位数字(可选)
simple_password_check_digits=1
# 密码中至少几位字母(可选)
simple_password_check_letters_same_case=1
# 密码至少几位(可选)
simple_password_check_minimal_length=8
# 密码中特殊符号(非字母和数字)至少几位(可选)
simple_password_check_other_characters=1
#默认密码过期时间 单位天 每过365天就要修改密码(可选)
default_password_lifetime=365
#最大错误登录次数(可选)
max_password_errors=5
#交互式客户端超时退出时长(可选)
interactive_timeout=7200
#非交互式客户端超时退出时长(可选)
wait_timeout=7200

[mariadb]
#安全审计(不建议开启)
log_output=TABLE
general_log

/etc/my.cnf.d/server.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
character_set_server=utf8

重启主MariaDB,主要是使my.cnf配置文件生效

systemctl restart mariadb

登录MariaDB查询主数据库是否启动bin-log日志

mysql -u root -p
show variables like '%log_bin%';
+---------------------------------+----------------------------------+
| Variable_name                   | Value                            |
+---------------------------------+----------------------------------+
| log_bin                         | ON                               |
| log_bin_basename                | /var/lib/mysql/mariadb-bin       |
| log_bin_compress                | OFF                              |
| log_bin_compress_min_len        | 256                              |
| log_bin_index                   | /var/lib/mysql/mariadb-bin.index |
| log_bin_trust_function_creators | OFF                              |
| sql_log_bin                     | ON                               |
+---------------------------------+----------------------------------+

出现log_bin的lavue是ON代表成功!

查看Master主数据库的状态

show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000001 |      330 | demo         |                  |
+--------------------+----------+--------------+------------------+

file的值后面会用到,Binlog_Do_DB就是需要主从复制的数据库。


Slave从数据库

从服务器MariaDB的/etc/my.cnf配置(没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
[必填]启用中继日志:relay-log=mariaDB-relay
[必须]MariaDB服务器唯一ID:server-id=2

/etc/my.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
#编码
character_set_server=utf8

#ssl证书,默认存放在datadir的路径下面,如果更改了datadir的值,则在对应的datadir下面创建ssl文件即可
ssl
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
#服务器ID必选,建议以服务器ip最后一位为id(必选)
server-id=201
#log-bin的名称(可选)
log-bin=mariadb-bin
#进行复制的库。binlog-do-db与binlog-ignore-db为互斥条件,二者存一。(可选)
#binlog-do-db=demo
#不进行主从复制的库(可选)
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#日志格式:MIXED、STATEMENT、ROW(可选)
binlog_format=MIXED
#日志保存天数(可选)
expire_logs_days=30

#从库必选(可选)
relay-log=mariadb-relay
#互为主从必选(可选)
log-slave-updates

#加载密码复杂度审计插件(可选)
plugin-load=simple_password_check.so
#开启密码复杂度(可选)
disconnect_on_expired_password=on
# 密码中至少包含几位数字(可选)
simple_password_check_digits=1
# 密码中至少几位字母(可选)
simple_password_check_letters_same_case=1
# 密码至少几位(可选)
simple_password_check_minimal_length=6
# 密码中特殊符号(非字母和数字)至少几位(可选)
simple_password_check_other_characters=1
#默认密码过期时间 单位天 每过365天就要修改密码(可选)
default_password_lifetime=365
#最大错误登录次数(可选)
max_password_errors=5
#交互式客户端超时退出时长(可选)
interactive_timeout=7200
#非交互式客户端超时退出时长(可选)
wait_timeout=7200

[mariadb]
#安全审计(不建议开启)
log_output=TABLE
general_log

/etc/my.cnf.d/server.cnf

[mysqld]
datadir=/data/mariaDB_data
character_set_server=utf8

重启从MariaDB,主要是使my.cnf配置文件生效

systemctl restart mariadb

登录Slave从数据库进行主从复制配置

Slave从机配置:
MASTER_HOST=主机IP
MASTER_PORT=3306(注意:端口是数字类型,不要加单引号或者双引号
MASTER_USER=主机用户
MASTER_PASSWORD=主机用户密码
MASTER_LOG_FILE=对应上面的File的值
MASTER_LOG_POS=对应上面的Position的值(注意:Position是数字类型,不要加单引号或者双引号
建议创建一个单独用来主从复制的账号,如:copy

CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;

启动主从复制

start slave;

正确结果如下:

[anolis@localhost ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#建议创建一个单独用来主从复制的账号,如:copy
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

从库查看主从复制是否成功

SHOW SLAVE STATUS\G;

从库这2个都为Yes才代表成功,有一个是No都不成功!!!
lave_IO_Running: Yes
Slave_SQL_Running: Yes

MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.56.58
                   Master_User: root
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mariadb-bin.000002
           Read_Master_Log_Pos: 330
                Relay_Log_File: mariaDB-relay.000002
                 Relay_Log_Pos: 557
         Relay_Master_Log_File: mariadb-bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

Slave failed to initialize relay log info structure from the repository错误

解决方法:
从库先停止主从复制,重置主从复制。

停止主从复制

STOP SLAVE;

执行reset slave删除salve数据库的ralaylog日志文件,并重新启用新的relaylog文件

reset slave all;

然后再回到前面登录Slave从数据库进行主从复制配置这个标题重新操作一次!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux MariaDB 主从复制 的相关文章

  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L

随机推荐

  • CentOS使用Nginx反向代理Tomcat部署Java Web项目

    CentOS使用Nginx反向代理Tomcat部署Java Web项目 今天我舍友问我 xff1a CSDN是什么意思 xff1f 床上等你吗 文章目录 CentOS使用Nginx反向代理Tomcat部署Java Web项目一 安装Tomc
  • yield函数在Python中的使用方式探究

    Python之yield学习 Python之yield1 问题描述2 yield版解决方案3 yield与generator4 总结 Python之yield 1 问题描述 在之前的学习中 xff0c 对于返回需要进行迭代序列的函数 xff
  • eslint报错解决

    Unexpected control character s in regular expression x00 no control regex eslint disable next line no control regex 用这个
  • Mac中brew的安装和常用命令

    brew是MAC中的一个包管理工具 类似于Linux中的那些自动下载yum包 通过brew可以自动下载安装很多软件包在 https brew sh 中有它的具体内容 在页面里可以找到所有安装步骤和可安装的包 安装brew 终端输入以下命令行
  • 华为2288v5服务器安装Centos7系统

    1 安装准备 1 1 硬件 以虚拟光驱 虚拟软驱为例介绍操作系统的安装过程 xff0c 如果使用物理光驱 物理软驱则以实际的光盘 软盘代替 1 2 软件 xff08 1 xff09 准备好操作系统的 ISO 镜像包 xff08 2 xff0
  • 设置docker自启动

    1 设置docker自启动 sudo systemctl enable docker 2 查看docker中的镜像 sudo docker images 3 配置默认的镜像加速 sudo mkdir p etc docker sudo te
  • ESLint 报错:error Unreachable code no-unreachable

    大多出错的原因都与 return 有关 xff0c 可能是带有返回值的方法之中调用另一个方法的时候 把方法写在了 return 后面 代码的意思就是没有执行到这个方法 xff1b 还有可能就是在遍历判断中使用了 return xff0c 符
  • 程序员:每一份不忘初心的情怀, 都是对技术的追求

    1 真正的情怀 xff0c 是从不矫情 这几年 情怀 大约快成了贬义 创业讲情怀 xff0c 产品讲情怀 xff0c 好像没点情怀都不好意思出门见人 我们曾经充满热情 xff0c 是一位开源软件倡导者 xff0c 我们崇尚全栈工程师才有未来
  • ubuntu 如何用root身份进行登录

    公司有个小项目 需要用python调用 sh脚本来执行一些东西 执行脚本的时候需要输入密码 类似 sudo S paaswd 43 脚本 但是给客户部署的话 再让客户客户 保存密码到配置文件 就显得麻烦 就想到用root方式去登陆系统 结果
  • 创建Maven项目时候弹出setup maven plugin connection解决方案

    今天创建一个maven项目的时候弹出了setup maven plugin connection xff0c 然后有两个选择 xff0c 我们直接选择auto select继续下一步 xff0c 然后等待一下 xff0c 把此页面关掉 然后
  • 基于BERT的知识库问答系统(KBQA)

    基于BERT的知识库问答系统 xff08 KBQA xff09 简介 知识库问答系统主要要做的两点分别是识别问题中的实体和提取问题中我们需要从知识库中查找的属性 xff0c 针对这两个方面我采用了NLP预训练模型BERT分别训练了基于BER
  • libc6-dev : 依赖: libc6 (= 2.23-0ubuntu3) 但是 2.23-0ubuntu10 正要被安装

    无法安装libc6 dev 如果出现下面错误 xff1a 在装libc6 dev时下列的软件包有不能满足的依赖关系 xff1a libc6 dev 依赖 libc6 61 2 23 0ubuntu3 但是 2 23 0ubuntu10 正要
  • VScode使用sftp远程修改文件

    一 下载插件 二 创建任意一个文件夹 sftp插件是在文件夹下生效的 因为你要在文件夹下进行sftp的配置 以及打开远程文件 三 配置远程连接配置 快捷键 Ctrl 43 Shift 43 P 打开config span class tok
  • iOS 上接入Lottie动画 接入Json动画

    iOS设备上的动画借助官方SDK xff1a CoreAnimation那一套已经比较强大了 xff0c 基本上的动效都能实现 xff0c 就是1 开发这边比较累 xff1b 2 安卓那边也比较累况且 俩平台最后展示的可能有些细节还不一样
  • 安装pysyft联邦框架和pysyft代码案例

    pysyft联邦框架 1 新建虚拟环境2 安装pysyft3 安装jaxlib4 安装完成5 安装结果测试6 注意事项7 pysyft框架联邦案例8 一些优秀教程9 报错解决办法 1 新建虚拟环境 由于pysyft和pytorch之间有版本
  • Ps1终端提示符的参数设置

    1 了解PS1 PS1 61 u 64 h W PS1的常用参数以及含义 d xff1a 代表日期 xff0c 格式为weekday month date xff0c 例如 xff1a Mon Aug 1 H xff1a 完整的主机名称 h
  • Python3 实现简单的生命游戏

    Python3 实现简单的生命游戏 生命游戏是英国数学家约翰 何顿 康威在1970年发明的细胞自动机 生命游戏原理 细胞自动机 xff08 又称元胞自动机 xff09 xff0c 名字虽然很深奥 xff0c 但是它的行为却是非常美妙的 所有
  • 图论

    图是数据结构和算法学中最强大的框架之一 xff08 或许没有之一 xff09 图 xff08 graph xff09 并不是指图形图像 xff08 image xff09 或地图 xff08 map xff09 通常来说 xff0c 我们会
  • 【Python】【Pygame】游戏:抓球

    来源 xff1a Python编程 从入门到实践 13 5 14 1 14 2 我感觉这个题目继续学习还可以优化 xff0c 是一个不错的小游戏 等我学了记分再来继续改进 抓球 xff08 13 5 xff09 碗在底部左右移动 xff0c
  • Linux MariaDB 主从复制

    安装MariaDB 安装MariaDB教程 主从复制 搭建主从复制数据库不能先建数据库 xff0c 有数据库 xff0c 需要先删除 xff01 xff01 xff01 Master主数据库 主从复制详细参数列表 主服务器MariaDB的