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

[经验分享] Mysql主从复制(同步原理及搭建过程)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-11 08:28:14 | 显示全部楼层 |阅读模式
   一个网站,最重要的就是它上边的数据,但是当有一天数据库挂掉了,将影响整个网站的正常运行,mysql的主从复制能够很好的解决这个问题,mysql主从复制就是,将一个主数据库服务器(Master)的数据同步到另一个备用数据库服务器(Slave)上,当正在使用的数据库服务器因故障当机时,我们可以把网站数据指向另一个拥有同样数据的数据库服务器上,快速的恢复网站数据。
QQ截图20150611082824.png
一.Mysql主从复制原理:

  • 在master上开启log-bin日志功能,记录数据库的操作信息,包括更新,插入,删除等。
  • 主从复制用三个线程实现,即Master上的IO线程,Slave上的IO线程和SQL线程。
  • Slave上的IO线程连接Master,Master通过自己的IO线程检测到有Slave发来的请求,请求log-bin日志。
  • Master将log-bin日志返回给Slave,Slave将日志下载到本地的realy_log里面写入一个master-info日志记录同步的pos点。
  • Slave的SQL线程检测到realy-log日志有更新,然后在本地执行新增的操作信息。
    注:主从同步为异步同步方式,Master上数据更新后Slave上才会更新同步数据。


二.Mysql主从配置:

  • Master配置:

    vi /etc/my.cnf修改字段


[mysqld]
datadir=/var/lib/mysql    #数据目录
socket=/var/lib/mysql/mysql.sock
user=mysql    #用户名
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin=mysql-bin    #开启log-bin功能
server-id = 1    #设置server-id,Master上server-id设置的数字优先级要高于Slave
auto_increment_offset=1
auto_increment_increment=2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
replicate-do-db=all    #需要同步的数据库,多个用逗号隔开,这里all为所有数据库

2.Slave配置:

    vi /etc/my.cnf修改字段
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
server-id = 2
auto_increment_offset=2
auto_increment_increment=2
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
replicate-do-db=all

3.在Master的mysql中为Slave的同步授权:
    mysql> grant replication slave on *.* to 'tongbu'@'192.168.1.103' identified by "liupengfang";
4.在Master上查询master状态:   
    mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      272 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记录mysql-bin点和Position点。
5.在Slave上指定master:

    mysql> change master to master_host='192.168.1.102',master_user='tongbu',master_password='liupengfang',master_log_file='mysql-bin.000003',master_log_pos=272;
6.Slave上启动slave:
    mysql> start slave;

7.查看主从同步状态:
    mysql> show slave status \G
如果如下两个字段状态都为YES,则主从同步建立完成。   
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
三.测试:
1.在Master上数据库创建一个数据库并查看master状态:
mysql> create database tomcat charset=utf8;
    mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      572 |              |                  |
+------------------+----------+--------------+------------------+
Position 的点发生变化
2.在Slave上查看是否有该数据库并查看master状态:
    mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| tomcat             |
+--------------------+
可见Slave上已经把Master上数据同步到本地。










运维网声明 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.iyunv.com/thread-76053-1-1.html 上篇帖子: 安装MySQL5.6 下篇帖子: MySQL Study之--Mysql启动失败“mysql.host”
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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