提示:前面有相应的文章利用不同方式进行的主从配置
文章目录
- 前言
- 一、概述
- 二、主从复制的优点
- 三、原理
- 四、搭建
- 五、主库配置
- 六、从库配置
- 七、测试
前言
一、概述
主从复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。
二、主从复制的优点
MySQL 复制优点主要包含以下三个方面:
1、主库出现问题,可以快速切换到从库提供服务。
2、实现读写分离,降低主库的访问压力。
3、可以在从库中执行备份,以避免备份期间影响主库服务。
三、原理
复制分成三步:
1、Master 主库在事务提交时,会把数据变更记录在二进制日志文件 binlog 中
2、从库读取主库的二进制日志文件 binlog ,写入到从库的中继日志 relay log
3、slave重做中继日志中的事件,将改变反映它自己的数据。
四、搭建
准备两台服务器
服务器上完成mysql的安装并且关闭防火墙数据库能正常登录。
关闭防火墙命令
systemctl stop firewalld
systemctl disable firwalld
五、主库配置
1、修改配置文件 vim/etc/my.cnf
mysql服务器ID,保证整个集群环境唯一,取值范围:1-2的32-1,默认1
server-id = 1 # 保证服务器的唯一性
#是否只读,1只读,0读写
read-only = 0
#忽略的数据,指不需要同步的数据库
#binlog_ignore-db=mysqlID
#指定同步的数据库,默认都同步
#binlog-do-db=mysqlID
说明:根据实际的应用配置同步的库和不要同步的库,这里没有进行限制
2、重启mysql服务
service mysqld restart
3、登录mysql,创建远程连接的账号,并授予主从复制权限
创建itcast用户,并设置密码,该用户可在任意主机连接该mysql服务
create user ‘itcast’@‘%’ identified with mysql_native_password by ‘Root@123456’;
为itcast用户分配主从复制的权限
grant replication slave on . to ‘itcast’@‘%’
4、查看主库配置的状态
命令:
show master status;(show master status\G;)
字段含义说明:
file : 从哪个日志文件开始推送日志文件
position : 从哪个位置开始推送日志
binlog_ignore_db : 指定不需要同步的数据库
忽略的数据,
binlog_ignore-db:指不需要同步的数据库
binlog-do-db:指定同步的数据库,默认都同步
六、从库配置
1、修改配置文件 vim/etc/my.cnf
#mysql服务器ID,保证整个集群环境唯一,取值范围:1-2的32-1,和主库不一样即可
server-id = 2
#是否只读,1只读,0读写
read-only = 0
2、mysql重启
service mysql restart
3、登录mysql数据库配置主库信息:
change master to master_host='ip地址' ,master_user ='用户名' ,master_password ='密码' , master_log_file = '文件名' , master_log_pos =xxx;
change master to master_host =‘192.168.200.200’ ,master_user =‘itcast’ ,master_password =‘Root@123456’ , master_log_file = ‘binlog.000004’ , master_log_pos =663;
或者
change master to
master_host=‘192.168.100.57’,
master_port=3306,
master_user=‘repl’,
master_password=‘123456’,
master_log_file=‘mysql-bin-3306.000122’,
master_log_pos=604;
说明:主库的状态信息根据命令show master status在主库中获取到,从库中配置以上两种方式都可以,任选其一即可,
参数说明:
SOURCE_HOST 主库IP地址 MASTER_HOST
SOURCE_USER 连接主库的用户名 MASTER_USER
SOURCE_PASSWORD 连接主库的密码 MASTER_PASSWORD
SOURCE_LOG_ FILE binlog日志文件名 MASTER_LOG_FILE
SOURCE_LOG_POS binlog日志文件位置 MASTER_LOG_POS
4、开启同步
show slave status(从库上运行)
以上两个参数同时为’yes‘的状态下表示主从复制搭建成功
七、测试
1、在主库上创建数据库、表,并插入数据
create database itcast;
use testdb;
create table tb_user(
id int(11) not null,
name varchar(50) not null,
sex varchar(1),
primary key (id)
)engine=innodb default charset=utf8;
insert into tb_user(id,name,sex) values(1,‘Tom’,‘1’);
insert into tb_user(id,name,sex) values(2,‘Trigger’,‘0’);
insert into tb_user(id,name,sex) values(3,‘Dawn’,‘1’);
2、从库中读取主库的写入即可