设为首页 收藏本站
查看: 543|回复: 0

[经验分享] mysql主从复制--mysql-5.6基于GTID及多线程复制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-4 09:24:24 | 显示全部楼层 |阅读模式
GTID,Global Transaction Identifiers,全局事务标识符    由服务器的UUID和事务ID号组成一个唯一的标识。mysql 5.6后,事务首部会记录server UUID,追踪十分简单。

UUID,Universally Unique Identifier,全局唯一标识符。

    A为master,B、C为slave,当A宕机时,B将成为New Master。C需将自己有的事务而B没有的事务复制给B,然后B才能成为Master。
    B和C双方事务的协商过程,由于GTID可自行完成。提高了mysql宕机后,服务的恢复速度,在一定程度上提高了mysql的高可用能力。
wKioL1d5GpygsPMIAABJeFsZe4w786.jpg

Slave Multi-thread
    slave多线程复制,在涉及多个数据库时,为每一个数据库启动一个线程;当只有一个数据库时,多线程复制无意义。
slave-parallel-works=0禁用多线程复制


wKiom1d5Gpzg4ysfAABkHknb_G8353.jpg

mysql 5.6提供了众多的复制管理工具,依赖python2.7及以上版本,rhel 6上python2.7,rhel 5 上的python为2.4
https://launchpad.net/mysql-utilities遵循GPL协定,但不属于mysql官方

wKioL1d5GpzyYL8WAAA8sl555FA282.jpg


mysqlreplicate
    通过追踪GTID,跳过已经复制过的事务,快速启动复制功能。

mysqlcheck
    检查复制环境是否满足需求的工具

    简单验证部署,快速解决故障;
    检查binlog是否开启,显示配置错误信息;
    检查slave的连接状态和复制权限

mysqlrplshow
    检查并显示mysql replication的拓扑图

mysqlfailover
    故障转移工具,快速将slave提升为master

mysqlrpladmin
    rpl管理工具


1 准备工作
1.1 时间同步
# ntpdate cn.pool.ntp.org


1.2 主机名解析
# vim /etc/hosts

192.168.8.30 node1.test.com
192.168.8.31 node2.test.com


1.3 创建mysql数据目录
# mkdir /data/mysql -p
# useradd -r mysql
# chown -R mysql.mysql /data/mysql



2 初始化mysql
# tar -xf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
# cd /usr/local/
# ln -sv mysql-5.6.31-linux-glibc2.5-x86_64/ mysql
# cd mysql
# chown -R root.mysql ./*

# scripts/mysql_install_db --user=mysql --datadir=/data/mysql/



3 复制mysql服务脚本到init.d,并加入服务列表
# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld


# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

# source /etc/profile.d/mysql.sh

4 初步配置,测试是否可以正常启动,此处的使用/usr/local/mysql/my.cnf
# vim my.cnf

datadir=/data/mysql
innodb-file-per-table=1
server-id=1 #此处slave用11
log-bin=master-bin
socket=/tmp/mysql.sock


正常启动

说明:
    ib_logfile0是innodb的事务日志,默认大小为48M


以上配置主从相同。

5 master
5.1 增加配置
# vim my.cnf

binlog-format=ROW
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-port=3306
port=3306
report-host=192.168.8.30


启动正常

5.2 查看gtid是否正常
mysql> show global variables like '%gtid%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| enforce_gtid_consistency        | ON    |
| gtid_mode                       | ON    |

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


5.2 查看master状态

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| master.000002 |      151 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

5.3 查看master的server_uuid

mysql> show global variables like '%uuid%';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 5bf1de82-40fd-11e6-baa4-000c2989f319 |
+---------------+--------------------------------------+


5.4 授权slave复制
mysql> grant replication slave on *.* to 'rpl'@'192.168.8.31' identified by 'rpl';
mysql> flush privileges;


6 slave
6.1 增加配置
# vim my.cnf
binlog-format=ROW
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-port=3306
port=3306
report-host=192.168.8.31


6.2 查看gtid是否正常

mysql> show global variables like '%gtid%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| enforce_gtid_consistency        | ON    |
| gtid_mode                       | ON    |
+---------------------------------+-------+


6.3 查看slave的server_uuid

mysql> show global variables like "%uuid%";
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 81d29785-40fd-11e6-baa5-000c29635658 |
+---------------+--------------------------------------+


mysql> change master to master_host='192.168.8.30',master_user='rpl',master_password='rpl',master_auto_position=1;


说明:当指定master_log_file,master_log_pos时,需使用master_auto_position=0
mysql> change master to master_host='192.168.8.30',master_user='rpl',master_password='rpl',master_log_file='master-bin.000006',master_log_pos=191,master_auto_position=0;


6.4 启动slave复制
mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.8.30
                  Master_User: rpl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000007
          Read_Master_Log_Pos: 191
               Relay_Log_File: node2-relay-bin.000004
                Relay_Log_Pos: 403
        Relay_Master_Log_File: master-bin.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes



7 master查看slave信息
mysql> show slave hosts;
+-----------+--------------+------+-----------+--------------------------------------+
| Server_id | Host         | Port | Master_id | Slave_UUID                           |
+-----------+--------------+------+-----------+--------------------------------------+
|        11 | 192.168.8.31 | 3306 |         1 | 81d29785-40fd-11e6-baa5-000c29635658 |
+-----------+--------------+------+-----------+--------------------------------------+









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-239042-1-1.html 上篇帖子: mysql主从复制--概念及架构 下篇帖子: mysql主从复制--mysql-5.5异步、半同步配置 多线程 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表