linux系统mysql8单机多实例+主从复制部署

一、解压mysql压缩包

参考我的另一篇博文,tag.gz解压完并且配置完环境变量即可,暂时不要初始化

linux单机部署mysql(离线环境解压即可)-CSDN博客

二、修改配置文件

可能因为版本不同,我的这个配置可能不是通用的,我安装的是mysql8.0.34版本。如果我的配置不适用于其他版本,请输入命令mysqld_multi --example, 参考官方的例子。

配置文件目录为:/etc/my.cnf (可能不能更改,目前发现改了会报错)

配置内容如下:

mysqld_multi

mysqld = /root/soft/mysql8/bin/mysqld_safe

mysqladmin = /root/soft/mysql8/bin/mysqladmin

user = root

#password =

mysqld2

socket = /tmp/mysql.sock2

port = 3307

datadir = /root/soft/mysql8/data2

pid-file = /root/soft/mysql8/data2/mysql.pid2

user = root

#一个实例占两个端口号。默认是3306和33060

mysqlx_port=33070

mysqlx_socket=/tmp/mysqlx.sock2

########## 主从复制主库配置 start ##########

server-id=1

#设置需要复制的数据库

binlog-do-db=db_master_slave

#设置不要复制的数据库

binlog-ignore-db=mysql,performance_schema,information_schema,sys

#0表示读写,1表示只读。super-read-only是针对超级管理员用户

super-read-only=0

read-only=0

#设置binlog格式

binlog_format=ROW

########## 主从复制主库配置 end ##########

mysqld3

socket = /tmp/mysql.sock3

port = 3308

datadir = /root/soft/mysql8/data3

pid-file = /root/soft/mysql8/data3/mysql.pid3

user = root

#一个实例占两个端口号。默认是3306和33060

mysqlx_port=33080

mysqlx_socket=/tmp/mysqlx.sock3

########## 主从复制从库配置 start ##########

server-id=2

#0表示读写,1表示只读。super-read-only是针对超级管理员用户

super-read-only=1

read-only=1

#开启中继日志,从主服务器上同步日志文件到本地

relay-log=relay-log-bin

#定义中继日志文件的位置和名称

relay-log-index=slave-relay-bin.index

########## 主从复制从库配置 end ##########

三、数据库初始化

由于我这边部署的是两个实例,一主一从,3307和3308

mysql的解压目录 /root/soft/mysql8

1.准备目录

分别准备3307和3308的data目录:data2和data3

cd /root/soft/mysql8

rm -r data2 data3

mkdir data2 data3

2.初始化两个实例

mysqld --defaults-file=/etc/my.cnf --basedir=/root/soft/mysql8 --datadir=/root/soft/mysql8/data2 --initialize-insecure

mysqld --defaults-file=/etc/my.cnf --basedir=/root/soft/mysql8 --datadir=/root/soft/mysql8/data3 --initialize-insecure

3.目录文件赋权

chmod -R 750 /root/soft/mysql8

四、启动多实例

1.验证实例是否配置成功

mysqld_multi report

如果显示没有mysql实例,那么请重新检查配置文件内容,和目录创建赋权。

2.启动

mysqld_multi start

3.查看是否成功

mysqld_multi report

如果成功,会显示 is running的状态。

如果需要查看占用端口号,可输入命令如下:

ss -tunlp |grep 33

#或者

netstat -tunlp |grep 33

如果启动失败,一般会出现"xxx pid ended"的错误信息,一般是配置和目录的问题。

或者也可以可查看data目录下默认的日志文件hostname.err,这个hostname是动态值,就是你主机的hostname。

假如hostname是"10-23-14-11",那么命令如下

tail -111f data2/10-23-14-11.err

tail -111f data3/10-23-14-11.err

五、主从复制

1.主节点操作

连接主节点,命令如下:

mysql -uroot -p -P3307 -S /tmp/mysql.sock2

进入mysql命令窗口后,输入命令如下:

--1.创建同步账户

create user 'slave1'@'%' identified by '1234';

grant replication slave on *.* to 'slave1'@'%';

alter user 'slave1'@'%' identified with mysql_native_password by '1234';

flush privileges;

--2.查看主节点的binlog文件的名称和偏移量

show master status;

2.从节点操作

连接从节点,命令如下:

mysql -uroot -p -P3308 -S /tmp/mysql.sock3
--1.配置需要复制的主节点信息,以及binlog文件的名称和偏移量(即上面主节点查看的内容)

change master to master_host='127.0.0.1',master_port=3307,master_user='slave1',master_password='1234',master_log_file='binlog.000000',master_log_pos=0;

--2.在从节点开启slave同步,查看同步状态

start slave;

show slave status\G;

如果 slave_io_running 和 slave_sql_running都为yes的状态,说明主从同步成功;如果是no或connecting都表示不成功,配置错误或连接不上。

3.测试同步

进入主节点mysql窗口

--1.主节点创建数据库,并且插入数据

--drop database db_master_slave;

--show master status;

create database db_master_slave;

use db_master_slave;

create table test(id bigint primary key);

insert into test values(1);

select * from test;

进入从节点mysql窗口

--2.从节点查看数据库和插入的数据

use db_master_slave;

select * from test;

如果同步错误,具体问题具体分析,这里不展开。如果是刚开始同步,可尝试把同步的database或表删除,然后重新把这一大步再做一遍

4.停止实例

使用mysqld_multi stop或mysqladmin命令。mysqld_multi stop有时候会不成功,具体问题具体分析

mysqld_multi stop

或

mysqladmin -uroot -p -P3307 -S /tmp/mysql.sock2 shutdown

mysqladmin -uroot -p -P3308 -S /tmp/mysql.sock3 shutdown

如果对操作步骤依然不清晰,可参考这篇博文 ,图文较详细实现↝Mysql数据库主从复制搭建与同步_mysql主主同步复制-CSDN博客

相关推荐
Lsetea7 小时前
curl指定CA目录仍报证书不受信任:--capath与OpenSSL rehash排查
运维·https·ssl·openssl·curl
夜听莺儿鸣7 小时前
502-002_Linux驱动开发模块化编程
linux·驱动开发·模块化编程
wuminyu8 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
优化Henry8 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
代码方舟8 小时前
数据科学风控实战:基于天远全能消金报告构建自动化信用评估网关
运维·人工智能·自动化
科力锐品牌君9 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
KaiwuDB9 小时前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
zhangrelay9 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
福建佰胜张工9 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
流浪00110 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库