热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL5.6.xGTID主从复制详细配置指南

本文详细介绍了在CentOS6.7x64环境下配置MySQL5.6.29的GTID主从复制方法。主库IP为192.168.0.65,备库IP为192.168.0.66。通过逐步指导,帮助读者顺利实现高可用性和数据一致性。

本文环境:

主库:CentOS6.7 x64 192.168.0.65 mysql-5.6.29

备库:CentOS6.7 x64 192.168.0.66 mysql-5.6.29

一、配置Mysql5.6 GTID主从(本节配置适合主从都是空库的情况)

1. mysql主服务器配置

说明: 基于GTID的主从复制需要在配置文件中添加如下内容。

# vi /etc/my.cnf

[mysqld]

binlog-format                = ROW

log-bin                      = master-bin

log-bin-index                = master-bin.index

log-slave-updates            = true

gtid-mode                    = on

enforce-gtid-consistency     = true

master-info-repository       = TABLE

relay-log-info-repository    = TABLE

sync-master-info             = 1

slave-parallel-workers       = 2

binlog-checksum              = CRC32

master-verify-checksum       = 1

slave-sql-verify-checksum    = 1

binlog-rows-query-log_events = 1

report-host                  = 192.168.1.120

server-id                    = 1

重启数据库:

# service mysqld restart

查看gtid信息:

mysql> show global variables like '%GTID%';

+---------------------------------+----------------------------------------+

| Variable_name                   | Value                                  |

+---------------------------------+----------------------------------------+

| binlog_gtid_simple_recovery     | OFF                                    |

| enforce_gtid_consistency        | ON                                     |

| gtid_executed                   |                                        |

| gtid_mode                       | ON                                     |

| gtid_owned                      |                                        |

| gtid_purged                     |                                        |

| simplified_binlog_gtid_recovery | OFF                                    |

+---------------------------------+----------------------------------------+

2. 主服务器配置同步复制帐号

grant replication slave on *.* to 'repl'@'%' identified by '123456';

flush privileges;

3. mysql从服务器配置

说明: 默认只要server-id不相同即可。

# vi /etc/my.cnf

[mysqld]

binlog-format                = ROW

log-bin                      = mysql-bin

relay-log                    = slave-relay-bin

relay-log-index              = slave-relay-bin.index

log-slave-updates            = true

gtid-mode                    = on

enforce-gtid-consistency     = true

master-info-repository       = TABLE

relay-log-info-repository    = TABLE

sync-master-info             = 1

slave-parallel-workers       = 2

binlog-checksum              = CRC32

master-verify-checksum       = 1

slave-sql-verify-checksum    = 1

binlog-rows-query-log_events = 1

report-host                  = 192.168.1.121

server-id                    = 11

重启数据库:

# service mysqld restart

查看gtid状态:

mysql> show global variables like '%GTID%';

+---------------------------------+----------------------------------------+

| Variable_name                   | Value                                  |

+---------------------------------+----------------------------------------+

| binlog_gtid_simple_recovery     | OFF                                    |

| enforce_gtid_consistency        | ON                                     |

| gtid_executed                   |                                        |

| gtid_mode                       | ON                                     |

| gtid_owned                      |                                        |

| gtid_purged                     |                                        |

| simplified_binlog_gtid_recovery | OFF                                    |

+---------------------------------+----------------------------------------+

7 rows in set (0.00 sec)

4. 连接主Mysql,配置主从

(1) 连接主数据库

mysql>

CHANGE MASTER TO

MASTER_HOST='192.168.0.65',

MASTER_PORT=3306,

MASTER_USER='repl',

MASTER_PASSWORD='123456',

MASTER_AUTO_POSITION=1;

(2) 启动从同步进程

mysql> start slave;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.65

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000007

Read_Master_Log_Pos: 290

Relay_Log_File: slave-relay-bin.000002

Relay_Log_Pos: 502

Relay_Master_Log_File: master-bin.000007

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table: mysql.%

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 290

Relay_Log_Space: 706

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: c8bb22a1-024e-11e6-a1e8-000c29225fa0

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 1

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>

#查看如下两个参数为YES,说明从库运行正常。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

5. 验证同步情况

(1) 主数据库创建一个数据库

mysql> create database abc;

Query OK, 1 row affected (0.02 sec)

mysql> show master status\G;

*************************** 1. row ***************************

File: master-bin.000007

Position: 290

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>

(2) 从数据库查看同步情况

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| abc                |

| mydb               |

| mysql              |

| performance_schema |

+--------------------+

5 rows in set (0.01 sec)

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.65

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000007

Read_Master_Log_Pos: 290

Relay_Log_File: slave-relay-bin.000002

Relay_Log_Pos: 502

Relay_Master_Log_File: master-bin.000007

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table: mysql.%

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 290

Relay_Log_Space: 706

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: c8bb22a1-024e-11e6-a1e8-000c29225fa0

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1

Executed_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1

Auto_Position: 1

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>

二、 配置Mysql5.6 GTID主从 (主从异步模式转成GTID模式)方式二

原环境本身已经是异步主从同步模式。

1,从主库添加如上GTID相关配置文件,重启数据库后,主库锁表,备份数据库。

mysql> flush tables with read lock;

2,从库操重新配置从库,清除掉原来的主库配置信息, 或者采用导入数据库。

mysql> stop slave;

mysql> reset slave;

3,在保证数据同步的情况下从库重新连接主库同步。

mysql>

CHANGE MASTER TO

MASTER_HOST='192.168.0.65',

MASTER_PORT=3306,

MASTER_USER='repl',

MASTER_PASSWORD='123456',

MASTER_AUTO_POSITION=1;

4,主库

mysql> unlock tables;

5,从库启动并测试同步情况

三、小结

可以在GTID的基础上配置半自动同步复制,可以查看相关文档,实际环境中需要对GTID相当了解后再用于生产环境。



推荐阅读
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文介绍两道有趣的编程问题:一是寻找给定数字n的连续数字序列及其个数,二是模拟一个翻杯子的游戏。同时附带一道智商题供读者思考。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文探讨了符号三角形问题,该问题涉及由相同数量的“+”和“-”符号组成的三角形。通过递归回溯法,可以有效地搜索并计算符合条件的符号三角形的数量。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
author-avatar
viggieg-may_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有