在linux搭建mysql主从复制

MySQL内建的复制功能是构建大型、高性能应用程序的基础。将MySQL的数据分布到多个系统上去,这种分布式的机制,是通过将MySQL的某一台主机的数据,复制到其他的主机slaves上,并重新执行一边来实现。
复制过程中,一个服务器充当主服务器,而一个或多个其他服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引,以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接到主服务器时,它通知主服务器,从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时发生的任何更新,然后封锁并等待主服务器通知更新。

操作环境:
linux7.3
主服务器master:172.25.3.1/24
从服务器slave:172.25.3.2/24

安装数据库(可从官网下载)

mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

解压后只需安装一部分

	yum install -y
	mysql-community-client-5.7.24-1.el7.x86_64.rpm
	mysql-community-common-5.7.24-1.el7.x86_64.rpm
	mysql-community-libs-5.7.24-1.el7.x86_64.rpm
	mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
	mysql-community-server-5.7.24-1.el7.x86_64.rpm

二进制文件主从复制

主服务器Master配置

修改/etc/my.conf文件
在mysqld段下添加配置

	vim /etc/my.cnf
	[mysqld]
   log-bin=mysql-bin  ## [必须]启用二进制日志
   server-id=1      ## [必须]服务器唯一ID,默认是1,一般取IP最后一段

在这里插入图片描述

从服务器Slave配置

	vi /etc/my.cnf
 	[mysqld]
   log-bin=mysql-bin   ## [非必须]启用二进制日志
   server-id=2      ##[必须]服务器唯一ID,默认是1,一般取IP最后一段

配置之后master和slave都需要重启mysqld

	systemctl restart mysqld

分别在mster和slave安全初始化数据库
mysql的原密码在日志内

	grep password /var/log/mysqld.log

在这里插入图片描述

安全初始化修改为自己方便记得密码

	mysql_secure_installation 

初始化之后使用修改后的密码登陆检验

	mysql -uroot -pQwer+1234df
				## -p 后面的字符串就是密码

在这里插入图片描述

在master建立帐户并授权slave:

 mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'Qwer+1234df'; 

一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
在这里插入图片描述

查询master的状态

	 mysql>show master status;

在这里插入图片描述
注:执行完此步骤后不要再操作主服务器,防止主服务器状态值变化。

配置从服务器Slave:

mysql>change master to master_host='172.25.3.1',master_user='mysync',master_password='Qwer+1234df',
     master_log_file='mysql-bin.000002',master_log_pos=683;  

master_host 的ip是master的ip
master_user 是刚刚master创建的用户名
master_password 是刚刚创建用户时的密码
master_log_file 是查看master状态表内显示的文件名,必须表内显示的
master_log_pos 是填写的文件名在表内对应的position

在这里插入图片描述

mysql>start slave;    ## 启动从服务器复制功能

在这里插入图片描述

检查从服务器复制功能状态:

	   mysql> show slave status\G;

Slave_IO_State: Waiting for master to send event
Master_Host: 172.25.3.1 ## master的ip
Master_User: mysync ## 授权帐户名,尽量避免使用root
Master_Port: 3306 ## 数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 683 ## 同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: server2-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
IO和SQL的状态必须为 YES

在这里插入图片描述

测试:主master建立一个库

create database westos;

在这里插入图片描述

从slave上也能看到westos库
在这里插入图片描述

Gtid主从复制

在主master:

	vim /etc/my.cnf  
	gtid_mode=ON
	enforce-gtid-consistency=true

	systemctl restart mysqld

在这里插入图片描述

在从slave

	vim /etc/my.cnf  
	gtid_mode=ON
	enforce-gtid-consistency=true
	
	systemctl restart mysqld
	
	mysql -uroot -pQwer+1234df
	mysql> stop slave;
	mysql> change master to master_host='172.25.3.1' , master_user='mysync' , master_password='Qwer+1234df' , MASTER_AUTO_POSITION=1;
	mysql> start slave;
	mysql> show slave status\G;

在这里插入图片描述

在这里插入图片描述
测试:
在master,之前的westos库内添加一条新的信息
在这里插入图片描述
在slave
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值