搭建MySQL主从复制
- 克隆虚拟机,一主一从
- 先将需要克隆的虚拟机停掉,“右键”->“管理”->“克隆”
“创建完整克隆”->“命名、存放位置”->“完成”
等待完成。。。
需要修改几个点:
- “网络适配器”->“高级”->“生成”->“确定”
运行虚拟机 - 修改IP地址和UUID,命令:vim /etc/sysconfig/network-scripts/ifcfg-ens33
IP地址和UUID随意更改即可
重启网络,命令:systemctl restart network - 修改MySQL的UUID,命令:vim /var/lib/mysql/auto.cnf
UUID随意更改
重启MySQL,命令:systemctl restart mysqld
至此虚拟机克隆完成
- 搭建MySQL主从复制
- MySQL主从复制原理
- 启动两台虚拟机:centos7-2(主机)centos7-3(从机)
- 修改主机配置:
vim /etc/my.cnf
#主服务器唯一id
server-id=1
#启动二进制日志
log-bin=mysql-bin
#设置不需要复制的数据库(可设置多个)
binlog-ignore-db=数据库名称
#设置需要复制的数据库
binlog-do-db=数据库名称
#设置binlog格式
binlog_format=STATEMENT
==***注意:需要复制的数据库是还没有创建的,因为mysql的主从复制是从接入的那一刻开始,不是复制全部***==
- 修改从机配置:
vim /etc/my.cnf
#从服务器唯一id
server-id=2
#启动中继日志
relay-log=mysql-relay
重启两台服务器的mysql服务并查看状态,确保启动成功
systemctl restart mysqld
systemctl status mysqld
- 授权从机复制数据
CREATE USER 'slave1'@'%' IDENTIFIED BY '123456';
- 如果在这一步报如下错误,请查看
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
flush privileges;
- 查看log日志及接入点信息
File:为log日志
Position:为接入点
Binlog_Do_DB:为要复制的库名
Binlog_Ignore_DB:为不要复制的库名
Binlog_Do_DB和Binlog_Ignore_DB设置一个即可
切到从机执行
- 对应修改后复制到从机执行
CHANGE MASTER TO MASTER_HOST='192.168.171.100',
MASTER_USER='slave1',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_lOG_POS=751;
启动复制功能并查看主从复制状态,命令:
start slave;
show slave status \G
如图,红色框中为Yes即表名成功,如果不是,请查看黄色框中的Error相关报错信息,进行修复。
- 测试
- 从主库创建名为 mycat_01 的数据库,到从库查看。
此处的 mycat_01是我设置的需要复制的库名,需要根据自己的修改。
主库命令:
CREATE DATABASE `mycat_01` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
- 从库命令:
show databases;
- 停止 从 服务复制功能
注意:这里的命令需要切换到3306端口,也就是mysql中执行,包括停止从复制,重新配置 主 ,开启从复制
停之前记得记录 Position 参数
-- 查看当前master信息,记录 Position
show master status \G
-- 停止从复制
stop slave;
- 重新配置 主 并开启从复制
-- 重新配置 主
reset slave;
-- 配置连接 主 的相关信息
-- CHANGE MASTER TO MASTER_HOST='192.168.171.100',
-- MASTER_USER='slave1',
-- MASTER_PASSWORD='shuo',
-- MASTER_LOG_FILE='mysql-bin.000001',
-- MASTER_lOG_POS=154;
-- 开启从复制
start slave;
- 开启完注意查看 从 状态,以确保成功
show slave status \G