mysql主从复制(基于gtid)
mysql的主从复制
主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。主服务器创建一个线程将二进制日志中的内容发送到从服务器。
该线程为主服务器上的Binlog Dump线程。从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。
实验环境
虚拟机版本 redhat6.5
mysql版本 5.7.17
iptable/fireword关闭
selinux=disables
mysql主机:172.25.79.3 wyx3
mysql从机:172.25.79.5 wyx5
mysql安装
在mysql官网上下载 mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
1.对压缩包进行减压
tar -xvf mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
建立一个目录 把压缩文件移动到该目录下
1. mkdir mysql-5.7.17
2. mv mysql-community-* mysql-5.7.17
移动到mysql-5.7.17中进行安装所需软件
yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm
启动服务并修改MYSQL密码
由于第一次启动。mysql页面会卡顿,等待就好,或者运用ssh远程连接控制wyx3进行查看 进程信息如有mysql则表示启动成功
kill -9 pid结束进程在重新开启即可
查看 mysql日志找到mysql启动时生成的密码
接下来进入mysql进行修改密码
mysql_secure_installation
输入之前日志中的密码
如上所属。出来这种报错表示密码强度不够,此时设置密码因为mysql为强加密模式,密码组成必须为数字.大小写字母。字符组成缺一不可
检查
输入密码登陆mysql看密码设置是否成功
wyx5同步操作
之后把mysql-5.7.17目录发给wyx5进行响应的配置
检查无误后进行下面的主从复制配置
主从复制
wyx3主服务器
编辑文件
[[email protected] ~]# vim /etc/my.cnf
添加
server-id=1
log-bin=mysql-bin
之后重新启动mysql
进入数据库进行创建用户
mysql> grant replication slave on *.* to [email protected]'172.25.79.%' identified by 'wyxWYX123.';
查看复制起始点
mysql> show master status
-> ;
创建一个数据库并写入数据
mysql> create database wwyx;
编辑内容
mysql> create table userlb (
-> userid varchar(14) not null,
-> username varchar(14) not null);
Query OK, 0 rows affected (1.52 sec)
在表中添加信息
mysql> insert into userlb value ('05158056','wyx');
Query OK, 1 row affected (0.17 sec)
mysql> insert into userlb value ('05158063','wzm');
Query OK, 1 row affected (0.25 sec)
查看
mysql> select * from usertb(查看表中所有信息)
wyx5从库;
编辑文件
[[email protected] mysql-5.7.17]# vim /etc/my.cnf
写入server-id=2(主机从机id不能一样)
重新启动mysql服务
测试主机wyx3上的用户能否登陆
[[email protected] ~]# mysql -h 172.25.79.3 -u wyx -pwyxWYX123.
退出用root用户进行登陆设置从库并开启slave模式
change master to master_host='172.25.79.3(主库Ip)', master_user='wyx'(用户名), master_password='wyxWYX123.(建立的用户密码)', master_log_file='mysql-bin.000005'(主库的文件名), master_log_pos=446(主库的POS值);
Query OK, 0 rows affected, 2 warnings (0.28 sec)
开启slave并查看slave信息
mysql> start slave;
mysql> show slave status\G;
当Slave_IO_Running: Yes
Slave_SQL_Running: Yes时表示服务正常开启
如出现
Slave_IO_Running: Connecting
错误类型无非就3种
1.网络不同
2.编辑change master to时出错(1.密码错误 2.用户名错误)
3.pos值不对
一一查看即可解决
查看从库是否以复制主库中信息
mysql> show databases;
查看信息内容是否一致
查看主库信息
如果遇到下图情况主库中的wyx表在从库中没有显示
注意复制点 pos开始值以及文件是多少就从那里开始显示之前的列表不显示
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 446
主库与从库信息一直
在主库中wwyx userid表中添加信息
查看从库是否同步复制
2表对比一直表示主从复制以实现
基于gtid模式的主从复制
主机从机都进行如下操作
首先修改配置文件
[[email protected] mysql]# vim /etc/my.cnf
添加
gtid_mode=ON
enforce-gtid-consistency=true
重启服务
[[email protected] mysql]# /etc/init.d/mysqld restart
在wyx5从机上停止slave 重新配置
mysql> stop slave
change master to master_host='172.25.79.3', master_user='wyx', master_password='wyxWYX123.', master_auto_position=1;
开启salve宾查看
测试
在主机wyx3上添加数据并查看表中数据
c查看从库中列表
主库中数据从库已复制
配置万