首页 > 代码库 > MySQL9-主从复制与读写分离

MySQL9-主从复制与读写分离

目录
一、基本概念
二、如何在一台电脑上部署两个MySQL服务?
三、如何搭建主从服务器?
四、如何实现读写分离?
五、参考网页
 
 
 
一、基本概念
1、主从复制:数据库服务器由一台主服务器(Master)和一台或多台从服务器(Slave)组成;对于主服务器的所作的更改,会自动同步到从服务器。
 
2、主从复制的原理:主服务器所作更改的语句,会写到二进制文件里;从服务器执行二进制文件,实现数据同步。关于二进制文件的文件路径和开始执行的位置,配置主从服务器时会指定;并随着同步的进行自动更新。
 
3、通过主从复制,至少有以下几个好处:
(1)数据备份
(2)通过主从复制,可以实现读写分离。所谓读写分离,就是对数据库的写操作,是在主服务器实现;而读操作,则是在从服务器实现;通过读写分离,可以减轻服务器压力,提高并发负载,而且相比于多个服务器都能读与写,数据不一致问题更加容易避免。
 
4、注意事项
(1)从服务器的定时器都要是关闭的
(2)触发器呢?
 
 
 
二、如何在一台电脑上部署两个MySQL服务?【OS:win7;数据库:MySQL5.6】
1、第一个MySQL服务正常安装;跑通后停掉服务。
 
2、将安装后的MySQL整个文件夹拷贝到新的位置,我这里是C:\Program Files\MySQLSlave\
 
3、创建新的配置文件
(1)先找到第一个MySQL的配置文件
show variables like ‘%dir%‘可以找到所有有关路径的设置;其中datadir是数据相关的路径,其中也包括配置文件。
我的配置文件的路径是:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
(2)将配置文件拷贝到新的路径,可以自己设定;比如我放在了C:\Program Files\MySQLSlave\MySQL Server 5.6\my.ini
(3)修改配置文件
port=3307 #port=3306改为3307,有两处需要修改
# basedir="C:/Program Files/MySQLSlave/MySQL Server 5.6/" #我这里貌似不需要改这个
datadir=C:\Program Files\MySQLSlave\MySQL Server 5.6\data
 
4、创建第二个MySQL服务
(1)在cmd中,cd进入C:\Program Files\MySQLSlave\MySQL Server 5.6\bin
(2)mysqld.exe install MySQLSlave  --defaults-file="C:\Program Files\MySQLSlave\MySQL Server 5.6\my.ini"
 
5、修改注册表:HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services中,将MySQLSlave的ImagePath修改成:
"C:\Program Files\MySQLSlave\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\Program Files\MySQLSlave\MySQL Server 5.6\my.ini" MySQLSlave
 
6、启动服务并访问:启动服务后,便可以向访问第二个MySQL服务了,比如使用navicat;用户名和密码与第一个MySQL服务相同即可。
注意,此时两个MySQL服务没有什么关系,还需要进一步设置主从关系。
 
 
 
三、如何搭建主从服务器?
1、建立两个MySQL服务,如上所述。
 
2、修改主从配置文件
(1)主服务器
[mysqld]
server-id = 1
binlog-do-db=test-master #要同步的数据库
#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的
log-bin=mysql-bin #要生成的二进制日记文件名称
(2)从服务器
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db = test-master
 
3、保持主从mysql的test数据库初始状态一致:一般是先将所有的表加读锁,然后copy磁盘上的数据库文件夹。我这里直接停止服务,然后将数据文件拷贝过去。
 
4、主服务器下运行show master status,记下file和position参数。
 
5、从服务器的配置
(1)设置master
change master to master_host=‘127.0.0.1‘,master_port=3306,master_user=‘root‘,master_password=‘1111‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=107;
其中master_log_file和master_log_pos从步骤4得来。
(2)启动:老版本是slave start,现在是start slave,一定注意
start slave
(3)查看状态:Slave_IO_Running与Slave_SQL_Running的值都必须为YES,才表明状态正常。
show slave status
 
6、此时,便已经设置成功了主从复制;修改主服务器,观察从服务器的变化
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(100) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`time1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `user` VALUES (‘1‘, ‘lixiaolong‘, ‘2016-01-25 17:25:24‘, ‘2‘);
 
 
 
四、如何实现读写分离?
可以通过MySQL Proxy方便的实现读写分离,具体实现方式略。
 
 
 
五、参考网页
http://www.cnblogs.com/yuechaotian/archive/2013/05/15/3079919.html【[z]如何在一台windows主机上安装多个mysql服务】
http://www.cnblogs.com/yuechaotian/archive/2013/05/15/3080056.html【[z]如何在一台windows主机上搭建mysql主从复制】
 
 

MySQL9-主从复制与读写分离