1.1基于语句的复制:在主服务器上执行的SQL语句,再在从服务器上执行一次,默认采用语句复制
1.2 基于行的复制:把改变的内容复制过去,而不是把命令再在从服务器上执行一遍
1.3 混合类型复制:一旦发现基于语句无法精确的复制时,就会采用基于行的复制
2.1 在每个事务完成之前,master(主服务器)在二进制日志中记录这些改变
2.2 slave(从服务器)开启IO线程,将master的binary log(二进制日志)复制到中继日志
2.3 SQL线程从中继日志中读取事件,更新slave的数据库
3.1 安装wget
yum -y install wget
3.2 下载MySQL的rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
3.3 安装
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum -y install mysql-server
3.4 启动MySQL
systemctl start mysqld
systemctl enable mysqld
3.5 第一次登录MySQL会在MySQL的日志中提供初始密码
grep password /var/log/mysqld.log
mysql -uroot -pllq_eE_Jy4u3
3.7 第一次登录进来会提示修改密码
根据提示修改密码,密码必须要有字母,大小写,符号等,否则修改不成功
alter user 'root'@'localhost' identified by '1234Aa..';
主与从时间必须相同
主从之间必须能网络互通
如果数据库不能连接外网就安装配置ntp
ntpdate ntp1.aliyun.com
4.3.1 修改配置文件
vim /etc/my.cnf
添加:
server-id =1
log-bin=master-bin
log-slave-updates=true
重启MySQL
systemctl restart mysqld
4.3.2 登录MySQL,授权从服务器
grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123456';
myslave:从服务器名
192.168.1.%:从服务器可登录的网段/ip
123456:从服务器登录的密码
4.3.3 刷新MySQL
flush privileges;
4.3.4 查看主服务器状态
show master status;
4.4.1 修改配置文件
vim /etc/my.cnf
添加:
server-id =2 #ID不能与主服务器相同
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
4.4.2 重启MySQL
systemctl restart mysqld
4.4.3 登录mysql,同步配置
change master to master_host='192.168.1.8',master_user='myslave',master_password='123456',master_log_file='master-bin.000005',master_log_pos=2035;
# master_user:从服务器登录主服务器的登录名
# master_password:从服务器登录主服务器的密码
# master_log_file:刚刚查询出来的日志文件
# master_log_pos:刚刚查询出来的偏移量
4.4.4 启动同步
start slave;
4.4.5 查看slave状态,这两项必须为yes
show slave status\G;
4.4.6 测试同步是否能成功
在主服务器上创建一个库,从服务器能够同步
从创建一个库不能同步到主上