[mysql] MariaDB 10.0.10 GTID复制

一:概念理解:
    1.TID:Transaction ID,即Mysql服务器的事务ID号。

2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事物ID是不能相同的。

3.全局事物ID是Mster服务器生成一个128位的UUID+事物的ID号组成的,UUID标示主服务器的身份,此UUID在整个主从复制架构中是绝对唯一,而且即使更换主服务器后UUID也不会改变而是继承当前主服务器的UUID身份。

4.全局事务ID有何用处?简单来讲GTID能够保证让一个从服务器到其他的从服务器那里实现数据复制而且能够实现数据整合的。GTID在分布式架构中可以保证数据的一致性。从而也实现了mysql的高可用性。

5.GTID相关操作:默认情况下将一个事务记录进二进制文件时将首先记录它的GTID而且GTID和事务相关信息一并要发送给从服务器由从服务器在在本地应用认证但是绝对不会改变原来的事务ID号。

6.因此在GTID的架构上就算有了N层架构,复制是N级架构,但是全局事务ID依然不会改变;有效的保证了数据的完整和安全性。

二:主要选项:
1、my.cnf配置:
Master:

[[email protected] ~]# grep -v ‘#‘ /etc/mysql/my.cnf 
[client]
port= 3306
socket= /tmp/mysql.sock

[mysqld]
port= 3306
socket= /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 4
datadir = /data/mydata
innodb_file_per_table = 1 
log-bin=/data/binlogs/master-bin
binlog_format=ROW

以下是主要的增该内容:

server-id= 100

log-slave-updates=True  #slave更新是否记入日志
master-info-repository=TABLE 
relay-log-info-repository=TABLE #此两项为打开从服务器崩溃二进制日志功能,信息记录在事物表而不是保存在文件
sync-master-info=1  #值为1确保信息不会丢失
slave-parallel-threads=2 #同时启动多少个复制线程,最多与要复制的数据库数量相等即可
binlog-checksum=CRC32 #效验码
master-verify-checksum=1 #启动主服务器效验
slave-sql-verify-checksum=1 #启动从服务器效验
binlog-rows-query-log-events=1 #用于在二进制日志详细记录事件相关的信息,可降低故障排除的复杂度;
report-port=3306 #请求的主机端口
report-host=node4.a.com  #请求的主机名,必须是主机名全称且DNS可解析

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
验证: 查看当前主机的二进制文件进度:
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000008 |      446 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

查看当前的二进制文件详细的信息:
mysql> show binlog events in ‘master-bin.000008‘;
+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+
| Log_name          | Pos | Event_type        | Server_id | End_log_pos | Info                                           |
+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+
| master-bin.000008 |   4 | Format_desc       |       100 |         248 | Server ver: 10.0.10-MariaDB-log, Binlog ver: 4 |
| master-bin.000008 | 248 | Gtid_list         |       100 |         277 | []                                             |
| master-bin.000008 | 277 | Binlog_checkpoint |       100 |         321 | master-bin.000008                              |
master-bin.000008 | 321 | Gtid              |       100 |         363 | GTID 0-100-1                                   |
| master-bin.000008 | 363 | Query             |       100 |         446 | create database sd                             |
+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+
5 rows in set (0.00 sec)

2、创建复制账号并授权:
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT  ON *.* TO   ‘jack‘@‘192.168.%.%‘  IDENTIFIED BY ‘123456‘;
mysql> FLUSH PRIVILEGES;

Slave:
[[email protected] ~]# grep -v ‘#‘ /etc/mysql/my.cnf

[client]
port= 3306
socket= /tmp/mysql.sock

[mysqld]
port= 3306
socket= /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 4
innodb_file_per_table = ON
datadir = /data/mydata
log-bin=/data/binlogs/master-bin
server-id=  1
以下为重点配置部分:
binlog-format=ROW
log-slave-updates=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-threads=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=node5.a.com

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

连接到主服务器:
mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.10.204‘,MASTER_USER=‘jack‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘master-bin.000013‘,MASTER_LOG_POS=379;
mysql> start slave;

然后确认复制进程是否已经成功启动:
mysql> show slave status\G;
*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.10.204

Master_User: jack

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000013

Read_Master_Log_Pos: 725

Relay_Log_File: node5-relay-bin.000002

Relay_Log_Pos: 714

Relay_Master_Log_File: master-bin.000013

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

同步成功后将从进程关闭:
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.10.204‘,MASTER_USER=‘jack‘,MASTER_PASSWORD=‘123456‘,MASTER_USE_GTID=current_pos;
mysql> start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.204
Master_User: jack
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000013
Read_Master_Log_Pos: 725
Relay_Log_File: node5-relay-bin.000002
Relay_Log_Pos: 714
Relay_Master_Log_File: master-bin.000013
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:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 725
Relay_Log_Space: 1015
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: 100
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: Current_Pos
Gtid_IO_Pos: 0-100-4

已经启动完成。

转自:

http://www.iyunv.com/thread-41582-1-1.html

http://dev.mysql.com/doc/refman/5.6/en/replication-gtids-howto.html

时间: 2024-10-01 21:40:40

[mysql] MariaDB 10.0.10 GTID复制的相关文章

MariaDB 10.0.10 GTID复制

一:概念理解: 1.TID:Transaction ID,即Mysql服务器的事务ID号. 2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事物ID是不能相同的. 3.全局事物ID是Mster服务器生成一个128位的UUID+事物的ID号组成的,UUID标示主服务器的身份,此UUID在整个主从复制架构中是绝对唯一,而且即使更换主服务器后UUID也不会改变而是继承当前主服务器的UUID身份. 4.全局事务ID有何用处?简单来讲GTID能够保证让一

关系型数据库之MariDB 10.0.10多主一从的架构及多线程复制架构

一.MySQL 5.6 以后出现的GTID:GTID概念: 1.GTID是一个由服务器的UUID和事务序号组成的唯一事务序号      例如: UUID:N          1122-3322-1122:1           1122-3322-1122:2 2.GTID会被当做唯每一个事务的首部,将会自动生成并存到二进制日志中3.GTID可以用来追踪主从之间的事务传输.4.GTID主要应用于HA的功能.在多主模型中,标示某一个事务是来源于哪个特定的主服务器.5.从服务器不会修改或者添加新的

ArcGIS Desktop 10.0 直连 ArcSDE 10.2

环境 客户端:win7 64位 sp1,oracle11.2 32位客户端,ArcGIS Desktop 10.0 服务端:win7 64位 sp1,oracle11.2 64位服务端,ArcSDE 10.2 理论上服务端是SDE10.1此方法同样有效 以下是连接参数截图: 参数说明: 服务器:服务端IP或机器名 服务:“sde:oracle11g:”是固定的,最后的“PS2VM1”是oracle的网络服务名,就是oracle net manager左边的树的节点名称 数据库:可以不填 用户名和

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

MariaDB 10 Slave Crash-Safe需转为GTID复制模式

之前写了一篇<MySQL5.6 crash-safe replication> ,但在Mariadb10.0.X和10.1.X上不支持relay_log_info_repository = TABLE参数,官网建议用GTID复制模式代替传统复制模式,传统复制模式是不支持Slave Crash-Safe的. 在mysql库下,会有一张gtid_slave_pos表(在安装初始化时,就已经是innodb引擎) START TRANSACTION; -- Statement 1 -- ... -- 

MySQL 5.6.10 跨平台GTID复制实践

根据业务需要,建立MySQL复制来实现数据冗余. MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率. 在官方文档中提到,最保险可靠的复制方式,是基于row的复制,所以宁可牺牲一些性能也要保证数据的安全. 现实环境中,master主数据库MySQL 5.6.10(msi安装方式)安装在Windows 2008 Server x64上,slave从服务器是一台老旧的DELL服务器,运行CentOS

What&#39;s is new in MariaDB 10.0(MySQL创始人Monty演讲)

视频地址(请使用翻墙软件观看): http://www.youtube.com/watch?v=4Th7JeRxPlo&feature=youtu.be PDF在附件里. What's is new in MariaDB 10.0(MySQL创始人Monty演讲),布布扣,bubuko.com What's is new in MariaDB 10.0(MySQL创始人Monty演讲)

Install MariaDB Galera Cluster 10.0.20

安装环境: OS:Centos 6.6 [[email protected] ~]# uname -a Linux heartbeat1 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 数据库软件:MariaDB Galera Cluster 10.0.20 主机配置: Heartbeat1 10.0.0.7 Heartbeat2 10.0.0.8 Heartbeat

MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建

最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133  Slave:192.168.6.132 2:网络配置,这里图个简单,直接关闭master的防火墙 [[email protected] Desktop]# service iptables stop 概览实现主从复制需要完成的配置: 1:主从集群里面的每台server需要有一个唯一的server