mariadb主从数据库复制的配置

主从数据库

mariadb安装准备
准备

共需要三台centos主机 mycat master节点 slave节点

1.为主机配置hosts文件,修改三台主机的名字
分别为:mycat db1 db2
配置hostname主机名:“hostnamectl set-hostname XXXX"
命令“bash”刷新

2.配置/etc/host文件
分别在三台主机的hosts文件中添加,三台主机的ip和对应的主机名

可以利用scp命令
scp ip地址:/etc/hosts /etc/hosts

注意:查看hostnamectl status
yum配置与防火墙
1.挂载本地镜像(三个节点上)
要在需要安装mariadb的虚拟机中挂载iso镜像
首先在硬件配置中更改使用的ISO文件,设备状态勾选已连接选项
Mount 【被挂载镜像】 【挂载位置】

2.配置本地yum源 (三个节点上)
这里使用了本地源,而不是使用远程,将源文件移动到其他地方,使其不生效
/etc/yum.repos.d/local.repo
现在yum.repos.d文件夹下是空的,现在在该文件夹下创建local.repo文件
在yum.repos.d 文件夹下touch local.repo #这个文件名就只能是这个

[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1
[centos7]
name=centos7
baseurl=file:///mnt
gpgcheck=0
enabled=1

3.关闭防护墙 (三个节点)
Iptables -F -Z -X 清空防火墙过滤规则
Iptables-save保存

4.利用xftp将gpmall-repo文件移到centos下的/opt目录下
yum repolist #查看yum仓库 #验证上述操作

安装
yum安装数据库mariadb
通过yum命令在master和slave节点上安装mariadb和mariadb-server两个文件
yum install -y mariadb mariadb-server

2个节点启动mariadb服务,并设置mariadb服务为开机自启
systemctl start mariadb
systemctl enable mariadb #开启自启动

systemctl status mariadb #查看是否启动成功
主从复制
主从复制配置
初始化mariadb数据库
在master和slave上初始化数据库,并设置密码
mysql_secure_installation
[回车,y,设置密码,在次输入,y,n,y,y]

配置数据库集群主节点
编辑主节点db1虚拟机的数据库配置文件my.cnf,在配置文件my.cnf中增添下面的内容
cd /etc/my.cnf.d
vi server.cnf
[mysqld]
log_bin=mysql-bin #记录操作日志
binlog_ignore_db=mysql #不同步MySQL系统数据库
server_id=131 #集群中每个节点id都不同,一般使用ip地址最后段数字

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

systemctl restart mariadb #重启mariadb服务
开放主节点权限
在主节点master虚拟机上使用mysql命令登录mariadb数据库,授权在任何客户端上可以以root用户登录到数据库
mysql -u用户名-p密码 #登录到数据
slave节点上也登录到数据库

为主节点(master)设置权限,允许远程登录到数据库
grant all privileges on . to root@’%’ identified by “123456” ;
#grant 命令:授予的意思
#privileges 命令:权限 参数有select、insert、update等,全部权限就用all
#*.*表示所有数据库和表
#root用户名
#’%'通配符表示任意主机
#identified by 网络密码

允许slave节点访问数据库,只读,设置用户名和密码,用户user
grant replication slave on . to ‘user’@‘db2’ identified by ‘123456’ ;

配置从节点(slave)同步主节点(master)
设置连接主节点的主机,连接master的用户名,密码
change master to
master_host=‘db1’,master_user=‘root’,master_password=‘123456’;

开启从节点服务,start slave; #在slave上执行
使用show slave status\G;
验证主从数据库的同步功能
在主节点上创建数据库test,再在子节点上查看,如果存在就是同步了

在主节点db1(master)上创建数据库
create database test; #创建数据库
use test #使用test这个数据库
create table company(id int not null primary key,name varchar(50),addr varchar(255));
#创建一个company的表格 括号里的是定义的字段

#在company表格中插入一条数据

在从节点db2,(slave)上查看
show databases; #查看数据库 可以看到test数据库
use test; #使用这张数据库
select * from test.company; #打开数据库test下的company这张表格

mycat安装与读写分离配置
mycat节点

环境检测:关闭防火墙
配置本地yum源文件

安装java

java -version #查看java的版本,以此检测安装是否成功

将mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到mycat虚拟机的/root目录下,并将软件包解压到/use/local中

chomd -R 777 ./mycat/ #"-R"的意思是,给mycat文件夹及里面的文件
跌代赋予777的权限

在/etc/profile系统变量文件中添加mycat服务的系统变量,并生效变量

      #echo重定向   “>>”追加的意思

source /etc/profile #生效环境变量
验证环境变量是否配置好
echo KaTeX parse error: Expected 'EOF', got '#' at position 18: …CAT_HOME #̲ “”后面跟的是变量
输出/usr/local/mycat/就说明成功了

编辑mycat的逻辑库配置文件
配置mycat服务器读写分离的schema.xml配置文件,在/usr/local/mycat/conf/目录下
先将schema.xml里的内容进行复制,复制到本机上,做成文件schema.xml
rm -f schema.xml #将文件删除
在用xftp传到/usr/local/mycat/conf/目录下
chmod -R 777 schema.xml #更改权限
vi schema.xml #修改文件
第一处:writehost的ip地址是master节点的IP地址
第二处:readhost的ip地址是slave节点的ip地址
:wq

编辑mycat的用户访问
修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户下的范文密码和数据库,密码设置123456,访问mycat的逻辑库为USERDB
在中修改密码和逻辑库,且只留这两行,删除其他
删除标签,或在前加“#”

启动mycat服务
/bin/bash /usr/local/mycat/bin/mycat start
mycat读写分离验证
在mycat虚拟机上安装mariadb-client服务
yum install -y MariaDB-client
mysql -h127.0.0.1 -p8066 -uroot -p123456 #8066端口是mycat的业务端口
show databases; #查看数据库
use USEDB; #使用数据库
show tables; #查看表
select *form company;
在mycat上使用mysql命令对表company添加一条数据(2,“bastetball”,“usa”)
insert into company values(2,“bastetball”,“usa”);

验证mycat服务对数据库读写分离
mysql -h127.0.0.1 -p9066 -uroot -p123456 -e ‘show @@datasource;’
会看到两个节点

<think>好的,我需要帮助用户找到MariaDB数据库主从复制配置的指南或教程。首先,我得回忆一下MariaDB主从复制的基本概念和步骤。主从复制通常涉及配置主服务器和从服务器,设置复制账户,获取二进制日志位置,然后在从服务器上启动复制进程。 根据用户提供的引用,特别是引用[2],MariaDB是MySQL的一个分支,完全兼容MySQL,所以MySQL的配置方法可能适用于MariaDB。不过要注意存储引擎的差异,比如MariaDB使用XtraDB代替InnoDB,但配置复制时可能不会有太大影响,因为复制主要基于二进制日志。 接下来,我需要整理配置步骤。首先确保主从服务器的MariaDB版本兼容,最好保持一致。然后修改主服务器的配置文件,启用二进制日志,分配唯一的服务器ID。创建用于复制的用户,并授予权限。之后,锁定主数据库,获取当前的二进制日志位置,导出数据。接着配置从服务器,设置唯一的服务器ID,指定主服务器的信息,包括主机地址、用户名、密码、日志文件和位置。最后启动从服务器的复制线程,并检查复制状态。 用户可能需要具体的配置文件示例和SQL命令,所以应该提供具体的配置片段,比如my.cnf中的设置,以及CHANGE MASTER TO命令的参数。同时,注意提醒用户安全最佳实践,比如使用专用复制账户,限制访问权限,这可能参考了引用[3]中的安全建议。 还要考虑到常见问题,比如网络连接问题、服务器ID冲突、二进制日志配置错误等,需要给出检查点,如验证主从网络连通性,检查MariaDB错误日志,确认复制账户权限是否正确。 用户可能需要验证复制是否正常工作,所以需要说明如何在主服务器插入测试数据,然后在从服务器检查是否同步。此外,提到一些最佳实践,比如定期监控复制状态,备份配置,处理主从数据不一致的情况。 最后,生成相关问题时,要考虑用户可能的后续问题,比如如何监控复制延迟,如何处理主从数据不一致,或者如何配置主主复制等高级设置。确保问题覆盖用户可能感兴趣的扩展主题。</think>### MariaDB 主从复制配置指南 #### 一、主从复制原理 MariaDB主从复制通过二进制日志(Binary Log)实现数据同步。主库记录所有数据变更操作,从库通过读取主库的二进制日志进行重放,保持数据一致性[^2]。 #### 二、配置步骤 1. **环境准备** - 主从服务器安装相同版本的MariaDB(建议≥10.5) - 确保网络互通(3306端口开放) 2. **主库配置** ```bash # 修改配置文件 /etc/my.cnf [mysqld] server-id=1 log_bin=master-bin binlog_format=ROW innodb_flush_log_at_trx_commit=1 sync_binlog=1 ``` ```sql -- 创建复制账户 CREATE USER 'repl'@'%' IDENTIFIED BY 'SecurePass123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; -- 锁定表并获取日志位置 FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; -- 记录File和Position值 ``` 3. **数据备份与传输** ```bash mysqldump -uroot -p --all-databases > master_db.sql scp master_db.sql user@slave:/path/ ``` 4. **从库配置** ```bash # 修改配置文件 /etc/my.cnf [mysqld] server-id=2 relay_log=slave-relay-bin read_only=1 ``` ```sql -- 导入数据 mysql -uroot -p < master_db.sql -- 设置主库信息 CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='SecurePass123!', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=328; -- 启动复制 START SLAVE; ``` #### 三、验证与监控 ```sql SHOW SLAVE STATUS\G -- 确认Slave_IO_Running和Slave_SQL_Running均为Yes -- 检查Seconds_Behind_Master是否为0 ``` #### 四、安全最佳实践 1. 使用SSL加密复制通道(参考引用[3]安全建议) 2. 定期监控复制延迟:`pt-heartbeat`工具 3. 设置自动故障转移:使用MariaDB MaxScale或ProxySQL #### 五、常见问题处理 - **复制中断**:通过`STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;`跳过错误 - **数据不一致**:使用`pt-table-checksum`进行校验 - **主库IP变更**:动态修改`CHANGE MASTER TO MASTER_HOST='new_ip'`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值