mysql的主从分布。。(早就想了。一直耽搁)

本文详细介绍了MySQL主从复制方案的核心作用,包括读写分离、利用不同表引擎的优点以及实现数据实时同步。通过具体步骤展示了如何配置MySQL主从服务器,包括设置配置文件、创建用户、复制数据等关键步骤。

继续更新。。mysql的主从。  先介绍介绍阿。

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

上午上完课,重新装了linuxmint  lxde的。。装了lamp。开始和。5开始主从。。其实挺简单的。只要写一些配置就ok了。

准备工作。先分别安装两台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';

这样,主机配置完毕。

配置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;
#很多很多列

接下来,将主机数据 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;

完成。

注意事项

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

 

 

 

更新(2011年7月9日0点):

主机数据copy这一过程,可以使用另外一种方案,不需要加锁。

slave:mysql> stop slave;   #停掉slave的复制先。

master:mysql> #不用加锁,在mysqldump中加上--master-data=2 即可

chluo@master:~$ mysqldump --master-data=2 --single-transaction -uroot -p AdidasFootball > AdidasFootball.sql  #在命令行中导出DB的数据,这里是bash操作:)

master-data是专用与做从机导出操作的。
=1 将会记录master的当前binlog状态,并把change master to 这样的一个从机语句写入到dump文件中。
=2 将不会写入这一语句,但会将其以注释的形式写在dumnp文件的头部,就像这个样子:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1087;

默认的,加上master-data参数后,mysql会进行all-tables-lock,即锁定所有的表。
而加上--single-transaction则可避免这一table锁。
当然,我也建议一般在mysqldump时,都加上simple-transaction选项。这样dump对服务器运营的影响最小,也更安全,不容易崩。

master:mysql> #也不需要解锁了

接下来和上面的步骤一样,将dump文件导入到slave,并修改slave状态,启动slave。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值