MariaDB数据库的主从配置

这篇具有很好参考价值的文章主要介绍了MariaDB数据库的主从配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前置工作

首先准备两台可以互相ping通的机器,两台机器可以互为主从,示例:10.210.23.77主服务器

10.20.84.183从服务器

2、安装

在两台机器上各自安装数据

解压MariaDB安装包;

tar zxvf MariaDB.tgz
cd mariadb

 安装MariaDB依赖包;

rpm -ivh *.rpm --force --nodeps

 启动MariaDB服务

systemctl start mariadb

 安全配置

# 启动成功后运行如下命令进行安全配置
mysql_secure_installation

# 开始安全配置

  ① 输入当前密码,初次安装后是没有密码的,直接回车

  ② 未root设置密码,输入Y。

③ 设置root密码,输入inf0sec312

④ 确认输入root密码,再次输入inf0sec312。

⑤ 是否移除匿名用户,输入Y。

⑥ 拒绝用户远程登录,输入n。

⑦ 删除test库,输入n。

⑧ 重新加载权限表,输入Y

如下图所示,完成配置。

mariadb主从配置,部署,数据库,数据库,运维

 赋予root用户远程连接权限

# 输入密码登录MariaDB控制台
mysql -u root -p 
# 赋予root用户远程连接权限
grant all privileges on *.* to 'root'@'%' identified by 'inf0sec312' with grant option;
# 刷新
flush privileges;

 赋予root用户远程连接权限命令中“inf0sec312”为数据库密码,与4中安全配置密码一致。请根据现场配置进行修改。

mariadb主从配置,部署,数据库,数据库,运维

完成MariaDB安装和配置 

 注意:这种方式安装的mariadb数据库各种配置文件不在一个地方,分散到/usr/bin/下,/var/lib/mysql/下

3、配置

10.210.23.77主服务配置

[mysqld]
skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
log_slave_updates=true
expire_logs_days=7
max_binlog_size=500M
slave_parallel_threads=2
binlog_format=ROW

#复制框架
server_id=1
log_bin=binlog
max_connections=200

 10.20.84.183从服务配置

[mysqld]
skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
log_slave_updates=true
expire_logs_days=7
max_binlog_size=500M
slave_parallel_threads=2
binlog_format=ROW

#复制框架
server_id=2
log_bin=binlog
max_connections=200

在使用脚本mariadb时,通过脚本设置密码时,就不再执行mysql_secure_installation了,所以需要先设置无密码登录,否则直接执行修改密码语句会报错,如图所示:

mariadb主从配置,部署,数据库,数据库,运维

skip-grant-tables代表跳过权限认证可进登录,所有配置文件添加这条,便可实现无密码进行登录数据,但是加了这个,对数据库的安全性造成一定的威胁,所以及时禁用

进去数据库之后改密码,随后再把配置文件中的skip-grant-tables删掉,重启数据库

mariadb主从配置,部署,数据库,数据库,运维

 注意:无密码进去数据库之后修改之前先进行刷新权限,否则语句执行报错

log-error:代表mariadb的错误日志文件所在目录

server_id:代表每个机器的唯一标识符,切记不可重复!!!

log_bin:开启二进制日志文件,binlog是日志文件名

binlog-do-db:代表要同步的数据库,若不配置此项,则代表同步所有数据库,上面配置则没配置,代表同步所有数据库

在主服务器上建立帐户并授权slave

create user 'rep'@'%' identified with mysql_native_password by '$mysql_pwd';
grant replication slave on *.* to 'rep'@'%';
flush privileges;

登录主服务器10.210.23.77的mariadb,查询master的状态 

mariadb主从配置,部署,数据库,数据库,运维

配置从服务器 Slave10.20.84.183

change master to master_host='10.210.23.77',master_user='root',master_password='123456',master_log_file='bin-log.000002',master_log_pos=2759;
# ps:10.210.23.77 为主服务器ip
# bin-log.000002 为上面第三点的 File
# 2759为上面第三点的 Position
# 启动从服务器复制功能
start slave;

# 检查从服务器复制功能状态
show slave status\G

 mariadb主从配置,部署,数据库,数据库,运维

 看到Slave_IO_Running和Slave_SQL_Running两项值都为yes,则代表配置成功

登录服务器10.20.84.183的mariadb,查询master的状态 

mariadb主从配置,部署,数据库,数据库,运维

 配置从服务器Slave10.210.23.77

change master to master_host='10.20.84.183',master_user='root',master_password='123456',master_log_file='bin-log.000002',master_log_pos=2759;
# ps:10.20.84.183 为主服务器ip
# bin-log.000002 为上面第三点的 File
# 2759为上面第三点的 Positionchange master to master_host='10.210.23.77',master_user='root',master_password='123456',master_log_file='bin-log.000002',master_log_pos=2759;
# ps:10.210.23.77 为主服务器ip
# bin-log.000002 为上面第三点的 File
# 2759为上面第三点的 Position
# 启动从服务器复制功能
start slave;

# 检查从服务器复制功能状态
show slave status\G

mariadb主从配置,部署,数据库,数据库,运维  看到Slave_IO_Running和Slave_SQL_Running两项值都为yes,则代表配置成功

此时,两台机器的互为主从已经配置好

Slave_IO_Running负责与主机的io通信,Slave_SQL_Running自己的slave mysql进程

在配置过程中,会存在Slave_IO_Running为no和Connecting 都非yes的情况

mariadb主从配置,部署,数据库,数据库,运维

1.问题原因:

      (1)网络不通

      (2)防火墙端口未开放

      (3)mysql账户密码错误

      (4)mysql主从机配置文件写错

      (5)配置从机连接语法错误

      (6)主机未开放账户连接权限

2、解决步骤

(1)网络不通:用ping指令尝试是否可以接收到返回的数据

 (2)防火墙端口未开放:


1:查看防火状态
systemctl status firewalld
service  iptables status
 
2:暂时关闭防火墙
systemctl stop firewalld
service  iptables stop
 
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
 
4:重启防火墙
systemctl enable firewalld

(3)从服务器在配置时主服务器的二进制日志名称写错,我就是!!!

所以好好检查show master status查出的File对应的文件名

(4)主机未开放账户连接权限

通过指令"select user,host from user;"查看备份账号IP访问权限是否为'%',通过"show grants for repl"查看复制账户是否拥有REPLICATION CLIENT、REPLICATION SLAVE、SUPER、RELOAD权限;

   如果没有的话使用命令授权

grant REPLICATION CLIENT ON *.* TO repl;
grant REPLICATION SLAVE ON *.* TO repl;
grant SUPER ON *.* TO repl;
grant reload on *.* to repl;
FLUSH PRIVILEGES;

  最后从机重启slave配置"stop slave","start slave","show slave status"

也可以使用mysql -u root -h10.20.84.183命令,查看是否当前用户有权限进入另一台机器

4、测试

在两台机器的数据库上进行insert、update、del操作,可以看到另一台机器的数据库也做了相应改动,则双机热备全部完成

5、问题总结

1、机器重启后,mariadb数据库服务起不来

执行systemctl stop mariadb不报错

执行systemctl status mariadb报错

mariadb主从配置,部署,数据库,数据库,运维执行systemctl start mariadb也报错

mariadb主从配置,部署,数据库,数据库,运维排查一番,仍未解决,去mariadb日志查询:路径为:/var/log/mariadb/mariadb.log(路径根据自己的路径来)

mariadb主从配置,部署,数据库,数据库,运维定位错误,开始百度,发现是重启机器造成了pid文件丢失,解决方法如下

给PID所在的路径添加mysql属主与属组的权限> mkdir /var/run/mariadb

> chown mysql.mysql /var/run/mariadb/

参考博客:centos mysql pid_Centos下Mysql因为pid文件启动失败问题解析-CSDN博客文章来源地址https://www.toymoban.com/news/detail-765320.html

到了这里,关于MariaDB数据库的主从配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MariaDB数据库服务器

    目录 一、什么是数据库? 二、什么是关系型数据库? 三、数据库字符集和排序规则是什么? 四、常用数据类型 五、Mariadb数据库相关配置案例 一、什么是数据库? 数据库(DB)是以一定方式长期存储在计算机硬盘内,能与多个用户共享,具有尽可能小的冗余度、与应用程序

    2024年02月10日
    浏览(29)
  • 使用MariaDB数据库管理系统

    初始化MariaDB服务 //再确认mariadb数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要做以下5个操作 1.设置root管理员在数据库中的密码值(该密码并非root管理员在系统中的密码,这里的密码值默认应该为空) 2.设置root管理员在数据

    2024年02月19日
    浏览(35)
  • mariadb数据库从入门到精通

    实验环境:yum仓库搭建好 mariadb 是当前流行的Mysql数据库的分支 Mysql原先SUN公司(java)被Orical收购了 Mysql开源免费,所以企业当中的核心数据库是Orical,其余是Mysql mariadb是Mysql数据库的一个分支 1.数据库的安装 由于数据库的登陆不需要密码所以不安全,我们要安全初始化。 密码

    2024年01月21日
    浏览(41)
  • Cpolar内网穿透本地MariaDB数据库

    cpolar内网穿透本地MariaDB数据库,实现外公网环境下使用navicat图形化工具远程连接本地内网的MariaDB数据库 配置MariaDB数据库 安装MariaDB数据库 进入MariaDB数据库官网https://mariadb.com/downloads/community/,然后下载相应的windows版本 下载好后点击安装,出现设置密码界面设置一下密码,mar

    2024年02月06日
    浏览(29)
  • 第十六章 使用MariaDB数据库管理系统

    一、数据库管理系统 1、数据库介绍 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量数据

    2024年02月05日
    浏览(37)
  • 网络安全 Day22-mariadb数据库用户管理

    用户的格式: 用户@主机范围 合起来才算一个用户 授权主机范围 只能从本机访问: localhost 或 127.0.0.1 或 10.0.0.166 (指定IP) 授权整个网段: 授权10.0.0.1–10.0.0.254: 10.0.0.0/24 或 10.0.0.% 授权192.168.0.1—192.168.254.254: 192.168.% 严令 禁止 直接使用 % 用户增删改查 创建用户 语法: create user b

    2024年02月14日
    浏览(23)
  • 数据库信息速递 -- MariaDB 裁员后,前景不确定 (翻译)

    开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加 liuaustin3微信号 ,在新加的朋友会分到3群(共1140人左右 1 + 2 + 3) MariaDB,该公司是开源基于MySQL的关系数据库管理

    2024年02月13日
    浏览(29)
  • 【运维工程师学习五】数据库之MariaDB

    db根据存储模型划分,数据库类型主要可分为: 网状数据库(Network Database)、关系数据库(Relational Database)、树状数据库(Hierarchical Database)、面向对象数据库(Object-oriented Database) 等。商业应用中主要是关系数据库,而关系数据库中常见的软件有比如Oracle、DB2、Sybase、MS SQL Server、In

    2024年02月16日
    浏览(37)
  • Linux中常用数据库管理系统之MariaDB

    我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在。数据库就是存储这些数据资料的仓库,那么这些数据是如何被管理的呢?今天我们就来一起了解下数据库

    2024年02月12日
    浏览(31)
  • 在VM虚拟机上搭建MariaDB数据库服务器

    例题:搭建MariaDB数据库服务器,并实现主主复制。 1.在二台服务器中分别MariaDB安装。 2.在二台服务器中分别配置my.cnf文件,开启log_bin。 3.在二台服务器中分别创建专用于数据库同步的用户replication_user,并授权SLAVE。) 4.同步配置,并启用SLAVE复制 5.完成并测试,要求创建“

    2024年02月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包