支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程专题> 数据库> [转]Mysql主从方案介绍
 
 
 
 
类别:数据库 阅读:4102 评论:0 时间:十二月 6, 2011, 7:57 a.m. 关键字:

 

 来源: http://www.luochunhui.com/id/550

mysql主从方案主要作用:
读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
热备,slave和master的数据“准实时”同步。

准备工作。先分别安装两台MYSQL

 

配置MASTER。找到my.cnf文件,修改:

 

1 server-id       = 1
2 log_bin         = /var/log/mysql/mysql-bin.log
3 expire_logs_days    = 10
4 max_binlog_size         = 100M
5 binlog_do_db        = DB_AdidasFootball
6 binlog_do_db        = DB_CodeBuilder
7 binlog_ignore_db    = test


其中,作为主机,server-id必须为1.
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。

重启master数据库,运行检查:

 

01 mysql> show master status; #检查是否以master形式启动了。
02 +------------------+----------+----------------------------------+------------------+
03 | File             | Position | Binlog_Do_DB                     | Binlog_Ignore_DB |
04 +------------------+----------+----------------------------------+------------------+
05 | mysql-bin.000002 |     1087 | DB_AdidasFootball,DB_CodeBuilder |test             |
06 +------------------+----------+----------------------------------+------------------+
07 1 row in set (0.00 sec)
08  
09 mysql> show variables like "%log%";                       
10 #需要看到这样的一行,说明binlog已经开启了: log_bin | ON

 

在master上为slave建立用户

 

1 mysql> grant replication slave, reload, super on *.* to 'slave'@'10.*'identified by '123456';


这样,主机配置完毕。

配置slave

 

1 server-id       = 2  #随便什么数字,多台slave注意不能为重复就可以了。
2 #log_bin        = /var/log/mysql/mysql-bin.log #slave的binlog就没有必要再开启了。注释掉。
3 master-host             = 192.168.0.3    #master的IP
4 master-user             = slave        #上面操作中,建立的用户名
5 master-password         = 123456       #上面操作中,建立的密码


 

重启slave, 检查salve状态

 

1 slave:mysql> show slave status;
2 #很多很多列


 

接下来,将主机数据 copy 过来


这个流程比较复杂:)各个步骤注意所在的机器

01 slave:mysql> stop slave;   #停掉slave的复制先。
02  
03 master:mysql> flush tables with read lock; #锁掉master服务器的所有表,禁止写入。
04  
05 master:mysql> show master status; #还是上面的语句,查看并记录下 File mysql-bin.000002, Position 1087
06 +------------------+----------+----------------------------------+------------------+
07 | File             | Position | Binlog_Do_DB                     | Binlog_Ignore_DB |
08 +------------------+----------+----------------------------------+------------------+
09 | mysql-bin.000002 |     1087 | DB_AdidasFootball,DB_CodeBuilder |test             |
10 +------------------+----------+----------------------------------+------------------+
11 1 row in set (0.00 sec)
12  
13 chluo@master:~$ mysqldump AdidasFootball > AdidasFootball.sql  #在命令行中导出DB的数据,这里是bash操作:)
14  
15 master:mysql> unlock tables; #导出完成之后,解锁。 master可以继续跑起来了。
16  
17 chluo@slave:~$ mysql AdidasFootball < AdidasFootball.sql  #在slave的命令行中导入DB的数据,这里又是bash操作:)
18  
19 slave:mysql> change master to
20     -> master_log_file='mysql-bin.000002',  #将这里修改为刚记录下来的数据
21     -> master_log_pos=1087;   #还有这里
22  
23 slave:mysql> start slave;



完成。
 

注意事项


从机必须有其需要的数据库,才能够进行同步,否则会忽略。

[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment