当前位置: 移动技术网 > 科技>操作系统>Linux > mysqlGTID主从配置

mysqlGTID主从配置

2019年02月28日  | 移动技术网科技  | 我要评论
GTID主从简介 GTID是基于mysql生成的事务ID,由服务器ID和事务ID组成。 这个ID在主库及从库上都是唯一的。 这个特性可以让mysql的主从复制变得更加简单,一致性更加可靠。 GTID优势 1. 更简单的实现同步,不需要再找log_file和log_pos 2. GTID是连续的,没有 ...

gtid主从简介

gtid是基于mysql生成的事务id,由服务器id和事务id组成。
这个id在主库及从库上都是唯一的。
这个特性可以让mysql的主从复制变得更加简单,一致性更加可靠。

gtid优势

  1. 更简单的实现同步,不需要再找log_file和log_pos
  2. gtid是连续的,没有中断,数据一致性高,不会发生丢失
  3. 搭建主从更简单
  4. 比传动主从更安全

gtid劣势

  1. 不支持主从关系中存在非事务数据库
  2. 不支持create table … select语句
  3. 不支持针对临时表的操作:
  4. 开启 gtid 后不能再使用原来的传统的复制方式;

配置gtid主从

环境:

  • 主数据库
    • centos7/redhat7
    • ip-192.168.233.129
    • hostname-lynk
    • 有数据
  • 副数据库
    • centos7/redhat7
    • ip-192.168.233.247
    • hostname-hyrule
    • 无数据

给从库授权

#以下操作在主库进行
mysql> create user 'repl'@'192.168.233.247' identified by 'repl123';
query ok, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to 'repl'@'192.168.233.247';
query ok, 0 rows affected (0.00 sec)

确保数据一致

#新开一个终端,对主库锁表,防止配置期间有其他人写入,锁表期间不能关闭终端或退出mysql交互式命令行
mysql> flush tables with read lock;

#全备主库
[root@lynk ~]# mysqldump -uroot -plynk123~ --all-databases > /opt/all-201902271749.sql
#复制备份文件到从库
[root@lynk ~]# scp /opt/all-201902271749.sql root@192.168.233.247:/opt/

#在从库恢复主库的备份
[root@hyrule ~]# mysql -uroot -plynk123~ < /opt/all-201902271749.sql 

配置主库

[root@lynk ~]# vim /etc/my.cnf
#添加以下内容
#数据库服务器唯一标识符,主库的server-id值必须比从库的大
server_id=1
gtid_mode=on 
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on 
log_bin=master-binlog
log-slave-updates=1
binlog_format=row 
skip_slave_start=1

#结束主库锁表状态,只要退出另一个终端中mysql交互式命令行就行了
mysql> quit
#重启主库
[root@lynk ~]# systemctl restart mysqld

配置从库

[root@hyrule ~]# vim /etc/my.cnf
#添加以下内容
gtid_mode=on
enforce_gtid_consistency=on
server_id=2
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row 
skip_slave_start=1

#重启从库
[root@hyrule ~]# systemctl restart mysqld

#配置主从复制
mysql> change master to
    -> master_host='192.168.233.129',
    -> master_user='repl',
    -> master_password='repl123',
    -> master_port=3306,
    -> master_auto_position = 1;
query ok, 0 rows affected, 2 warnings (0.03 sec)

mysql> start slave;
query ok, 0 rows affected (0.01 sec)

mysql> show slave status \g
#确保以下两项是yes
             slave_io_running: yes
            slave_sql_running: yes

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网