日期:2014-05-16 浏览次数:20868 次
一,mysql replication是什么,干什么用的
MySQL replication提供了数据库复制的功能,可以实现多个数据库实时同步,具体如果下图:
?
我们为什么要用mysql replication呢,当你的网站一天的独立IP流量能达到100W时,全部流量能达到1000W时,单个服务器,根本无法满足现有需 要,100W,1000W就是举个例子。尽管你做了许多的技术上面的措施,比如内存缓存(如memcache),文件缓存啊,对于大数据量表进行分表啊等 等,还是网站还是挺慢的(这可能有多方面原因),在这儿只是以MYSQL为例。
二,mysql replication 的安装和配置
mysql 3.23.15以后,装mysql的时候,就自带有mysql replication。我四年前做开发的,那个时候,我接触的mysql4,如果现在还有用mysql3的,那我就表示无语了。
1)安装mysql
下个mysql,安装一下,导入表和内容。我就不在这儿详细说了。
2)在192.168.1.91上修改my.ini
a, 在 192.168.1.91 上修改 mysql的配置文件my.ini,master是windows系统
server-id=1 binlog-do-db=test1 auto_increment_offset= 2 log-bin=d:/wamp/mysql/master-bin.log log-bin-index = d:/wamp/mysql/master-log-bin.index log-error = d:/wamp/mysql/master-error.log relay-log = d:/wamp/mysql/slave-relay.log relay-log-info-file = d:/wamp/mysql/slave-relay-log.info relay-log-index = d:/wamp/mysql/slave-relay-log.index set-variable=max_connections=500
b, 其次仍然在该区域修改 , 配置为以该机为 slave
master-host=192.168.1.5 master-user=xtajmd master-password=xtajmd master-port=3306 master-connect-retry=60 replicate-do-db=test1 log-slave-updates?
解释:
server-id=1表示是本机的序号为1,一般来讲就是master的意思.
binlog-do-db=test1表示需要备份的数据库是test这个数据库,
replicate-do-db=test1 表示同步test数据库;
如果需要备份多个数据库,那么应该写多行,如下所示:
binlog-do-db=test1
binlog-do-db=test2
binlog-do-db=test3
log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;
auto_increment_increment定义下一次AUTO_INCREMENT的步长
auto_increment_offset= 1定义AUTO_INCREMENT的起点值
这两个参数用于避免多master情况下,多个master同时存取字段类型为AUTO_INCREMENT的冲突。其它几个字段为日志文件配置信息
set-variable=max_connections=500 设定数据库最大连接数为500
master-host=192.168.1.91 表示本机做slave时的master为192.168.1.91;
master-user=xtajmd 这里表示master(192.168.1.91)上开放的一个有权限的用户,使其可以从slave连接到master并进行复制; 建议两台主机的授权用户和密码完全相同。
master-password=xtajmd 表示授权用户的密码;
master-port=3306 表示master(192.168.1.91)上MySQL服务Listen3306端口;
master-connect-retry=60 同步间隔时间;
log-slave-updates:从master读到的更新操作都记录到slave二进制日志中
3)在192.168.1.5上修改my.cnf
vi my.cnf
找到
# The MySQL server
[mysqld]
在mysqld里面加上以下部分
server-id=2 #表示本机序号,不要和主机相同 binlog-do-db=test1 log-bin=/usr/local/mysql/master-bin.log log-bin-index = /usr/local/mysql/master-log-bin.index log-error = /usr/local/mysql/master-error.log relay-log = /usr/local/mysql/slave-relay.log relay-log-info-file = /usr/local/mysql/slave-relay-log.info relay-log-index = /usr/local/mysql/slave-relay-log.index set-variable=max_connections=500 master-host=192.168.1.91 master-user=xtajmd master-password=xtajmd master-port=3306 master-connect-retry=60 replicate-do-db=test1 log-slave-updates?
<