[转帖]centos 下配置Mysql主从_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1998 | 回复: 0   主题: [转帖]centos 下配置Mysql主从        下一篇 
无止境
注册用户
等级:新兵
经验:64
发帖:74
精华:0
注册:2011-11-14
状态:离线
发送短消息息给无止境 加好友    发送短消息息给无止境 发消息
发表于: IP:您无权察看 2014-11-21 11:17:51 | [全部帖] [楼主帖] 楼主

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

server-id                = 1
log_bin                        = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
binlog_do_db                = DB_AdidasFootball
binlog_do_db                = DB_CodeBuilder
binlog_ignore_db        = test


其中,作为主机,server-id必须为1.
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。
重启master数据库,运行检查:

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


在master上为slave建立用户

mysql> grant replication slave, reload, super on *.* to 'slave'@'10.*' identified by '123456'; 注意:10.*这里是ip 即从库的ip 192.168.1.2


这样,主机配置完毕。

配置slave

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


重启slave, 检查salve状态

slave:mysql> show slave status;
#很多很多列
slave:mysql>stop slave;   #停掉slave的复制先。
slave:mysql>change master to master_host='192.168.1.2' ,
master_user='slave' , master_password='123456' ,
master_log_file='mysql-bin.000014' ,  master_log_pos=279;#更新master 
slave:mysql>start slave; #启动slave的复制。
slave:mysql>show slave status; #查看slave状态,包含两个YES则成功了。


接下来,将主机数据 copy 过来这个流程比较复杂:)各个步骤注意所在的机器

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


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

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论