msql主从配置

一主多从

在这里插入图片描述

创建多个实例

3307 3308 3309 3310

mkdir {3307..3310} # 这一步可以省略,初始化的时候,mysql会自动创建--datadir路径
  • 以下配置完成后,使用windows客户端去远程连接实例,检验实例是否都已创建成功
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/3307 --user=mysql

###########################
vim /usr/local/mysql/3307/my.cnf
[client]
port = 3307
socket = /usr/local/mysql/3307/mysql.sock
default-character-set=utf8

[mysqld]
port = 3307
socket = /usr/local/mysql/3307/mysql.sock
datadir=/usr/local/mysql/3307/
log-error=/usr/local/mysql/3307/error.log
pid-file=/usr/local/mysql/3307/mysql.pid

character-set-server=utf8
lower_case_table_names=1
autocommit=1
#########################

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/3307/my.cnf &

/usr/local/mysql/bin/mysql  -uroot -p -P3307 -h127.0.0.1  # 不需要输入密码,直接回车进入命令行
alter user root@localhost identified by 'root';
grant all privileges on *.* to root@'%' identified by 'root';
quit
/usr/local/mysql/bin/mysql  -uroot -p -P3307 -h127.0.0.1  # 之后再登陆就需要输入密码了,这里就需要输入密码了

flush privileges;

停止实例

mysqladmin  -uroot -pr -P3307 -h127.0.0.1 shutdown

# 如果已经连接mysql,就直接执行如下命令停止实例
mysql> shutdown;

主从配置

# 将3307作为主,其余实例作为从 ,配置在my.cnf配置文件中
log-bin=mysql-bin # 只在主里面配置
server-id=3307 # 主从都要配置

启动实例

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/3307/my.cnf &

配置主从关系

在主实例中配置
mysql -uroot -proot -P3307 -h127.0.0.1
show master status;--查看偏移量
grant replication slave on *.* to 'copy'@'%' identified by 'copy';--新增用户用于从节点进行数据同步
show master status;--偏移量发生了改变
reset master; --重置偏移量
在从实例中配置
mysql -uroot -proot -P3308 -h127.0.0.1
stop slave; --停止复制,相当于终止从服务器的IO和SQL线程
reset slave;

change master to master_host='192.168.78.120',master_port=3307,
master_user='copy',master_password='copy',
master_log_file='mysql-bin.000001',
master_log_pos=154;

show slave status \G  -- \G是格式化结果的格式
start slave;  -- 启动从线程
show slave status \G

----如果出现复制问题,从的sql或IO进程会停止,需要将问题排除后,重启slave即可恢复
stop slave;
start slave;
show slve status \G

全新MySQL集群架构实战课程 解决MySQL工作中的难题_哔哩哔哩_bilibili

双主双从

在这里插入图片描述

停止所有实例

mysqladmin -uroot -proot -P3307 -h127.0.0.1 shutdown

将3309也开启二进制文件

echo "bin-log=mysql-bin" >> 3309/my.cnf

在3307上配置

auto_increment_increment=2 # 设置自动增长步长
auto_increment_offset=1 # 设置自动增长起始值,为了避免多个主库之间发生冲突,建议错开设置(1,3,5...和2,4,6...)
log-slave-updates # 从其他库同步过来的数据要记录到二进制文件
sync_binlog=1 # 设置每几次事务提交,将binlog缓存刷进日志文件中,这里提交1次就要同步数据(对性能有影响,但主从一致性高,根据实际情况进行取舍)

MySQL主从复制讲义.docx - 墨天轮文档 (modb.pro)

在3309上配置

auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1

启动所有实例

先启动所有主,后启动所有从

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/3307/my.cnf &

在两台主上创建复制数据的账号

# 3307已经创建过了,这里只需要在3309上创建就行
mysql -uroot -proot -P3309 -h127.0.0.1
grant replication slave on *.* to 'copy'@'%' identified by 'copy';

# 在两台主库上停止复制,并重置服务器到初始状态
show master status;
reset master;

在3309 和 3307上停止并重置slave

之前3307没有做为从库过,可以省略此步

mysql -uroot -proot -P3309 -h127.0.0.1
show slave status \G
stop slave ;
reset slave;

从库配置

此时所有的库都是从库,两台主库同时也是从库

# 3307 和 3310 上执行,它们的主库是 3309
change master to master_host='192.168.78.120',master_port=3309,
master_user='copy',master_password='copy',
master_log_file='mysql-bin.000001',
master_log_pos=154;

# 3309 和 3308 上执行,他们的主库是 3307
change master to master_host='192.168.78.120',master_port=3307,
master_user='copy',master_password='copy',
master_log_file='mysql-bin.000001',
master_log_pos=154;

# 在所有从库上启动IO和SQL线程
start slave;
show slave status \G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值