MySQL主从分离,主从同步 读写分离离一定就是百利而无一弊吗

骑龙戏水 的BLOG
用户名:骑龙戏水
文章数:40
评论数:40
访问量:43231
注册日期:
阅读量:5863
阅读量:12276
阅读量:376503
阅读量:1069575
51CTO推荐博文
根据项目要求,我们编写一个基于CentOS平台的MYSQL主从部署手册。
为了缩减本文档体积和方便大家部署使用,将不提供操作截图,只提供需要输入的命令,方便大家复制粘贴命令行。
Mysql安装准备:
测试机IP准备::
• 主服务器Master: 192.168.1.136
• 从服务器Slave : 192.168.1.137
测试机yum准备:
Yum地址:(根据网络状况选择适合源地址)
#cd /etc/yum.repos.d
#mv CentOS-Base.repo& CentOS-Base.repo.save
#wget http://centos./CentOS-Base.repo
#vi /etc/yum.repos.d/CentOS-Base.repo
把[centosplus] 中的 enabled=0 改为enabled=1
安装包准备:
• Mysql:http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
Mysql主从安装:
安装mysql,推荐主从两台服务器安装相同版本Mysql
#useradd mysql -s /sbin/nologin
#cd /usr/src
#wget http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
#tar zxvf mysql-5.1.55.tar.gz
#cd mysql-5.1.55
#./configure --prefix=/usr/local/mysql& --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client
注:配置过程制定数据库文件的位置及额外字符集,可以根据情况选择
#make install
#cp support-files/g /f
#cd /usr/local/mysql
#chgrp &R mysql .
生成基本的库、表
#/usr/local/mysql/bin/mysql_install_db --user=mysql
确认生成的库、表,并授权
# cd /opt/data
# ll&&&&&& //务必生成相应的库、表
#chown &R mysql:mysql /opt/data
设置root密码:
#/usr/local/mysql/bin/mysqladmin &uroot password &q1w2e3r4&
以上操作过程主、从服务器均相同。
Mysql主从配置:
修改配置文件:
主服务器Master:
[mysqld]&&
log-bin=mysql-bin&&
server-id=1&&&& //默认是1,保持不变
& 从服务器Slave
&&& #vi /f
[mysqld]&&
log-bin=mysql-bin&&
server-id=2&&& //默认是1,修改为大于等于2的数字,但不要太离谱的9999&.
启动mysql服务:
#/usr/local/mysql/bin/mysqld_safe &user=mysql& //这个动作主从服务器相同
在主服务器建立帐户并授权Slave:
#GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.137' identified by 'q1w2e3r4';//帐户建议使用非root帐号密码,本命令行仅示例
查询主数据库Master的状态,并记录状态值:
+------------------+----------+--------------+------------------+
| File&&&&&&&&&&&& | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |&&&& 640 &|&&&&&&&&&&&&& |&&&&&&&&&&&&&&&&& |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
配置从服务器Slave:
Mysql&change master to master_host=&192.168.1.136&,master_user=&root&,master_password=&q1w2e3r4&,master_log_file=& mysql-bin.000003&,master_log_pos=640;
注:此命令行帐户信息,与主服务器授权帐号信息一致
启动从服务器复制功能:
检查从服务器复制功能状态:
mysql& show slave status\G
*************************** 1. row ***************************
&&&&&&&&&&&&&& Slave_IO_State: Waiting for master to send event
&&&&&&&&&&&&&&&&& Master_Host: 192.168.1.136& //主服务器地址
&&&&&&&&&&&&&&&&& Master_User: root&&&&&&&& //授权帐户名,尽量避免使用root
&&&&&&&&&&&&&&&&& Master_Port: 3306&&&&&&& //数据库端口,部分版本没有此行
&&&&&&&&&&&&&&& Connect_Retry: 60
&&&&&&&&&&&&& Master_Log_File: mysql-bin.000003
&&&&&&&&& Read_Master_Log_Pos: 1203
&&&&&&&&&&&&&& Relay_Log_File: localhost-relay-bin.000002
&&&&&&&&&&&&&&& Relay_Log_Pos: 251
&&&&&&& Relay_Master_Log_File: mysql-bin.000003
&&&&&&&&&&&& Slave_IO_Running: Yes&&&&&& //此状态必须YES
&&&&&&&&&&& Slave_SQL_Running: Yes&&&&&& //此状态必须YES
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
主从服务器测试:
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql& create database hichina_db;
mysql& use hichina_
mysql& create table hichina_tb(id int(3),name char(10));
mysql& insert into hichina_tb values (001,'bobwu');
从服务器Mysql查询:
+--------------------+
| Database&&&&&&&&&& |
+--------------------+
| information_schema |
| hichina_db&&&&&&&& | &//我在这里
| mysql&&&&&&&&&&&&& |
| test&&&&&&&&&&&&&& |
+--------------------+
4 rows in set (0.00 sec)
mysql& use hichina_
Database changed
+----------------------+
| Tables_in_hichina_db |
+----------------------+
| hichina_tb&&&&&& &&&&|& //我在这里
+----------------------+
1 row in set (0.00 sec)
mysql& select * from hichina_
+------+--------+
| id&& | name&& |
+------+--------+
|&&& 1 | bobwu &|&& //我在这里
+------+--------+
1 row in set (0.00 sec)本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
14:40:22 13:12:28 14:36:54 10:26:33 22:51:17 &&1&
&&页数 ( 1/2 ) &温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
一、基本概念及作用: MySQL主从复制是指MySQL从服务器(slave)从主MySQL主服务器(master)同步数据,确切的说是slave从master的 二进制日志(bin_log)中读取事件,保存在slave的中继日志(relay_log)中,然后slave再从中继日志中读取出来并在本 地执行一遍。 读写分离是指将对MySQL的写入操作(如update,insert)和读取操作(如show,select)分开,分别由不同的服务器负 责,一般来说,master负责写,slave负责读。 当业务量非常大时,一台服务器的性能无法满足需求,就可以通过配置主从复制实现写分离来分摊负载,避免因负载太高而造成无法及时响应请求。二、配置要点: 1)主服务器master:
启用二进制日志;
配置与从服务器不同的server_id;
授权 replication slave 给从服务器用来连接主服务器的用户。 2)从服务器slave:
启用中继日志;
配置与主服务器不同的server_id;
登陆MySQL执行 change master to 和start slave 命令。三、注意问题: 1)如果主服务器上本身已经有数据了,最好是拿 & & &备份先还原到从服务器上,然后再从该还原点进行复制; 2)从服务器可以在配置文件里面添加&read_only=ON ,使从服务器只能进行 & & &&读取操作,此参数对超级用户无效,并且不会影响从服务器的复制; 3)从服务器可以作别的服务器的主服务器,此时需要启用二进制日志, & & &&如果只是单纯的从服务器,可以不启用二进制日志; 4)从服务器中 change master to 命令中的&master_port 和 master_log_pos 的
值是数值类型,不能加引号,否则会报语法错误; 5)配置好以后,要在从服务器登陆 MySQL 执行 start slave& & & &启动 IO_thread 和 SQL_thread ; 6)为保证主从服务器数据的一致性,请不要在从服务器上 & & &&进行写操作,除非你知道自己在干什么。四、配置操作: 主服务器:
1)编辑 MySQL 配置文件 /f 添加如下内容:
log_bin = /data/bin_log
定义二进制日志文件路径及名称,
必须是运行MySQL的用户具有读写权限的目录;
server_id = 1
设置 id 号,不能和其它服务器相同;
2) 连上MySQL, 为用户授权 replication slave 权限:
mysql& grant replication slave on dbname.tbname to&
'user'@'host' identified by 'password'; 从服务器:
1)编辑 MySQL 配置文件 /f 添加如下内容:
relay_log = /data/relay_log
定义中继日志文件路径及名称,
必须是运行MySQL的用户具有读写权限的目录;
server_id = 11
设置 id 号,不能和其它服务器相同;
2)连上 MySQL,执行 change master to 配置主服务器信息:
mysql& change master to&
master_host='192.168.1.2',
主服务器地址或名称,建议IP地址;
master_port=3306,
主服务器 MySQL 端口;
master_user='user',
具有replication slave 权限的用户;
master_password='password',
具有replication slave 权限的用户密码;
master_log_file='bin_log',
从主服务器的哪个二进制日志文件开始复制;
master_log_pos=
从主服务器二进制日志文件中的哪个位置开始复制;
3)连上 MySQL,启动 slave 线程:
slave 线程有两个,一个是 IO_thread , 另一个是 SQL_thread ,
start slave 和 stop 是同时启动或停止这两个线程,
也可以用 start|stop slave IO_thread 和&
start|stop slave SQL_thread 分别操作;五、复制状态查看: 连上从服务器的 MySQL ,执行 show slave status 可查看 &&从服务器的复制状态,包括线程是否启动,有没有错误等等;
mysql& show slave status\G
阅读(141)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'MySQL主从复制实现读写分离原理及配置方法',
blogAbstract:'系 &统 &版 &本:CentOS 6.5&MySQL 版本:5.6.22 通用二进制版一、基本概念及作用:\tMySQL主从复制是指MySQL从服务器(slave)从主MySQL主服务器(master)同步数据,确切的说是slave从master的\t二进制日志(bin_log)中读取事件,保存在slave的中继日志(relay_log)中,然后slave再从中继日志中读取出来并在本\t地执行一遍。\t读写分离是指将对MySQL的写入操作(如update,insert)和读取操作(如show,select)分开,分别由不同的服务器负',
blogTag:'mysql,主从复制,读写分离',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 主从同步 读写分离 的文章

 

随机推荐