MySQL 5.7主从复制—单组单从

MySQL安装

MySQL安装

配置

准备两台主机,都安装上mysql。mysql001当做master,mysql002作为slave同步mysql001的数据。
注意:安装mysql时,要在my.cnf中添加或修改server-id,两台mysql的server-id不能相同

主机名ip类型server-id
mysql001192.168.56.11master1
mysql002192.168.56.12slave2

Master配置

创建复制用户

#关闭master和slave的防火墙,并禁止开机自启。
systemctl stop firewalld.service
systemctl disable firewalld.service

# 进入mysql命令行 
bin/mysql -uroot -p123456
#创建一个用于slave复制的用户
grant replication slave on *.* to repluser@'%' identified by '123456';
flush privileges;

#创建复制用户的语法与创建一个普通用户的语法相近,下面一些解释:
# *.*:表示可以检测所有的库下的所有表
# repluser:创建的用户名
# %:所有ip的可以访问
# '123456':密码为 123456

查看master的pos点

#查看master当前的pos点,并记录下载,在slave中配置从指定pos点开始读取
show master status;
# +------------------+----------+--------------+------------------+-------------------+
#  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
#  +------------------+----------+--------------+------------------+-------------------+
#  | mysql-bin.000007 |      593 |              |                  |                   |
#  +------------------+----------+--------------+------------------+-------------------+
#  1 row in set (0.00 sec)
#这是我的master当前的pos点位置,这个以实际查询出的数据为准。将File 和 Position 记录下来

Slave配置

配置Master信息

# 进入slave的命令行
#配置需要读取的Master信息
change master to 
master_host='192.168.56.11',
master_port=3306,
master_user='repluser',
master_password='123456',
master_log_file='mysql-bin.000007',
master_log_pos=593;

# master_host:Master的ip
#master_port:Master的端口
#master_user:复制用户,即:上面Master创建的复制用户
#master_passwor:复制用户的密码
#master_log_file:master当前的binlog文件,即上面Master查询当前pos点时,打印出来的 File 字段内容
#master_log_pos:master当前的binlog文件的pos点,即上面Master查询当前pos点时,打印出来的 Position 字段内容

启动slave

start slave;

验证是否配置成功

show slave status\G;
#查看slave状态,主要查看Slave_IO_Running=yes 和 Slave_SQL_Running=yes 两个字段是否为yes
#两个都为yes即表示配置成功。
#最后可以在Master上执行创建数据库,创建表,插入数据,更新数据,删除数据等操作;每执行一条操作,可以在slave中查询,看数据是否同步过去了

注意

问题1

如果slave的mysql是从Master处拷贝的,则会出现:
Slave_IO_Running=no
Slave_SQL_Running=yes
的情况,查看日志提示server-uuid重复,导致服务同步数据。
解决方案:
在slave的命令行窗口运行:
select uuid();
会打印处一串uuid,拷贝uuid,退出命令行,在找到 mysql的auto.cnf文件(我的这里是在数据文件目录下,即:data/auto.cnf ),打开该文件,用拷贝的uuid替换原来的uuid。重启mysql服务,
进入mysql命令行,启动slave:start slave;
启动后,show slave status;
Slave_IO_Running=yes
Slave_SQL_Running=yes

问题2

在Slave中配置Master的信息时,提示:
File ‘/usr/local/mysql/relay_log/relay-log.index’ not found (Errcode: 2 - No such file or directory)
解决方案: 在/usr/local/mysql/ 目录下创建 relay_log文件夹,不需要创建relay-log.index这个文件,然后重新执行配置命令即可

问题3

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
原因:Slave无法连接到Master上
解决方案:
1、检查Master的3306端口是否被开放。
2、Master是否允许远程连接。
3、配置信息是否有误,即用户名、密码、ip、port输入有误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值