频道栏目
首页 > 资讯 > 其他数据库 > 正文

如何在CentOS系统上配置MySQL主从复制(Master-Slave)

16-01-11        来源:[db:作者]  
收藏   我要投稿
本文看看如何配置MySQL主从复制。数据库的安装请参考如何在CentOS6.5系统上安装免编译版的MySQL,我这里假设你已经分别在两台机器上安装好了MySQL数据库,都先不启动。

先在Master上操作

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#编辑my.cmf文件,在[mysqld]以下添加两行内容
vi /etc/my.cnf
 
[mysqld]
innodb_flush_log_at_trx_commit=2 
sync_binlog=1
 
#然后修改以下内容,一般是在mysql-bin后面加上IP最后三位数,个人习惯
log-bin=mysql-bin  改成  log-bin=mysql-bin-60
 
#server-id不变
server-id=1
</pre>
<p><strong>关于innodb_flush_log_at_trx_commit</strong><br />
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。 </p>
<p><strong>关于sync_binlog</strong><br />
sync_binlog:这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:<br />
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。<br />
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。</p>
<p>在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是 最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。</p>

关于innodb_flush_log_at_trx_commit
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。

关于sync_binlog
sync_binlog:这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是 最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。


1
2
3
4
5
6
7
8
9
10
11
#启动主数据库服务
service mysqld start
 
#登录数据库
mysql -uroot -p密码
 
#授权给从数据库服务器192.168.1.61,用户名repl,密码123456,请根据自己实际情况修改,这里只做演示
mysql > GRANT REPLICATION SLAVE ON *.* to 'repl'@'192.168.1.61' identified by '123456';
 
mysql > show master status;
记录下 File 及 Position 的值,在后面进行从服务器配置的时候需要用到

现在切换到从(Slave)上操作

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
vi /etc/my.cnf
 
#在[mysqld]以下添加两行内容
[mysqld]
innodb_flush_log_at_trx_commit=2 
sync_binlog=1
 
#然后修改以下内容,一般是在mysql-bin后面加上IP最后三位数,个人习惯
log-bin=mysql-bin  改成  log-bin=mysql-bin-61
 
#ID值必须唯一
server-id=1 修改为 server-id=2
 
#启动从数据库服务
service mysqld start
 
#登录数据库
mysql -uroot -p密码
 
#执行以下语句
mysql> change master to
master_host='192.168.1.60',
master_user='repl',
master_password='123456',
master_log_file='File的内容',
master_log_pos=Position的内容;
 
#如果没有报错,就启动Slave同步进程
mysql> start slave;
 
#主从同步检查
mysql> show slave status\G
 
==============================================
Slave_IO_State:
Master_Host: 192.168.1.60
Master_User: repl
Master_Port: 3306
......
Slave_IO_Running: YES
Slave_SQL_Running: YES
以下内容省略......
==============================================
 
一定要确保其中Slave_IO_Running 与 Slave_SQL_Running 的值为YES,主从配置才是成功的。
  PS:这是在数据库刚装好的时候就配置的主从配置,没有任何数据,那么如果是已经有一台数据库服务器,要加一台从数据库服务器要怎么配置?这个就让我研究研究,待续...
相关TAG标签
上一篇:3. 数据类型 Python v3.4.3 语言参考
下一篇:2. 词法分析 Python v3.4.3 语言参考
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站