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.mzph.cn/diannao/66351.shtml

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

相关文章

github gitbook写书

github创建新的仓库 在仓库中添加目录 ‘SUMMARY.md # Summary * [简介](README.md)gitbook 新建一个site https://www.gitbook.com/ 注册账号 取名字 一路 next&#xff0c;注意选免费版 最后 gitbook同步到github 你在主页可以看到 刚刚的test网站 点击右上角圈出来…

colnames看似简单,却能优化数据处理流程

引言 在数据处理和分析中&#xff0c;变量名称是至关重要的&#xff0c;它们决定了数据的可读性和操作的简便性。在R语言中&#xff0c;colnames 函数以其简单的语法设计&#xff0c;提供了高效管理数据框列名的能力&#xff0c;尤其是在复杂的爬虫任务中显得尤为重要。本篇文…

2025新春烟花代码(一)HTML5夜景放烟花绽放动画效果

标题预览效果 标题HTML代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34&…

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要&#xff0c;因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误&#xff0c;提升代码质量和系统稳定性。同时&#xff0c;它促进了团队成员间的沟通与协作&#xff0c;确保项目按时交付。此外&#xff0c;…

通过shell脚本定时采集数据到HDFS

第一步&#xff1a;创建shell脚本&#xff08;在虚拟机1下的/export/data目录下执行vi uploadHDFS.sh命令&#xff0c;编辑shell脚本文件&#xff0c;具体代码如下&#xff1a;&#xff09; 第二步&#xff1a;执行shell脚本&#xff08;确保Hadoop集群处于启动状态&#xff0c…

20250103在Ubuntu20.04.5的Android Studio 2024.2.1.12中跑通Hello World

20250103在Ubuntu20.04.5的Android Studio 2024.2.1.12中跑通Hello World 2025/1/3 14:06 百度&#xff1a;android studio helloworld android studio hello world kotlin helloword kotlin 串口 no run configurations added android studio no run configurations added 1、…

一机多实例:如何在一台机器上高效运行多个 MySQL 服务

前言 在实际开发和测试环境中&#xff0c;我们经常需要运行多个 MySQL 实例来模拟不同的数据库环境。例如&#xff0c;在一台服务器上运行多个数据库服务以节约硬件资源&#xff0c;或者同时运行不同版本的 MySQL 进行功能兼容性测试。MySQL 本身支持通过配置多实例运行&#…

STM32智能小车(循迹、跟随、避障、测速、蓝牙、wifi、4g、语音识别)总结

前言 有需要帮忙代做51和32小车或者其他单片机项目&#xff0c;课程设计&#xff0c;报告&#xff0c;PCB原理图的小伙伴&#xff0c;可以在文章最下方加我V交流咨询&#xff0c;本篇文章的小车所有功能实现的代码还有硬件清单放在资源包里&#xff0c;有需要的自行下载即可&a…

微服务篇-深入了解 Elasticsearch DSL 查询和 RestClient 查询、数据聚合(Bucket 聚合、带条件聚合、Metric 聚合)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 DSL 查询 1.1 叶子查询 1.1.1 全文检索查询 1.1.2 精确查询 1.2 复合查询 1.2.1 bool 查询 1.3 排序 1.4 分页 1.4.1 深度分页 1.5 高亮 1.5.1 实现高亮 2.0 Rest…

使用Apache Mahout制作 推荐引擎

目录 创建工程 基本概念 关键概念 基于用户与基于项目的分析 计算相似度的方法 协同过滤 基于内容的过滤 混合方法 创建一个推荐引擎 图书评分数据集 加载数据 从文件加载数据 从数据库加载数据 内存数据库 协同过滤 基于用户的过滤 基于项目的过滤 添加自定…

javaEE-网络编程4.TCP回显服务器

目录 TCP流套接字编程 一.API介绍 ServerSocket类 构造方法&#xff1a; ​编辑方法&#xff1a; Socket类 构造方法&#xff1a; 方法&#xff1a; 二、TCP连接 三、通过TCP实现回显服务器 TCP服务端&#xff1a; 1.创建Socket对象 2.构造方法 3.start方法 TCP客…

数据库1-4讲

各种名词区分 内模式也叫物理模式、存储模式。 概念模式也叫全局模式、逻辑模式。 外模式也叫用户模式。 笛卡尔积&#xff1a;D1、D2、D3集合中任取一个的所有可能情况。 因此上述笛卡尔积的基数22312 关系模型的三个完整性&#xff1a; 实体完整性&#x…

UnityWebGl:打包成webgl后UGUI不显示文字(中文)问题

是由于unity默认使用的是Arial,导致打包成webgl时中文不显示 解决方案&#xff1a; 可在电脑C盘下&#xff0c;路径为C:\Windows\Fonts 找个中文简体的字体文件放到unity里面&#xff0c;格式必须为. ttf

朴素贝叶斯方法

一般来说训练时的一个实例有很多属性用一个<a1,a2,....,an>来表示一个数据&#xff0c;那么此时根据最大后验概率的计算公式可以得出&#xff1a; 其中&#xff0c; H 是目标值集合。 估计每个 P&#xff08;hi&#xff09;很容易&#xff0c; 只要计算每个目标值 hi出现…

Launcher3主页面加载显示流程分析

布局结构 抓取布局后&#xff0c;可以看到每个图标是一个DoubleShadowBubbleTextView&#xff0c;父布局是CellLayout、workspace。 我们可以在CellLayout添加子view打印出调用堆栈信息&#xff0c;可以整体上看页面加载显示流程。 主要类 Launcher.java&#xff1a;主界面&…

C++编程进阶:标准库中的算法库解析

文章目录 概述1. 非修改性序列操作2. 修改性序列操作3. 排序相关算法4. 二分查找算法5. 合并与集合操作6. 堆操作7. 最小/最大操作8. 数值算法(`<numeric>`头文件)概述 算法库总览:介绍了C++ 标准库提供的海量算法,这些算法作用于各类容器(如vector、list、set等)和…

Express 加 sqlite3 写一个简单博客

例图&#xff1a; 搭建 命令&#xff1a; 前提已装好node.js 开始创建项目结构 npm init -y package.json:{"name": "ex01","version": "1.0.0","main": "index.js","scripts": {"test": &q…

Linux双端口服务器:端口1的文件系统目录挂载到端口2

目录 一、服务器安装NFS服务并配置二、文件挂载三、持久化挂载总结为什么服务器配置多个端口 目前有一台服务器&#xff0c;不过他设置了两个SSH的端口&#xff0c;通过下面方法可以让这两个端口连接的主机能够共享同一个文件系统&#xff0c;原本这两个端口的文件系统是隔离的…

nginx-灰度发布策略(split_clients)

一. 简述&#xff1a; 基于客户端的灰度发布&#xff08;也称为蓝绿部署或金丝雀发布&#xff09;是一种逐步将新版本的服务或应用暴露给部分用户&#xff0c;以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx&#xff0c;可以通过配置和使用不同的模块来实现基于…

【NLP自然语言处理】Transformer模型的几大核心优势与应用前景

目录 &#x1f354; Transformer的并行计算 &#x1f354; Transformer架构的并行化过程 2.1 Transformer架构中Encoder的并行化 2.2 Transformer架构中Decoder的并行化 &#x1f354; Transformer的特征抽取能力 &#x1f354; 为什么说Transformer可以代替seq2seq? 4…