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博客

相关推荐
HIT_Weston19 分钟前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
cccccc语言我来了23 分钟前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
8K超高清1 小时前
高校巡展:中国传媒大学+河北传媒学院
大数据·运维·网络·人工智能·传媒
ben9518chen1 小时前
嵌入式Linux C语言程序设计九
linux·c语言
wuk9981 小时前
CentOS7环境搭建L2TP服务器
运维·服务器
恒创科技HK1 小时前
香港1核2G云服务器当网站服务器够用不?
运维·服务器
IT 小阿姨(数据库)2 小时前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
颜大哦2 小时前
linux安装mysql
linux·运维·mysql·adb
学习3人组2 小时前
Node.js 网站服务器开发
运维·服务器·node.js
来知晓3 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器