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主服务器

编辑文件 

[root@wyx3 ~]# vim /etc/my.cnf 

添加 

server-id=1
log-bin=mysql-bin

之后重新启动mysql

进入数据库进行创建用户

mysql> grant replication slave on *.* to wyx@'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从库;

编辑文件

[root@wyx5 mysql-5.7.17]# vim /etc/my.cnf

写入server-id=2(主机从机id不能一样)

重新启动mysql服务

测试主机wyx3上的用户能否登陆

[root@wyx5 ~]# 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模式的主从复制

主机从机都进行如下操作

首先修改配置文件

[root@wyx3 mysql]# vim /etc/my.cnf

添加

gtid_mode=ON
enforce-gtid-consistency=true

重启服务

[root@wyx3 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查看从库中列表

主库中数据从库已复制

 

 

 

 

 

 

配置万

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值