ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

阿里云MySQL数据库主从同步操作说明

2019-06-04 10:02:06  阅读:315  来源: 互联网

标签:线程 同步 同步操作 MASTER MySQL 服务器 主从


摘要

MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。Web2.0 时代,风靡全网的社区论坛软件系统 Discuz 和博客平台 Wordpress 均基于 MySQL 实现底层架构。Web3.0 时代,阿里巴巴、Facebook、Google 等大型互联网公司都采用更为灵活的 MySQL 构建了成熟的大规模数据库集群。阿里云数据库 MySQL 版基于 Alibaba 的 MySQL 源码分支,经过双 11 高并发、大数据量的考验,拥有优良的性能和吞吐量。除此之外,阿里云数据库 MySQL 版还拥有经过优化的读写分离、数据压缩、智能调优等高级功能。

 

读写分离(Read/Write Splitting)让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),从数据库处理SELECT查询操作,在大规模高并发的系统中,读写分离是提高性能很重要的手段。读写分离实现的基础就是MySQL的主从同步,因此对于主从同步的管理也就显得非常重要。

 

RDS for MySQL数据同步模式:

 

RDS for MySQL 5.1主备之间的数据同步采用的是异步的模式,异步模式下性能高,但是缺点是有一定的概率会出现主备之间数据不一致。

RDS for MySQL 5.5主备之间数据同步采用的是半同步的模式,该模式下写性能会有下降,但是优点是主备数据不一致的概率极大的降低了。如果您对数据可靠性要求非常高(比如金融系统),则建议您购买5.5以上(含)版本的RDS for MySQL。

RDS for MySQL 5.6主备之间数据同步采用的是MySQL 5.6的新特性GTID,该特性即能保证性能,又能保证主备数据一致。

 

MYSQL主从同步的作用:

1.数据分布
2.负载平衡(load balancing)
3.备份(Copy)
4.高可用性(high availability)和容错

 

主从同步的详细过程如下:

1. 主服务器验证连接。
2. 主服务器为从服务器开启一个线程。
3. 从服务器将主服务器日志的偏移位告诉主服务器。
4. 主服务器检查该值是否小于当前二进制日志偏移位。
5. 如果小于,则通知从服务器来取数据。
6. 从服务器持续从主服务器取数据,直至取完,这时,从服务器线程进入睡眠,主服务器线程同时进入睡眠。
7. 当主服务器有更新时,主服务器线程被激活,并将二进制日志推送给从服务器,并通知从服务器线程进入工作状态。
8. 从服务器SQL线程执行二进制日志,随后进入睡眠状态。

 

MySQL主从同步的搭建过程:

 

(1)主从同步环境介绍

操作系统环境:Centos 64 bit
MYSQL版本:MYSQL 5.1
主服务器的IP:192.168.106.1
从服务器的IP:192.168.106.2

 

(2)在主服务器上建立同步帐号

在设置权限的时候不要将密码设置过于简单:

 

1

2

GRANT REPLICATION SLAVE,FILE ON *.* TO 'replication'@'192.168.106.%' IDENTIFIED BY 'mysqlpassword';

FLUSH PRIVILEGES;

  

(3)从服务器配置文件的更改

 

server-id = 2

replicate-wild-ignore-table=mysql.%

log-slave-updates #这个有需要可以开启

 

(4)从主服务器得到一个快照版本

 

如果你的是MYISAM或者既有MYISAM又有INNODB的话就在主服务器上使用如下命令导出服务器的一个快照:

mysqldump -uroot -p --lock-tables --events --triggers --routines --flush-logs --master-data=2 --databases test > db.sql

 

只有INNODB的话就是用如下命令:

mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --databases test > db.sql

 

这里需要注意几个参数的使用:

--single-transaction 这个参数只对innodb适用。
--databases 后面跟除mysql以后的其他所有数据库的库名,我这里只有一个test库。
--master-data 参数会记录导出快照时候的mysql二进制日志位置,一会会用到。

 

(5)将快照版本还原到从服务器上

mysqldump -uroot -p -h 192.168.106.2 test < db.sql

将快照版本还原到从服务器上以后,此时从服务器上的数据和主服务器的数据是一致的。

 

(6)在从服务器上使用change master从主服务器上同步

使用grep命令查找到二进制日志的名称以及位置

# grep -i "change master" db.sql

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;

 

生成CHANGE MASTER语句,然后在从上执行

 

STOP SLAVE; 
CHANGE  MASTER  TO

MASTER_HOST='192.168.106.1',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;
START SLAVE; 

(7)这样就完成了主从同步的搭建,最后使用

SHOW SLAVE STATUS;

查看Slave_IO_Running和Slave_SQL_Running的状态,如果都为Yes,那么就成功了。 

注意:不要将同步的信息写入配置文件中,这样不方便管理,尤其是有变动需要重启。

标签:线程,同步,同步操作,MASTER,MySQL,服务器,主从
来源: https://www.cnblogs.com/HKROnline-SyncNavigator/p/10971843.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有