MySQL主从同步配置

mysql主从配置的流程大体如下:
1)master会将变动记录到二进制日志里面;
2)master有一个I/O线程将二进制日志发送到slave;
3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;
4)slave有一个SQL线程,按照relay日志处理slave的数据;

按照原理,我们开启mysql主从复制,大体需要做以下操作:
1)开启master的二进制日志
2)开启slave的二进制日志
3)将slave指向master
4)开始复制

我这里的安装环境是VMware上一台虚拟机有mysql然后克隆出来第二台,但最好不要克隆,分别建两台虚拟机。
保证两台虚拟机上的MySQL版本一致。

关掉防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

配置主服务器

1.打开mysql的配置文件在 /etc/my.cnf
添加下面模块
[mysqld]
idserver_id = 1 #设置服务器
log-bin=mysql-bin #指定日志
本次配置用以上两个就可以
————————————————————————————
以下根据实际情况添加
#位置、语句 和自动选择(mixed)
binlog_format=mixed
log-bin-index=master-bin.index
binlog-do-db = tycp-dev #要同步的数据库
binlog-ignore-db = mysql #不同步的数据库
expire_logs_days = 7 #定时清除的时间
max_binlog_size = 215M #日志大小
————————————————————————————————

重启MySQL

编译安装mysql重启方法:
将mysql安装目录下的mysql启动文件复制一份出来
cp /usr/local/mysql/bin/mysql /etc/init.d/mysqld
/etc/init.d/mysqld restart/start/stop #重启/启动/停止mysql
二进制安装的MySQL可以用systemctl 命令重启:
systemctl restart mysql #重启mysql

创建用户

CREATE USER ‘lqqslave’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

赋予权限

GRANT REPLICATION SLAVE ON . TO ‘lqqslave’@’%’;
#生效 flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;

#显示当前master状态 , file 和 position 从库配置使用
show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000001 | 1605 | | | |
±-----------------±---------±-------------±-----------------±------------------+

master 到此配置完毕

配置从服务器

打开mysql的配置文件在 /etc/my.cnf
添加下面模块
[mysqld]
idserver_id = 2 #设置从服务器ID 主从服务器ID必须保证不一样
重启mysql,登陆

设置master

#注意主master关闭防火墙或者开放3306端口

change master to
master_host=‘10.0.30.121’,
master_user=‘lqqslave’,
master_password=‘123456’,
master_log_file=‘mysql_bin.000001’,
master_log_pos=1605;

启动slave
start/stop/reset slave; 启动/停止/重置slave

查看slave状态
Show slave status\G

看到下面两个yes表示启动成功
#Slave_IO_Running: Yes
#Slave_SQL_Running: Yes

我这里是克隆出来的数据库一个是conneting 一个是no

此时要去看下面的报错(下图是正确的配置,看框起来地方的报错提示)
在这里插入图片描述
有一个报错是主从UUID相同,在/usr/loca,l/mysql/data/auto.cnf修改UUID 随便改一个之后 重启mysql登陆 在启动slave 查看状态:
Slave_SQL_Running: No
此时 可以用这个解决办法:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
这样两个就都是yes了

可以去master测试了,比如在master创建个用户以供远程链接使用

创建用户

CREATE USER ‘hizamaru’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

设置所有权限

GRANT ALL PRIVILEGES ON . TO ‘hizamaru’@’%’;
#授权基本的查询修改权限,按需求设置
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON . TO ‘hizamaru’@’%’;

从库也会自动创建用户,并设置权限

搭建主主同步(更改从节点为主节点)

vim /etc/my.cnf
log-bin=mysql-bin #二进制文件存放路径
添加bin log配置,MySQL8.0 默认是开启bin log的
重启服务

从节点创建复制用户

创建用户
CREATE USER ‘lqqslave’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

赋予权限

GRANT ALL PRIVILEGES ON . TO ‘lqqslave’@’%’;
#生效 flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;

#显示当前master状态 , file 和 position 从库配置使用
show master status;
±--------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±--------------±---------±-------------±-----------------±------------------+
| binlog.000027 | 824 | | | |
±--------------±---------±-------------±-----------------±------------------+

主节点设置master

#注意主master关闭防火墙或者开放3306端口

change master to
master_host=‘10.0.30.122’,
master_user=‘lqqslave’,
master_password=‘123456’,
master_log_file=‘binlog.000027’,
master_log_pos=824;

启动slave

start slave

查看状态

show slave status\G
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值