MySQL8主主搭建

2023-12-24 08:01
文章标签 搭建 mysql8 主主

本文主要是介绍MySQL8主主搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

-- mysql8 主主搭建
mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz

主1 : 192.168.2.160 
主2 : 192.168.2.161

--解压mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz为mysql8

-- 初始化mysql8 (略)

-- 参数192.168.2.160

[root@19cdg01 mysql]# ps -ef| grep mysql
root      1552  1433  0 01:00 pts/0    00:00:00 su - mysql
mysql     1554  1552  0 01:00 pts/0    00:00:00 -bash
mysql     1602  1554  0 01:00 pts/0    00:00:00 /bin/sh ./mysqld_safe --defaults-file=/mysql/mysql8/my.cnf --user=mysql
mysql     1877  1602  0 01:00 pts/0    00:00:19 /mysql/mysql8/bin/mysqld --defaults-file=/mysql/mysql8/my.cnf --basedir=/mysql/mysql8 --datadir=/mysql/mysql8/data --plugin-dir=/mysql/mysql8/lib/plugin --log-error=/mysql/mysql8/data/error.log --pid-file=19cdg01.pid --socket=/mysql/mysql8/mysql.sock --port=3306
mysql     2123  1554  0 01:04 pts/0    00:00:00 ./mysql -uroot -h127.0.0.1 -p
root      4317  4118  0 01:47 pts/2    00:00:00 grep --color=auto mysql
[root@19cdg01 mysql]# cat /mysql/mysql8/my.cnf
[mysqld]
server_id=3306
admin_port=33062
mysqlx_port=33060
socket=/mysql/mysql8/mysql.sock
mysqlx_socket=/mysql/mysql8/mysqlx.sock
log-error=/mysql/mysql8/data/error.log
port=3306
basedir=/mysql/mysql8
datadir=/mysql/mysql8/data
log_bin=binlog
log_bin_index=/mysql/mysql8/data/binlog.index
gtid_mode=on
enforce_gtid_consistency=true
auto-increment-increment = 2
auto-increment-offset = 1binlog-ignore-db = mysql,information_schema,performance_schema,sys[client]
port=3306
socket=/mysql/mysql/mysql88888888.sock
[mysql]
prompt="\u@db \R:\m:\s [\d]> "
[root@19cdg01 mysql]#

-- 参数192.168.2.161

[root@19cdg02 ~]# ps -ef| grep mysql
root      1583  1438  0 01:00 pts/0    00:00:00 /bin/sh ./mysqld_safe --defaults-file=/mysql/mysql8/my.cnf --user=mysql
mysql     1855  1583  0 01:00 pts/0    00:00:20 /mysql/mysql8/bin/mysqld --defaults-file=/mysql/mysql8/my.cnf --basedir=/mysql/mysql8 --datadir=/mysql/mysql8/data --plugin-dir=/mysql/mysql8/lib/plugin --user=mysql --log-error=/mysql/mysql8/data/error.log --pid-file=19cdg02.pid --socket=/mysql/mysql8/mysql.sock --port=3306
root      2105  1438  0 01:04 pts/0    00:00:00 ./mysql -uroot -h127.0.0.1 -p
root      4303  4277  0 01:48 pts/2    00:00:00 grep --color=auto mysql
[root@19cdg02 ~]# cat /mysql/mysql8/my.cnf
[mysqld]
server_id=33061
admin_port=33062
mysqlx_port=33060
socket=/mysql/mysql8/mysql.sock
mysqlx_socket=/mysql/mysql8/mysqlx.sock
log-error=/mysql/mysql8/data/error.log
port=3306
basedir=/mysql/mysql8
datadir=/mysql/mysql8/data
log_bin=binlog
log_bin_index=/mysql/mysql8/data/binlog.index
gtid_mode=on
enforce_gtid_consistency=true
auto-increment-increment = 2
auto-increment-offset = 2binlog-ignore-db = mysql,information_schema,performance_schema,sys[client]
port=3306
socket=/mysql/mysql8/mysql.sock
[mysql]
prompt="\u@db \R:\m:\s [\d]> "
[root@19cdg02 ~]#

-- 开启半同步 (8.0和5.7的半同步插件,不一样。安装5.7的插件也可以,log中有提示,即将被淘汰)

--INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
--SET GLOBAL rpl_semi_sync_master_enabled=ON;
install plugin rpl_semi_sync_source soname 'semisync_source.so';
set global rpl_semi_sync_source_enabled=1;

-- 启动数据库

./mysqld_safe --defaults-file=/mysql/mysql8/my.cnf --user=mysql
./mysqld_safe --defaults-file=/mysql/mysql8/my.cnf --user=mysql

-- 连接mysql

./mysql -uroot -h127.0.0.1 -p
./mysql -uroot -h127.0.0.1 -p

-- 创建复制账号rep1

CREATE USER 'rep1'@'192.168.2.%' IDENTIFIED WITH 'mysql_native_password' BY 'mysql';
grant replication slave on *.* to 'rep1'@'192.168.2.%';
flush privileges;

-- 设置复制.没有指定具体的log和position,使用参数MASTER_AUTO_POSITION = 1

CHANGE MASTER TO master_host='192.168.2.160', master_port=3306,master_user='rep1',master_password='mysql',MASTER_AUTO_POSITION = 1;
CHANGE MASTER TO master_host='192.168.2.161', master_port=3306,master_user='rep1',master_password='mysql',MASTER_AUTO_POSITION = 1;
start slave ;
show slave status ;

## 出现的问题及解决方法
1 因为刚开始没有设置binlog-ignore-db,分别在两个库上都建立和删除过账号,导致复制冲突。
1 节点1 上,log  drop user 'rep1'@'192.168.2.%'失败,执行事务'94c47d50-a0a1-11ee-86c9-000c299429f9:5'失败

2023-12-23T06:00:49.431587Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /mysql/mysql8/mysqlx.sock
2023-12-23T06:00:49.456284Z 10 [ERROR] [MY-010584] [Repl] Replica SQL for channel '': Worker 1 failed executing transaction '94c47d50-a0a1-11ee-86c9-000c299429f9:5' at source log binlog.000004, end_log_pos 392; Error 'Operation DROP USER failed for 'rep1'@'192.168.2.%'' on query. Default database: ''. Query: 'drop user 'rep1'@'192.168.2.%'', Error_code: MY-001396
2023-12-23T06:00:49.458896Z 6 [ERROR] [MY-010586] [Repl] Error running query, replica SQL thread aborted. Fix the problem, and restart the replica SQL thread with "START REPLICA". We stopped at log 'binlog.000004' position 197
2023-12-23T06:01:00.804824Z 14 [Warning] [MY-010055] [Server] IP address '192.168.2.161' could not be resolved: Name or service not known
2023-12-23T06:01:00.806701Z 14 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
2023-12-23T06:01:49.442498Z 8 [System] [MY-014002] [Repl] Replica receiver thread for channel '': connected to source 'rep1@192.168.2.161:3306' with server_uuid=94c47d50-a0a1-11ee-86c9-000c299429f9, server_id=33061. Starting GTID-based replication.

2 节点2上,log  create user CREATE USER 'rep1'@'%' IDENTIFIED WITH 'mysql_native_password'  失败 ,执行事务'9fa8b4aa-a0a0-11ee-86d4-000c29a929d8:10'失败

023-12-23T06:01:00.641166Z 8 [System] [MY-014002] [Repl] Replica receiver thread for channel '': connected to source 'rep1@192.168.2.160:3306' with server_uuid=9fa8b4aa-a0a0-11ee-86d4-000c29a929d8, server_id=3306. Starting GTID-based replication.
2023-12-23T06:01:00.662057Z 9 [ERROR] [MY-010584] [Repl] Replica SQL for channel '': Worker 1 failed executing transaction '9fa8b4aa-a0a0-11ee-86d4-000c29a929d8:10' at source log binlog.000003, end_log_pos 1580; Error 'Operation CREATE USER failed for 'rep1'@'%'' on query. Default database: ''. Query: 'CREATE USER 'rep1'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA'', Error_code: MY-001396
2023-12-23T06:01:00.664259Z 6 [ERROR] [MY-010586] [Repl] Error running query, replica SQL thread aborted. Fix the problem, and restart the replica SQL thread with "START REPLICA". We stopped at log 'binlog.000003' position 197
2023-12-23T06:01:49.333516Z 14 [Warning] [MY-010055] [Server] IP address '192.168.2.160' could not be resolved: Name or service not known
2023-12-23T06:01:49.334585Z 14 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

1 节点1上跳过事务

stop slave;
select @@server_uuid;                                            <<< 查看当前服务器的uuid,可以不执行
set session gtid_next='94c47d50-a0a1-11ee-86c9-000c299429f9:5';  <<< 这个事务失败,设置下一个执行的事务为这个事务
begin;commit;                                                    <<< 执行一个空事务,欺骗库,执行过了上面的事务
set session gtid_next='AUTOMATIC';                               <<< 自动执行下一个事务 

2 节点2上跳过事务

stop slave;
select @@server_uuid;
set session gtid_next='9fa8b4aa-a0a0-11ee-86d4-000c29a929d8:10';
begin;commit;
set session gtid_next='AUTOMATIC';

另一种解决方法 (未测试)
在会话层面关闭sql log ,set session sql_log_bin = 0;
然后执行缺失的sql 。(sql 可以通过查看binlog的日志获取)

END

这篇关于MySQL8主主搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531102

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv