mariadb主主

服务器环境

ip1:10.10.0.11 ip2:10.10.0.12

1.分别导入配置文件

mkdir -p /data/mariadb/conf/
vim my.cnf

[client]
default-character-set = utf8mb4[mysql]
default-character-set = utf8mb4[mysqld]
lower_case_table_names=1
wait_timeout=1800
max_allowed_packet = 512M
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
skip-host-cache

2.分别docker启动一个mariadb

docker run -d --restart=always -p3306:3306 --name mariadb -v /etc/localtime:/etc/localtime  -v /data/mariadb/conf/my.cnf:/etc/mysql/my.cnf -v /data/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mariadb:10.6

3.分别创建复制账号并授权

grant replication slave on *.* to repluser@'10.10.0.%' identified by 'zhuzhu';

4.主主复制特点

两个节点,都可以更新数据,并且互为主从。容易产生数据不一致的问题,生产中要慎用。

主主复制的配置步骤:
(1) 各节点使用各自唯一server_id
(2) 都启动binary log和relay log
(3) 创建拥有复制权限的用户账号
(4) 定义自动增长id字段的数值范围各为奇偶 auto_increment_offset=1 auto_increment_increment=2
(5) 双主均要把对方指定为主节点,并启动复制线程

5.配置主节点10.10.0.11

5.1# 在[mysqld]段内增加四行,定义节点ID、开启二进制、开始点和增长幅度
vim /data/mariadb/conf/my.cnf

[mysqld]
server-id=11
log-bin
auto_increment_offset=1
auto_increment_increment=2

5.2# 查看并记录二进制日志信息,将在数据库主节点10.10.012再次配置需要用到73e4df274138-bin.000001和335这两个值
docker exec -it mariadb bash
mysql -uroot -p123456

MariaDB [(none)]> show master logs;
+-------------------------+-----------+
| Log_name                | File_size |
+-------------------------+-----------+
| 73e4df274138-bin.000001 |       335 |
+-------------------------+-----------+
1 row in set (0.000 sec)

6.配置主节点10.10.0.12

6.1# 在[mysqld]段内增加四行,定义节点ID、开启二进制、开始点和增长幅度
vim /data/mariadb/conf/my.cnf

[mysqld]
server-id=12
log-bin
auto_increment_offset=2
auto_increment_increment=2

6.2# 配置数据库复制

stop slave; CHANGE MASTER TO 
MASTER_HOST='10.10.0.11',
MASTER_USER='repluser', 
MASTER_PASSWORD='zhuzhu',
MASTER_PORT=3306,
MASTER_LOG_FILE='73e4df274138-bin.000001', 
MASTER_LOG_POS=1629;start slave; 

6.3# 查看并记录二进制日志信息,将在数据库主节点10.10.0.11再次配置需要用到179d604d3e6f-bin.000001和538这两个值

MariaDB [(none)]> show master logs;       
+-------------------------+-----------+
| Log_name                | File_size |
+-------------------------+-----------+
| 179d604d3e6f-bin.000001 |       538 |
+-------------------------+-----------+
1 row in set (0.000 sec)

6.4# 查看IP11到IP12复制状态

MariaDB [(none)]> show slave status\G

7.再配置数据库主节点10.10.0.11复制。

stop slave;CHANGE MASTER TO 
MASTER_HOST='10.10.0.12',
MASTER_USER='repluser', 
MASTER_PASSWORD='zhuzhu',
MASTER_PORT=3306,
MASTER_LOG_FILE='179d604d3e6f-bin.000001', 
MASTER_LOG_POS=1382;start slave;

7.1# 查看IP12到IP11复制状态

show slave status\G 

至此,两台都为主MariaDB数据库的复制(主主复制)配置全部完成

8.验证数据库主主复制

在数据库主节点1创建一个test1数据库

create database test1;
创建表
use database test1;
create table t1(id int auto_increment primary key,name char(10));
插入一对键值
insert t1 (name) values(‘user1’);

随即切换到数据库主节点2上,也在shonedb1数据库的t1表内插入一对键值

use database test1;
insert t1 (name) values(‘user2’);

再通过SSH终端软件,同时向数据库主节点1和数据库主节点2,同时发送了下面命令

insert t1 (name) values(‘userX’);

查看结果
select * from t1;

9.创建keepalived实现高可用

yum install keepalived -y
9.1使用非抢占模式,编辑节点一的keepalived.conf

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {notification_email {}notification_email_from Alexandre.Cassen@firewall.locrouter_id LVS_DEVEL# vrrp_strict}
vrrp_script chk_mariadb {
script "/root/check_mariadb.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行       
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}vrrp_instance VI_1 {state BACKUP #两台都需要设置为backupinterface eth0virtual_router_id 51priority 99nopreempt #非抢占模式advert_int 1authentication {auth_type PASSauth_pass 8888}virtual_ipaddress {10.10.0.150/24}track_script {chk_mariadb #调用检测脚本
}
}

9.2使用非抢占模式,编辑节点二的keepalived.conf

vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {}notification_email_from Alexandre.Cassen@firewall.locrouter_id LVS_DEVEL
}
vrrp_script chk_mariadb {
script "/root/check_mariadb.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}vrrp_instance VI_1 {state BACKUP #两台都需要设置为backupinterface eth0virtual_router_id 51priority 100nopreempt #非抢占模式advert_int 1authentication {auth_type PASSauth_pass 8888}virtual_ipaddress {10.10.0.150/24}track_script {chk_mariadb #调用检测脚本
}
}

9.3使用监测mariadb脚本
vim /root/check_mariadb.sh

#!/bin/bash
A=`ps -C mariadbd --no-header |wc -l`
if [ $A -eq 0 ]
then
echo 'mariadb server is died'
systemctl stop keepalived
fi

chmod +x /root/check_mariadb.sh

10.测试
ip addr 查看虚拟ip在哪台服务器上
结束mariadb,看脚本是否生效,ip是否飘逸
docker stop mariadb

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

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

相关文章

常见排序算法之冒泡排序

冒泡排序,英文名Bubble Sort,是一种相对基础的 交换排序方法。这种排序算法的名字来源于它操作的过程,可以类比为数列中的每一个元素都可以像小气泡一样,根据自身的大小一点一点向数组的一侧移动。具体到冒泡排序的工作原理&#…

SSL证书:网络通信安全的基石

随着互联网的深入发展和电子商务的普及,网络安全问题变得越来越重要。SSL证书作为保障网络通信安全的重要组成部分,扮演着至关重要的角色。本文将深入剖析SSL证书的底层原理、作用、应用场景以及优缺点,帮助您更好地理解网络通信安全。 一、…

开启生成式AI的探索之旅,亚马逊云科技分享生成式AI热门案例

现今,生成式AI为企业争先讨论的热门话题,上云出海为企业转型的重中之重。无论你是行业新贵还是中小企业,探索新的模式、创新迭代业务都是不容忽视的重点,下面就来介绍几个亚马逊云科技帮助企业创新的案例。 开启生成式AI的探索之旅…

02333软件工程串讲

完整笔记在语雀 https://www.yuque.com/huangzhanqi/nrt1l4/zoa0g0osnrmog0xdhttps://www.yuque.com/huangzhanqi/nrt1l4/zoa0g0osnrmog0xd 《软件工程》串讲讲义 应考指导 一、课程介绍 1、课程性质 《软件工程》是全国高等教育自学考试计算机及应用(独立本科…

曼哈顿距离

曼哈顿距离 以7*7为例 在d<n/2时&#xff1a;打印的图案为菱形 例题&#xff1a; 输入奇数n&#xff0c;显示n行星塔。若输入5&#xff0c;则显示 #include<stdio.h> #include<math.h> int main() {int n, i, j, x, y;scanf("%d", &n);x y n …

naive-ui的n-data-table标签奇特bug记录

具体参考之前的博文&#xff1a;vueday02——使用naive-ui做一个ACM看榜-CSDN博客 具体代码在这里面 原因&#xff1a;在本地运行的时候&#xff0c;datatable里面使用列表渲染成字符串前端设置样式进行转换&#xff0c;但是在正式部署的时候&#xff0c;这个组件没有将其自动…

8.JavaScript-注释

题记 javascript注释 单行注释 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>实例</title> </head> <body><h1 id"myH1"></h1> <p id"myP"></p>…

Kubernetes速成课程:掌握容器编排的精髓

微服务演进方向 • 面向分布式设计(Distribution):容器、微服务、API 驱动的开发; • 面向配置设计(Configuration):⼀个镜像&#xff0c;多个环境配置; • 面向韧性设计(Resistancy):故障容忍和自愈; • 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应; •…

Linux开机默认进入命令行或图形化模式

开机默认进入命令行 sudo systemctl set - default multi-user.target 执行上面命令后重新启动 reboot开机默认进入图形化界面 sudo systemctl set - default graphical.target 执行上面命令后重新启动 reboot或者 先进入root之后 su 在执行 systemctl set - default …

js回调函数

JavaScript回调函数是一种常见的编程概念&#xff0c;用于处理异步操作和事件处理。回调函数是一种函数&#xff0c;它作为参数传递给另一个函数&#xff0c;并且在某个特定的事件发生或异步操作完成时被调用。这允许您在需要时执行代码&#xff0c;而不必等待长时间运行的操作…

rust学习——操作字符串、字符串转义、操作UTF8-字符串 (操作中文字符串)

文章目录 操作字符串追加 (Push)插入 (Insert)替换 (Replace)1、replace2、replacen3、replace_range 删除 (Delete)1、 pop —— 删除并返回字符串的最后一个字符2、 remove —— 删除并返回字符串中指定位置的字符3、truncate —— 删除字符串中从指定位置开始到结尾的全部字…

【尘缘赠书活动:01期】Python数据挖掘——入门进阶与实用案例分析

引言 本案例将根据已收集到的电力数据&#xff0c;深度挖掘各电力设备的电流、电压和功率等情况&#xff0c;分析各电力设备的实际用电量&#xff0c;进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考**《Python数据挖掘&#xff1a;入门进阶与实用案例…

CSS设置超出范围滚动条和滚动条样式

CSS设置超出范围滚动条和滚动条样式 效果展示 当块级内容区域超出块级元素范围的时候&#xff0c;就会以滚动条的形式展示&#xff0c;你可以滚动里面的内容&#xff0c;里面的内容不会超出块级区域范围。 未设置超出隐藏&#xff0c;显示滚动条 超出隐藏&#xff0c;显示滚动…

财报解读:双轮驱动下,香飘飘究竟能打开多大的获利空间?

2023年以来&#xff0c;食品饮料行业稳中求进&#xff0c;消费市场情绪逐步上扬。 数据显示&#xff0c;2023年上半年&#xff0c;食品饮料行业实现营收5338.86亿元&#xff0c;同比增长9.65%&#xff1b;归母净利润1125.03亿元&#xff0c;同比增长14.93%&#xff0c;营收和归…

开源博客项目Blog .NET Core源码学习(4:生成验证码)

开源博客项目Blog中的后台管理登录界面中支持输入验证码&#xff08;如下图所示&#xff09;&#xff0c;本文学习并记录项目中验证码的生成及调用方式。   博客项目中调用VerifyCode类生成验证码&#xff0c;该类位于App.Framwork项目中&#xff0c;命名空间为App.Framwork…

python实验13_科学计算

实验13&#xff1a;科学计算 文章目录 实验13&#xff1a;科学计算1.实验目标及要求2. 实验主要内容3. 心得体会 1.实验目标及要求 &#xff08;1&#xff09;掌握numpy库的常用方法。 &#xff08;2&#xff09;掌握使用matplotlib库的常用方法。 2. 实验主要内容 ① 利用…

云原生之深入解析如何合并多个kubeconfig文件

项目通常有多个 k8s 集群环境&#xff0c;dev、testing、staging、prod&#xff0c;kubetcl 在多个环境中切换&#xff0c;操作集群 Pod 等资源对象&#xff0c;前提条件是将这三个环境的配置信息都写到本地机的 $HOME/.kube/config 文件中。默认情况下kubectl会查找$HOME/.kub…

解析外贸开发信的结构?营销邮件书写技巧?

做外贸的开发信结构是怎样的&#xff1f;写外贸邮件的注意事项&#xff1f; 外贸开发信是国际贸易中至关重要的一环&#xff0c;它不仅是与潜在客户建立联系的第一步&#xff0c;也是一种有效的市场推广工具。蜂邮EDM将深入解析外贸开发信的结构&#xff0c;帮助您更好地理解如…

vue2技能树(9)-prop属性,自定义事件

目录 Vue 2 中的 Prop 详解基本用法项目示例 动态Props项目示例 Prop 验证项目示例 单向数据流项目示例 Vue 2 自定义事件详解自定义事件的基本使用项目示例 传递数据项目示例 命名自定义事件项目示例 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️…

Java如何实现单点登录(SSO):基于JWT和Redis的实例详解

前言 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种身份验证和访问控制机制&#xff0c;允许用户使用一组凭证&#xff08;如登录名和密码&#xff09;登录到多个应用程序中&#xff0c;而无需为每个应用程序单独进行身份验证。用户只需要登录一次…