Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84847
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 507
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-02 17:11
个人简介

还年轻,还有梦

文章分类

全部博文(51)

文章存档

2015年(51)

我的朋友

分类: LINUX

2015-05-29 00:40:59

1. MySQL主从原理以及应用场景MySQL的Replication原理非常简单,总结一下:
每个从仅可以设置一个主。
主在执行sql之后,记录二进制log文件(bin-log)。
从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。
从这几条Replication原理来看,可以有这些推论:
主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
如果主从的网络断开,从会在网络正常后,批量同步。
如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。
一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。
如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
可以应用在读写分离的场景中,用以降低单台MySQL服务器的I/O 
可以实现MySQL服务的HA集群
可以是1主多从,也可以是相互主从(主主)

2. 配置主(master)
vim /etc/my.cnf   #修改或添加:
server-id=1
log-bin=mysql-bin  
两个可选参数(2选1):
binlog-do-db=db1,db2 #需要同步的库
binlog-ignore-db=db1,db2 #忽略不同步的库
修改配置文件后,重启mysql
/etc/init.d/mysqld restart
mysql -uroot  -p'123456'         #登陆mysql
grant replication slave on *.* to 'repl'@'从IP' identified by '123123';         #授权给从
flush tables with read lock;         ##所有库所有表被锁定只读,在备份时防止继续被写入数据
show master status; #一定要记住前两列的内容,一会会用到 


5. 设置从(slave)
vim /etc/my.cnf  #修改或增加
server-id = 2 #这个数值只要和主不一样就行
可选参数:replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2 #意义同主的那两个可选参数,只需要一边有就行
service mysqld restart 
拷贝主的db1库数据到从:
主:mysqldump -uroot  -p123456 db1 > db1.sql; 
从:mysql -uroot -p -e "create database db1"; 
从:mysql -uroot -p  db1 < db1.sql        #可以用scp,rsync把数据拷贝到从上
从:mysql -uroot -p  #登陆从的mysql
slave stop; 
change master to master_host='127.0.0.1', master_port=3306, master_user='repl', master_password='123123', master_log_file='mysql-bin.000011', master_log_pos=5270;     #如果端口是3306,master_port可以不用写
slave start;
主上: mysql -uroot -p123456 -e "unlock tables" 
从上查看从的状态: show slave status\G;
建议: MySQL主从机制比较脆弱,谨慎操作。如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.


6. 测试主从
主上清空db1库的db表 :use db1; select count(*) from db"; truncate table db;  
进入slave,查看db1库db表: use db1; select count(*) from db";  
主上删除表db: drop table db;
从上看db表不存在了

扩展学习: 

mysql主从心得整理  http://wangwei007.blog.51cto.com/68019/965575
mysql主从问题集 http://blog.chinaunix.net/uid-8786588-id-3771613.html
mysql主从延迟     
主从延迟原因PPT   
mysql 主主  http://luoweiro.blog.51cto.com/2186161/658550 
mysql-proxy 实现读写分离   http://my.oschina.net/barter/blog/93354
atlas相关     
mysql一主多从   http://blog.sina.com.cn/s/blog_4c197d4201017qjs.html
cobar实现分库分表   http://blog.csdn.net/huoyunshen88/article/details/37927553
mysql分库分表方案 http://my.oschina.net/ydsakyclguozi/blog/199498
mysql架构演变  
阅读(686) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~