Centos源码安装MariaDB 基于GTID主从部署(一遍过)

MariaDB安装

安装依赖

yum install cmake ncurses ncurses-devel bison

下载源码

// 下载源码 
wget https://downloads.mariadb.org/interstitial/mariadb-10.6.20/source/mariadb-10.6.20.tar.gz // 解压源码 
tar xzvf mariadb-10.5.9.tar.gz

编译安装

cmake -DCMAKE_INSTALL_PREFIX=/home/mariadb10/node5308/mysql \-DDEFAULT_CHARSET=utf8 \-DWITH_DEBUG=1 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \-DDOWNLOAD_BOOST=1 \-DWITH_BOOST=/usr/local/all_boost ..make -j`nproc`;make install

说明:在编译过程中可能会遇到如下错误:

解决方案:下载对应文件,并将其复制到对应目录下即可!

配置文件

配置文件如下:

[client]
user=mariadb10
socket=/home/mariadb10/node5307/tmp/mysql.sock[mysqld]
user=mariadb10core-filedefault-storage-engine                  = InnoDB
basedir                                 = /home/mariadb10/node5307/mysql
datadir                                 = /home/mariadb10/node5307/data
tmpdir                                  = /home/mariadb10/node5307/tmp
#plugin-dir                              = /home/mariadb10/node5307/mysql/lib/plugin
pid-file                                = /home/mariadb10/node5307/tmp/mysql.pid
port                                    = 5307
socket                                  = /home/mariadb10/node5307/tmp/mysql.sock
log-error=/home/mariadb10/node5307/logs/mysqld.log# mysql服务ID,保证整个集群环境中唯一,默认为1
server-id=20241231# 是否只读,1代表只读,0代表读写
read-only=0init-file=/home/mariadb10/init.file# MySQL最大连接数
max_connections = 5510# InnoDB Buff Pool
innodb_buffer_pool_size = 4G# 日志文件大小
innodb_log_file_size = 1Ginnodb_flush_log_at_trx_commit = 1
#innodb_buffer_pool_instances = 8
innodb_io_capacity_max = 20000
innodb_io_capacity = 20000thread_cache_size = 16

初始化文件

初始化文件(init.file)内容如下:

# 下面所有的操作都不写入binlog
set session sql_log_bin = 0;
delete from mysql.user where user="s01";# 设置root用户密码
alter user 'root'@'localhost' identified by 'kingsoft.';# 创建一个新的用户
create user 's01'@'%' identified by 'kingsoft.';# 把用户host权限改为'%'
update mysql.user set host='%' where user='root';
update mysql.user set host='%' where user='s01';
FLUSH PRIVILEGES;# 对上述用户进行授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 's01'@'%';
GRANT XA_RECOVER_ADMIN ON *.* TO root@'%';
FLUSH PRIVILEGES;

初始化脚本

初始化脚本(initial.sh)如下:

#!/bin/bash./clean.sh/home/mariadb10/node5307/mysql/scripts/mariadb-install-db --defaults-file=/home/mariadb10/node5307/my.cnf

启动脚本

启动脚本(start.sh)如下:

#!/bin/bashnohup /home/mariadb10/node5307/mysql/bin/mysqld --defaults-file=/home/mariadb10/node5307/my.cnf > /home/mariadb10/node5307/start.log 2>&1 &

mariadb tree

[root@vm172-0-11-157 mariadb10]# tree -L 2
.
├── init.file
├── node5307
│   ├── clean.sh
│   ├── data
│   ├── initial.sh
│   ├── logs
│   ├── my.cnf
│   ├── mysql
│   ├── nohup.out
│   ├── start.log
│   ├── start.sh
│   ├── stop.sh
│   └── tmp└── 

根据自己需要安装,我在本地装了三个实例!

初始化 & 启动 & 连接

// 初始化
./initial.sh// 启动
./start.sh/home/mariadb10/node5307/mysql/bin/mysql --defaults-file=/home/mariadb10/node5307/my.cnf -uroot -h127.0.0.1 -pkingsoft. -P5307

连接结果:

MariaDB主从部署

MySQL复制有两种方式:基于日志点的复制、基于GTID的复制,两种方式都依赖于MySQL二进制日志。

# 二进制日志格式
binlog-format=STATEMENT|ROW|MIXED
# ROW格式下日志的级别
binlog-row-image=full|minimal|noblob

基于GTID的复制

基于GTID的复制是MySQL5.6后的一种新的复制方式。MariaDB从10.0.2开始默认开启GTID。

GTID即全局事务ID,其保证了每个在Master上提交的事务在复制集群中可以生成一个唯一的ID。

GTID由3段组成,domain ID-server ID-sequence number。

  • domain ID:单master的环境下, domain id默认值0;多源复制是,domain id区分多个源;

  • server ID:各master节点的sever-id,下面的配置文件有此项;

  • sequence number:事务序列号。

基于GTID的主从部署详细步骤如下:

创建复制用户

在Master上创建复制用户:

MariaDB [(none)]> create user 'repl'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> grant replication slave on *.* to 'repl'@'%';
Query OK, 0 rows affected (0.00 sec)FLUSH PRIVILEGES;

Master参数配置

[mysqld]
log-bin=mysql-bin
relay-log=mysql-relay-bin
# 此两项为打开从服务器崩溃二进制日志功能,信息记录在事物表而不是保存在文件
master-info-repository=TABLE
relay-log-info-repository=TABLE

Slave参数配置

# ************从服务器*************
log-bin=mysql-bin
relay-log=mysql-relay-bin
master_info_repository = TABLE
relay_log_info_repository = TABLE

初始化数据(可选)

备份Master上的数据,还原到Slave:

# 使用mysqldump备份数据
mysqldump --master-data=2 --single-transaction --routines --all-databases -uroot -p >> dump.sql;
# 或使用xtrabackup
xtrabackup --slave-info ...
# 还原
mysql -uroot -p < all.sql

注:复制用户也会被还原到Slave!

Slave指向Master

// 用户配置不好可能导致用户权限不足
change master to master_host = '127.0.0.1',master_port=5307,master_user = 'repl',master_password = '123456',master_use_gtid = slave_pos;// 也可以直接使用默认的root用户
change master to master_host = '127.0.0.1',master_port=5307,master_user = 'root',master_password = '123456',master_use_gtid = slave_pos;# 启动主从复制
start slave;

若在配置过程中遇到新建用户无法连接问题,请参考:数据库新建用户后(Host:%),报错:localhost无法连接-CSDN博客

检查Slave状态

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 127.0.0.1Master_User: rootMaster_Port: 5307Connect_Retry: 60Master_Log_File: mysql-bin.000003Read_Master_Log_Pos: 342Relay_Log_File: mysql-relay-bin.000003Relay_Log_Pos: 641Relay_Master_Log_File: mysql-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 342Relay_Log_Space: 1757Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 20241231Master_SSL_Crl:Master_SSL_Crlpath:Using_Gtid: Slave_PosGtid_IO_Pos: 0-20241231-3Replicate_Do_Domain_Ids:Replicate_Ignore_Domain_Ids:Parallel_Mode: optimisticSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesSlave_DDL_Groups: 2
Slave_Non_Transactional_Groups: 1Slave_Transactional_Groups: 0
1 row in set (0.000 sec)

GTID相关命令

# 查看master当前GTID值
select @@global.gtid_current_pos;
# 查看slave当前GTID值
select @@global.gtid_slave_pos;
# 从库采用gtid的复制
change master to master_use_gtid = { slave_pos | current_pos | no }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503766.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot实现的保障性住房管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

Vue进阶(贰幺叁)node 版本切换

文章目录 一、前言1.1 什么是nvm? 二、查看已安装好的 node 版本三、下载 node 版本四、切换 node 版本五、查看在用 node 版本六、拓展阅读 一、前言 项目开发阶段&#xff0c;会涉及多node版本切换应用场景&#xff0c;可应用nvm实现node版本切换。 1.1 什么是nvm? nvm是…

Java-数据结构-链表-高频面试题(1)

在上一篇文章中&#xff0c;我们学习了链表中的"单向链表"&#xff0c;但学可不代表就是学会了&#xff0c;能够运用链表的地方比比皆是&#xff0c;解题方法也是层出不穷&#xff0c;今天就让我们巩固一下"单向链表"的知识吧~ 第一题&#xff1a;相交链表…

低空管控技术-无人机云监视技术详解!

一、无人机监听技术的原理 无人机监听技术主要依赖于射频&#xff08;RF&#xff09;探测、光学和红外传感器等技术手段。这些技术通过被动监听和监测无人机与飞行员&#xff08;或控制器&#xff09;之间的通信链路传输&#xff0c;以确定无人机的位置&#xff0c;甚至在某些…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…

【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来

——细节满满&#xff0c;看完立马写出一篇合格的PPT 总述 形式服务于内容&#xff0c;同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT&#xff0c;内容一定是第一位的&#xff0c;在内容篇(可点击查看)已经很详细地给出了提纲思路&#xff0c;那如何落实到…

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口&#xff1a;https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口&#xff1a;https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口&#xff1a;https://ai-to.cn/url/?ulihaimao

使用免费内网穿透(p2p)网络环境搭建小型文件管理服务器(简单操作)

目录 前言 “节点小宝” 使用环境&#xff1a; 应用场景&#xff1a; 准备工作 安装 …

在macOS上安装MySQL

macOS的MySQL有多种不同的形式&#xff1a; 1、本机包安装程序&#xff0c;它使用本机macOS安装程序&#xff08;DMG&#xff09;引导您完成MySQL的安装。有关详细信息&#xff0c;请参阅第2.4.2节&#xff0c;“使用本机包在macOS上安装MySQL”。您可以将包安装程序与macOS一…

汽车信息安全 -- S32K1如何更新BOOT_MAC

目录 1.安全启动模式回顾 2.为什么要讨论BOOT_MAC 3.S32K1如何更新? 1.安全启动模式回顾 之前提到过,S32K1系列提供了Crypto Service Engine硬件加密模块(简称CSEc),大家可以通过该芯片系统寄存器SDID.FEATURES(System Device Identification Register)来判断自己的片子…

STM32-笔记35-DMA(直接存储器访问)

一、什么叫DMA&#xff1f; DMA&#xff08;Direct Memory Access&#xff0c;直接存储器访问&#xff09;提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于CPU&#xff0c;在这个时间中&#xff0c;CPU对于…

从零开始开发纯血鸿蒙应用之实现起始页

从零开始开发纯血鸿蒙应用 一、前言二、主要页面三、应用起始页四、MainPageContent 实现1、一级结构2、二级结构2.1、EmptyContent2.2、FileListContent2.2.1、ViewAction&#xff1a;2.2.2、EditAction2.2.3、DeleteAction2.2.4、ShareAction 五、载入起始页的时机五、总结 一…

Pytorch初学

创建虚拟环境 python控制台&#xff0c;jupyter notebook,python文件运行的差异&#xff0c;后续结合使用三者。 jupter主要可以对代码进行分割单独运行&#xff0c;主要做一些探索性工作。 数据集的常见存储模式 1、以标签命名图像。 2、单独存储图像的地址。 加载数据集…

Anthropic 的人工智能 Claude 表现优于 ChatGPT

在人工智能领域&#xff0c;竞争一直激烈&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;技术的发展中&#xff0c;多个公司都在争夺市场的主导地位。OpenAI的ChatGPT和Anthropic的Claude是目前最具影响力的两款对话型AI产品&#xff0c;它们都能够理解并生成自然…

【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

更换WordPress主题的基础知识及注意事项

更换WordPress主题是优化和升级网站的重要步骤&#xff0c;不仅能够增强网站的视觉效果&#xff0c;还能改进用户体验并提高网站性能。然而&#xff0c;在进行该操作时&#xff0c;必须格外谨慎&#xff0c;避免数据丢失或功能失调的风险。本文将介绍在更换主题前需要采取的基本…

conda指定路径安装虚拟python环境

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

HTML 迷宫游戏

HTML 迷宫游戏 相关资源文件已经打包成压缩文件&#xff0c;可双击index.html直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#xff0…

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目&#xff0c;旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本&#xff0c;还能保留公式、图表、目…

调整Python+Pytest+Allure+Yaml+Pymysql框架中需要执行的用例顺序

当pytest框架中有时时候会因为用例的前后关联关系需要调整用例执行顺序时则可以跟进具体的要求调整pytest.ini配置文件中执行用例文件夹的前后顺序 当如果是需要调整某个文件夹中用例的执行顺序时&#xff0c;则跟进具体的文件调整对应testcases中test_*.py文件中的执行顺序