mysql一主一从,一主多从环境搭建及主从切换

本文详细介绍了如何在Linux上安装和配置MySQL8.0的主从环境,包括环境准备、用户权限设置、my.cnf文件修改、主从配置、切换步骤以及一主多从的扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql一主一从,一主多从环境搭建及主从切换

1、安装mysql环境

1.1、到指定目录下下载安装包,下载mysql8(版本自己去官网选择)

cd /usr/local/src

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

1.2、解压mysql8, 通过xz命令解压出tar包

xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar

1.3、将/usr/local/src下的mysql-8.0.20-linux-glibc2.12-x86_64文件夹内容移动到/usr/local/mysql下

mkdir /usr/local/mysql
mv /usr/local/src/mysql-8.0.20-linux-glibc2.12-x86_64/* /usr/local/mysql
cd /usr/local/mysql

1.4、创建用户组及用户和密码,授权用户

groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql

1.5、编辑my.cnf文件

vim /etc/my.cnf

按 i 进入修改模式 然后将下面的文本复制进去(原本的注释掉)

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
user = mysql
max_connections=200
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
lower_case_table_names=1
group_concat_max_len=102400
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8

1.6、初始化基础信息,最后一行后面会有个随机的初始密码保存,登录使用

cd bin
./mysqld --initialize

在这里插入图片描述

1.7、添加mysqld服务到系统,授权以及添加服务

cd ..
cp -a ./support-files/mysql.server /etc/init.d/mysql

chmod +x /etc/init.d/mysql
chkconfig --add mysql

启动mysql

service mysql start

service mysql status

1.8、将mysql添加到命令服务

ln -s /usr/local/mysql/bin/mysql /usr/bin

1.9、登录mysql,修改密码

mysql -uroot -p

输入1.6刚刚初始化时生成的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'info1234';
flush privileges;

1.10、更改root连接权限,开放端口

use mysql;
update user set host='%' where user = 'root';
flush privileges;
#退出
exit;
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

至此可以通过连接工具登录root账户进行远程连接

2、配置mysql主从

IP Address角色必选服务部署
192.30.80.153PrimaryMysql8.0.20
192.30.80.154Standby 1Mysql8.0.20

2.1、检查数据库远程访问权限

在192.30.80.153主机上测试连接192.30.80.154 ,

mysql -uroot -h192.30.80.154   -P3306 -p

2.2、主节点配置

修改vim /etc/my.cnf,配置在[mysqld]中

#replication  config
server-id = 1
log-bin = mysql-bin #开启二进制日志 
gtid-mode = on #开启gtid模式
enforce-gtid-consistency = on #强制gtid一致性,开启后对特定的create table不被支持
binlog-format = row  #默认为mixed混合模式,更改成row复制,为了数据一致性

重启mysql服务

service mysql restart

2.3、从节点配置

修改vim /etc/my.cnf,配置在[mysqld]中

server-id = 2    
log-bin = mysql-bin 
binlog-format = row 
gtid-mode = on 
enforce-gtid-consistency = on

重启mysql服务

service mysql restart

2.4、主库创建同步用户

# 创建一个用户 并指定可以从本机外部进行访问
CREATE USER 'master'@'192.30.80.154' IDENTIFIED BY 'info1234';
# 设置slave远程从机账户拥有一个可以复制的权限
grant replication slave,replication client on *.* to 'master'@'192.30.80.154';

2.5、查看日志和宿主机master的状态

# 查看log_bin日志是否属于开启状态
show variables like 'log_bin';
# 查看当前操作的宿主机是否为master状态
show master status;

2.6、从库配置主从关系

set global read_only=ON;
set global super_read_only=ON;
# 首先要关掉slave
stop slave;
# master_host为master的ip   
# master_password 为授权时设置的密码
CHANGE MASTER TO 
 master_host = '192.30.80.153',
 master_port = 3306,
 master_user = 'master',
 master_password = 'info1234',
 master_auto_position=1;
# 执行完后开启slave
start slave;

2.7、查看同步状态

show slave status \G

Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0,主从配置完成

3、配置mysql主从切换

3.1、主库备库设置只读

set global read_only=ON;
set global super_read_only=ON;

3.2、查看备库复制进程状态

show slave status\G

Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0

3.3、比对主备两边的GTID是否一致

select @@global.gtid_executed;

在这里插入图片描述
在这里插入图片描述

不一致可以通过GTID_SUBSET函数进行比对

SELECT GTID_SUBSET(master_gtid_executed, slave_gtid_executed);

在这里插入图片描述

结果为1,代表主库GTID已经在从库完成执行过,两边是一致的

3.4、从库停掉复制进程并清空主从信息,并取消只读,创建同步用户

stop slave;
reset slave all;
set global read_only=OFF;
set global super_read_only=OFF;
# 创建一个从机用户 并指定可以从本机外部进行访问
CREATE USER 'slave1'@'192.30.80.153' IDENTIFIED BY 'info1234';
# 设置slave远程从机账户拥有一个可以复制的权限
grant replication slave,replication client on *.* to 'slave1'@'192.30.80.153';

3.5、在原主库上配置主从关系

# 首先要关掉slave
stop slave;
# master_host为'slave1'的ip   
# master_password 为授权时设置的密码
CHANGE MASTER TO 
 master_host = '192.30.80.154',
 master_port = 3306,
 master_user = 'slave1',
 master_password = 'info1234',
 master_auto_position=1;
# 执行完后开启slave
start slave;

3.6、查看同步状态

show slave status \G

Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0,主从切换完成

4、一主多从配置和切换

与一主一从顺序不变,在以下几处配置中增加一个从节点

4.1、从节点配置

修改vim /etc/my.cnf,配置在[mysqld]中,从节点2上

server-id = 3
log-bin = mysql-bin
binlog-format = row
gtid-mode = on
enforce-gtid-consistency = on

4.2、主库创建同步用户时,增加一个ip

CREATE USER 'master'@'192.30.80.155' IDENTIFIED BY 'info1234';
grant replication slave,replication client on *.* to 'master'@'192.30.80.155';

4.3、从库配置主从关系,从库2上

set global read_only=ON;
set global super_read_only=ON;
# 首先要关掉slave
stop slave;
# master_host为master的ip   
# master_password 为授权时设置的密码
CHANGE MASTER TO 
 master_host = '192.30.80.153',
 master_port = 3306,
 master_user = 'master',
 master_password = 'info1234',
 master_auto_position=1;
# 执行完后开启slave
start slave;

show slave status \G

至此一主多从配置完成

一主多从切换,增加创建用户,然后停止slave后重新建立主从关系,再次启动即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值