mysql主从复制的实现
实验环境
master节点:server1,ip为172.25.21.1
slave节点:server2,ip为172.25.21.2
测试:真机,ip为172.25.21.250
配置master节点
安装mysql主从复制需要的包
在官网上下载mysql的包mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
tar xf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar #解压,这里不使用z参数
安装所需要的rpm包
yum install -y mysql-community-client-5.7.28-1.el7.x86_64.rpm mysql-community-common-5.7.28-1.el7.x86_64.rpm mysql-community-libs-5.7.28-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm mysql-community-server-5.7.28-1.el7.x86_64.rpm
注意:一定要按顺序安装,否则安装会出现依赖性问题 企业
修改mysq主配置文件,实现主从复制
vim /etc/my.cnf
编辑内容为:(在文件最后写入)
log-bin=mysql-bin #开启二进制日志
server-id=1 #主库server-id需要比从库小,用来区分主机与从机
开启mysql服务
systemctl start mysqld #开启服务
查看初始密码
重启mysql会在/var/log/mysqld.log文件中生成一个密码
cat /var/log/mysqld.log | grep password #查看原始密码
KMeu/y=4,v95 #为原始密码
我们使用原始密码登陆(没有做安全初始化,对数据库进行读操作时会报错)
注意:这里的密码如果使用 -p密码,出错的话,我们可以使用单引号将密码引起来
开启服务之后生成了一个临时密码,使用临时密码进行数据库安全初始化
mysql_secure_installation #安全初始化
设定新密码时:密码大于8位,数字+大小写英文+特殊字符
因为该数据库版本开启了密码检测系统,简单密码会报错
Westos.123 #我新设的密码
第一处直接回车,其他输入y
使用临时密码进行数据库安全初始化
登陆数据库对用户进行授权
mysql -uroot -pWestos.123 #登录数据库
show databases; 测试数据库是否可以使用
grant replication slave on *.* to huige@'172.25.21.%' identified by 'Westos.456';
#我们开启一个slave线程,让这个slave来复制主mysql 同时创建从库连接的用户,可以使用此用户远程登录数据库,且授权为可以复制master节点数据的slave节点,
让172.25.21网段的从服务器来使用mysql主服务器的huige这个用户来访问,给他一个授权(使用的密码是Westos.456)
flush privileges; #刷新
show master status; #查看master节点的状态
REPLICATION:表示复制的权限
. :表示对所有库的所有表都授权
huige:用户名
‘172.25.21.%’ : 授权172.25.21网段的所有数据库节点都可以同步(复制)
在主机上测试主节点是否设置好:
mysql -h 172.25.21.1 -uhuige -pWestos.456 #登录数据库
配置slave节点
[root@server2 Mysql]# tar xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar #解压安装所需要的rpm包
[root@server2 Mysql]# yum install -y mysql-community-client-5.7.28-1.el7.x86_64.rpm mysql-community-common-5.7.28-1.el7.x86_64.rpm mysql-community-libs-5.7.28-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm mysql-community-server-5.7.28-1.el7.x86_64.rpm
[root@server2 Mysql]# vim /etc/my.cnf # 编辑文件
编辑内容为(在最后写):
server-id=2 #从库只需要开启一个跟主库区分的id就可以了
systemctl start mysqld #开启服务
cat /var/log/mysqld.log | grep password #查看原始密码
原始密码为:RxXRJ21hBQ:o
mysql_secure_installation #安全初始化
操作跟主服务器一样,输入原始密码
设置新密码(为了不出错我们将从服务器密码也改为Westos.123)
第一个回车,其他的输入y后回车
在从库指定主库信息
配置主库信息:
指定二进制主库
在mysql主服务器server1上查看
日志文件和状态码可以在主库中查看
然后回到server2的从数据库中
mysql> change master to master_host='172.25.21.1', #主库的ip地址
-> master_user='huige',master_password='Westos.456',
#主库的用户主库的密码
-> master_log_file='mysql-bin.000002', #主库的日志文件
-> master_log_pos=1592; #主库的状态码
开启从库
mysql> start slave; #开启从库
show slave status\G; #查看从库状态
可以看到的当前两个进程都是yes,表示主库和从库的数据一致
开启成功,IQ SQL线程都开启才能正常复制
测试mysql主从复制
在主库上创建新的数据库
在从库上查看是否复制
use westos;
主从复制成功